[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v3 03/18] exec: add debug version of physical me
From: |
Brijesh Singh |
Subject: |
[Qemu-devel] [RFC PATCH v3 03/18] exec: add debug version of physical memory read and write apis |
Date: |
Tue, 1 Nov 2016 11:52:19 -0400 |
User-agent: |
StGit/0.17.1-dirty |
The patch adds the following new APIs:
- cpu_physical_memory_read_debug
- cpu_physical_memory_write_debug
- cpu_physical_memory_rw_debug
- ldl_phys_debug
- ldq_phys_debug
The idea behind this patch is that if all the qemu monitor memory dumps
and gdbserver accesses are done through these common APIs then in future
we can define some kind of global debug policy to control debug behavior.
Signed-off-by: Brijesh Singh <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
---
exec.c | 32 ++++++++++++++++++++++++++++++++
include/exec/cpu-common.h | 15 +++++++++++++++
2 files changed, 47 insertions(+)
diff --git a/exec.c b/exec.c
index d3356cd..4022e13 100644
--- a/exec.c
+++ b/exec.c
@@ -3149,6 +3149,30 @@ uint32_t ldl_phys(AddressSpace *as, hwaddr addr)
return address_space_ldl(as, addr, MEMTXATTRS_UNSPECIFIED, NULL);
}
+uint32_t ldl_phys_debug(CPUState *cpu, hwaddr addr)
+{
+ MemTxAttrs attrs = MEMTXATTRS_DEBUG;
+ int asidx = cpu_asidx_from_attrs(cpu, attrs);
+ uint32_t val;
+
+ cpu_physical_memory_rw_debug_internal(cpu->cpu_ases[asidx].as,
+ addr, (void *) &val,
+ 4, attrs, READ_DATA);
+ return tswap32(val);
+}
+
+uint64_t ldq_phys_debug(CPUState *cpu, hwaddr addr)
+{
+ MemTxAttrs attrs = MEMTXATTRS_DEBUG;
+ int asidx = cpu_asidx_from_attrs(cpu, attrs);
+ uint64_t val;
+
+ cpu_physical_memory_rw_debug_internal(cpu->cpu_ases[asidx].as,
+ addr, (void *) &val,
+ 8, attrs, READ_DATA);
+ return val;
+}
+
uint32_t ldl_le_phys(AddressSpace *as, hwaddr addr)
{
return address_space_ldl_le(as, addr, MEMTXATTRS_UNSPECIFIED, NULL);
@@ -3659,6 +3683,14 @@ void stq_be_phys(AddressSpace *as, hwaddr addr, uint64_t
val)
address_space_stq_be(as, addr, val, MEMTXATTRS_UNSPECIFIED, NULL);
}
+void cpu_physical_memory_rw_debug(hwaddr addr, uint8_t *buf,
+ int len, int is_write)
+{
+ cpu_physical_memory_rw_debug_internal(&address_space_memory, addr,
+ buf, len, MEMTXATTRS_DEBUG,
+ is_write ? WRITE_DATA : READ_DATA);
+}
+
/* virtual memory access for debug (includes writing to ROM) */
int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
uint8_t *buf, int len, int is_write)
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
index cffdc13..9abff47 100644
--- a/include/exec/cpu-common.h
+++ b/include/exec/cpu-common.h
@@ -67,6 +67,8 @@ size_t qemu_ram_pagesize(RAMBlock *block);
void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
int len, int is_write);
+void cpu_physical_memory_rw_debug(hwaddr addr, uint8_t *buf,
+ int len, int is_write);
static inline void cpu_physical_memory_read(hwaddr addr,
void *buf, int len)
{
@@ -77,6 +79,19 @@ static inline void cpu_physical_memory_write(hwaddr addr,
{
cpu_physical_memory_rw(addr, (void *)buf, len, 1);
}
+static inline void cpu_physical_memory_read_debug(hwaddr addr,
+ void *buf, int len)
+{
+ cpu_physical_memory_rw_debug(addr, buf, len, 0);
+}
+static inline void cpu_physical_memory_write_debug(hwaddr addr,
+ const void *buf, int len)
+{
+ cpu_physical_memory_rw_debug(addr, (void *)buf, len, 1);
+}
+uint32_t ldl_phys_debug(CPUState *cpu, hwaddr addr);
+uint64_t ldq_phys_debug(CPUState *cpu, hwaddr addr);
+
void *cpu_physical_memory_map(hwaddr addr,
hwaddr *plen,
int is_write);
- [Qemu-devel] [RFC PATCH v3 00/18] x86: Secure Encrypted Virtualization (AMD), Brijesh Singh, 2016/11/01
- [Qemu-devel] [RFC PATCH v3 01/18] memattrs: add debug attrs, Brijesh Singh, 2016/11/01
- [Qemu-devel] [RFC PATCH v3 02/18] exec: add guest RAM read and write ops, Brijesh Singh, 2016/11/01
- [Qemu-devel] [RFC PATCH v3 03/18] exec: add debug version of physical memory read and write apis,
Brijesh Singh <=
- [Qemu-devel] [RFC PATCH v3 04/18] monitor: use debug version of memory access apis, Brijesh Singh, 2016/11/01
- [Qemu-devel] [RFC PATCH v3 05/18] core: add new security-policy object, Brijesh Singh, 2016/11/01
- [Qemu-devel] [RFC PATCH v3 06/18] kvm: add memory encryption APIs, Brijesh Singh, 2016/11/01
- [Qemu-devel] [RFC PATCH v3 07/18] sev: add Secure Encrypted Virtulization (SEV) support, Brijesh Singh, 2016/11/01
- [Qemu-devel] [RFC PATCH v3 08/18] hmp: display memory encryption support in 'info kvm', Brijesh Singh, 2016/11/01
- [Qemu-devel] [RFC PATCH v3 09/18] core: loader: create memory encryption context before copying data, Brijesh Singh, 2016/11/01
- [Qemu-devel] [RFC PATCH v3 10/18] sev: add LAUNCH_START command, Brijesh Singh, 2016/11/01
- [Qemu-devel] [RFC PATCH v3 11/18] sev: add LAUNCH_UPDATE command, Brijesh Singh, 2016/11/01
- [Qemu-devel] [RFC PATCH v3 12/18] sev: add LAUNCH_FINISH command, Brijesh Singh, 2016/11/01
- [Qemu-devel] [RFC PATCH v3 13/18] sev: add DEBUG_DECRYPT command, Brijesh Singh, 2016/11/01