All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mihail Abakumov <mikhail.abakumov@ispras.ru>
To: qemu-devel@nongnu.org
Cc: sw@weilnetz.de, lprosek@redhat.com, dovgaluk@ispras.ru,
	rkagan@virtuozzo.com, pbonzini@redhat.com, den@openvz.org
Subject: [Qemu-devel] [PATCH v4 37/46] windbg: implemented kd_api_read_physical_memory and kd_api_write_physical_memory
Date: Mon, 11 Dec 2017 16:24:50 +0300	[thread overview]
Message-ID: <151299869028.4808.12985241516617955667.stgit@Misha-PC.lan02.inno> (raw)
In-Reply-To: <151299847127.4808.14646046517426494416.stgit@Misha-PC.lan02.inno>

Signed-off-by: Mihail Abakumov <mikhail.abakumov@ispras.ru>
Signed-off-by: Pavel Dovgalyuk <dovgaluk@ispras.ru>
Signed-off-by: Dmitriy Koltunov <koltunov@ispras.ru>
---
 include/exec/windbgstub-utils.h |    2 ++
 windbgstub-utils.c              |   29 +++++++++++++++++++++++++++++
 windbgstub.c                    |    8 ++++++++
 3 files changed, 39 insertions(+)

diff --git a/include/exec/windbgstub-utils.h b/include/exec/windbgstub-utils.h
index 131eb6418a..a40253f18a 100755
--- a/include/exec/windbgstub-utils.h
+++ b/include/exec/windbgstub-utils.h
@@ -85,6 +85,8 @@ void kd_api_read_control_space(CPUState *cpu, PacketData *pd);
 void kd_api_write_control_space(CPUState *cpu, PacketData *pd);
 void kd_api_read_io_space(CPUState *cpu, PacketData *pd);
 void kd_api_write_io_space(CPUState *cpu, PacketData *pd);
+void kd_api_read_physical_memory(CPUState *cpu, PacketData *pd);
+void kd_api_write_physical_memory(CPUState *cpu, PacketData *pd);
 void kd_api_unsupported(CPUState *cpu, PacketData *pd);
 
 SizedBuf kd_gen_exception_sc(CPUState *cpu);
diff --git a/windbgstub-utils.c b/windbgstub-utils.c
index 3f8ce1f8be..6708e62798 100755
--- a/windbgstub-utils.c
+++ b/windbgstub-utils.c
@@ -210,6 +210,35 @@ void kd_api_write_io_space(CPUState *cpu, PacketData *pd)
     pd->m64.ReturnStatus = STATUS_SUCCESS;
 }
 
+void kd_api_read_physical_memory(CPUState *cpu, PacketData *pd)
+{
+    DBGKD_READ_MEMORY64 *mem = &pd->m64.u.ReadMemory;
+    uint32_t len;
+    target_ulong addr;
+
+    len = MIN(ldl_p(&mem->TransferCount),
+              PACKET_MAX_SIZE - sizeof(DBGKD_MANIPULATE_STATE64));
+    addr = ldtul_p(&mem->TargetBaseAddress);
+
+    cpu_physical_memory_rw(addr, pd->extra, len, 0);
+    pd->extra_size = len;
+    stl_p(&mem->ActualBytesRead, len);
+}
+
+void kd_api_write_physical_memory(CPUState *cpu, PacketData *pd)
+{
+    DBGKD_WRITE_MEMORY64 *mem = &pd->m64.u.WriteMemory;
+    uint32_t len;
+    target_ulong addr;
+
+    len = MIN(ldl_p(&mem->TransferCount), pd->extra_size);
+    addr = ldtul_p(&mem->TargetBaseAddress);
+
+    cpu_physical_memory_rw(addr, pd->extra, len, 1);
+    pd->extra_size = 0;
+    stl_p(&mem->ActualBytesWritten, len);
+}
+
 void kd_api_unsupported(CPUState *cpu, PacketData *pd)
 {
     WINDBG_ERROR("Caught unimplemented api %s",
diff --git a/windbgstub.c b/windbgstub.c
index a88bfde072..9cf25bc6dd 100755
--- a/windbgstub.c
+++ b/windbgstub.c
@@ -189,6 +189,14 @@ static void windbg_process_manipulate_packet(ParsingContext *ctx)
         kd_api_write_control_space(cpu, &ctx->data);
         break;
 
+    case DbgKdReadPhysicalMemoryApi:
+        kd_api_read_physical_memory(cpu, &ctx->data);
+        break;
+
+    case DbgKdWritePhysicalMemoryApi:
+        kd_api_write_physical_memory(cpu, &ctx->data);
+        break;
+
     case DbgKdClearAllInternalBreakpointsApi:
         return;
 

  parent reply	other threads:[~2017-12-11 13:25 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-11 13:21 [Qemu-devel] [PATCH v4 00/46] Windbg supporting Mihail Abakumov
2017-12-11 13:21 ` [Qemu-devel] [PATCH v4 01/46] windbg: added empty windbgstub files Mihail Abakumov
2018-01-12  8:46   ` Paolo Bonzini
2017-12-11 13:21 ` [Qemu-devel] [PATCH v4 02/46] windbg: added windbg's KD header file Mihail Abakumov
2017-12-11 13:21 ` [Qemu-devel] [PATCH v4 03/46] windbg: modified windbgkd.h Mihail Abakumov
2018-01-12  8:44   ` Paolo Bonzini
2017-12-11 13:21 ` [Qemu-devel] [PATCH v4 04/46] windbg: added '-windbg' option Mihail Abakumov
2017-12-11 13:21 ` [Qemu-devel] [PATCH v4 05/46] windbg: added helper features Mihail Abakumov
2017-12-14 12:13   ` Ladi Prosek
2017-12-11 13:21 ` [Qemu-devel] [PATCH v4 06/46] windbg: added WindbgState Mihail Abakumov
2017-12-11 13:21 ` [Qemu-devel] [PATCH v4 07/46] windbg: added chardev Mihail Abakumov
2017-12-11 13:22 ` [Qemu-devel] [PATCH v4 08/46] windbg: hook to wrmsr operation Mihail Abakumov
2017-12-11 13:22 ` [Qemu-devel] [PATCH v4 09/46] windbg: handler of fs/gs register Mihail Abakumov
2017-12-11 13:22 ` [Qemu-devel] [PATCH v4 10/46] windbg: structures for parsing data stream Mihail Abakumov
2017-12-11 13:22 ` [Qemu-devel] [PATCH v4 11/46] windbg: " Mihail Abakumov
2017-12-11 13:22 ` [Qemu-devel] [PATCH v4 12/46] windbg: send data and control packets Mihail Abakumov
2017-12-11 13:22 ` [Qemu-devel] [PATCH v4 13/46] windbg: handler of parsing context Mihail Abakumov
2017-12-11 13:22 ` [Qemu-devel] [PATCH v4 14/46] windbg: init DBGKD_ANY_WAIT_STATE_CHANGE Mihail Abakumov
2017-12-11 13:22 ` [Qemu-devel] [PATCH v4 15/46] windbg: generate ExceptionStateChange Mihail Abakumov
2017-12-11 13:22 ` [Qemu-devel] [PATCH v4 16/46] windbg: generate LoadSymbolsStateChange Mihail Abakumov
2017-12-11 13:22 ` [Qemu-devel] [PATCH v4 17/46] windbg: windbg_vm_stop Mihail Abakumov
2017-12-11 13:23 ` [Qemu-devel] [PATCH v4 18/46] windbg: implemented windbg_process_control_packet Mihail Abakumov
2017-12-11 13:23 ` [Qemu-devel] [PATCH v4 19/46] windbg: implemented windbg_process_data_packet Mihail Abakumov
2017-12-11 13:23 ` [Qemu-devel] [PATCH v4 20/46] windbg: implemented windbg_process_manipulate_packet Mihail Abakumov
2017-12-11 13:23 ` [Qemu-devel] [PATCH v4 21/46] windbg: implemented kd_api_read_virtual_memory and kd_api_write_virtual_memory Mihail Abakumov
2017-12-11 13:23 ` [Qemu-devel] [PATCH v4 22/46] windbg: kernel's structures Mihail Abakumov
2017-12-11 13:23 ` [Qemu-devel] [PATCH v4 23/46] windbg: implemented kd_api_get_context and kd_api_set_context Mihail Abakumov
2017-12-11 13:23 ` [Qemu-devel] [PATCH v4 24/46] windbg: implemented kd_api_read_control_space and kd_api_write_control_space Mihail Abakumov
2017-12-11 13:23 ` [Qemu-devel] [PATCH v4 25/46] windbg: implemented windbg_read_context Mihail Abakumov
2017-12-11 13:23 ` [Qemu-devel] [PATCH v4 26/46] windbg: implemented windbg_write_context Mihail Abakumov
2017-12-11 13:23 ` [Qemu-devel] [PATCH v4 27/46] windbg: implemented windbg_read_ks_regs Mihail Abakumov
2017-12-11 13:23 ` [Qemu-devel] [PATCH v4 28/46] windbg: implemented windbg_write_ks_regs Mihail Abakumov
2017-12-11 13:24 ` [Qemu-devel] [PATCH v4 29/46] windbg: implemented windbg_set_sr Mihail Abakumov
2017-12-11 13:24 ` [Qemu-devel] [PATCH v4 30/46] windbg: implemented windbg_set_dr Mihail Abakumov
2017-12-11 13:24 ` [Qemu-devel] [PATCH v4 31/46] windbg: implemented windbg_set_dr7 Mihail Abakumov
2017-12-11 13:24 ` [Qemu-devel] [PATCH v4 32/46] windbg: implemented windbg_hw_breakpoint_insert and windbg_hw_breakpoint_remove Mihail Abakumov
2017-12-11 13:24 ` [Qemu-devel] [PATCH v4 33/46] windbg: implemented kd_api_write_breakpoint and kd_api_restore_breakpoint Mihail Abakumov
2017-12-11 13:24 ` [Qemu-devel] [PATCH v4 34/46] windbg: debug exception subscribing Mihail Abakumov
2017-12-11 13:24 ` [Qemu-devel] [PATCH v4 35/46] windbg: implemented kd_api_continue Mihail Abakumov
2017-12-11 13:24 ` [Qemu-devel] [PATCH v4 36/46] windbg: implemented kd_api_read_io_space and kd_api_write_io_space Mihail Abakumov
2017-12-11 13:24 ` Mihail Abakumov [this message]
2017-12-11 13:24 ` [Qemu-devel] [PATCH v4 38/46] windbg: implemented kd_api_get_version Mihail Abakumov
2017-12-11 13:25 ` [Qemu-devel] [PATCH v4 39/46] windbg: implemented kd_api_read_msr and kd_api_write_msr Mihail Abakumov
2017-12-11 13:25 ` [Qemu-devel] [PATCH v4 40/46] windbg: implemented kd_api_search_memory Mihail Abakumov
2017-12-11 13:25 ` [Qemu-devel] [PATCH v4 41/46] windbg: implemented kd_api_fill_memory Mihail Abakumov
2017-12-11 13:25 ` [Qemu-devel] [PATCH v4 42/46] windbg: implemented kd_api_query_memory Mihail Abakumov
2017-12-11 13:25 ` [Qemu-devel] [PATCH v4 43/46] windbg: added new api functions Mihail Abakumov
2018-01-12  8:53   ` Paolo Bonzini
2017-12-11 13:25 ` [Qemu-devel] [PATCH v4 44/46] windbg: implemented kd_api_get_context_ex and kd_api_set_context_ex Mihail Abakumov
2017-12-11 13:25 ` [Qemu-devel] [PATCH v4 45/46] windbg: changed kd_api_read_msr and kd_api_write_msr Mihail Abakumov
2018-01-12  8:48   ` Paolo Bonzini
2017-12-11 13:25 ` [Qemu-devel] [PATCH v4 46/46] windbg: maintainers Mihail Abakumov
2017-12-11 14:22 ` [Qemu-devel] [PATCH v4 00/46] Windbg supporting no-reply
2017-12-11 14:30 ` no-reply
2018-01-12  8:52   ` Paolo Bonzini
2017-12-14 12:32 ` Ladi Prosek
2017-12-22 13:21   ` Pavel Dovgalyuk
2017-12-22 14:00     ` Paolo Bonzini
2018-01-10  8:40       ` Pavel Dovgalyuk
2018-01-10 13:08         ` Paolo Bonzini
2018-01-10 13:19           ` Peter Maydell
2018-01-12  8:27 ` Paolo Bonzini
2018-01-15 10:58   ` Mihail Abakumov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=151299869028.4808.12985241516617955667.stgit@Misha-PC.lan02.inno \
    --to=mikhail.abakumov@ispras.ru \
    --cc=den@openvz.org \
    --cc=dovgaluk@ispras.ru \
    --cc=lprosek@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rkagan@virtuozzo.com \
    --cc=sw@weilnetz.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.