[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH v2 03/16] exec: add debug version of physica
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [RFC PATCH v2 03/16] exec: add debug version of physical memory read and write apis |
Date: |
Thu, 22 Sep 2016 17:21:13 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 |
On 22/09/2016 16:52, Brijesh Singh wrote:
> 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 0989933..9d0128e 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -3105,6 +3105,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);
> @@ -3615,6 +3639,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 520dae0..90598d4 100644
> --- a/include/exec/cpu-common.h
> +++ b/include/exec/cpu-common.h
> @@ -61,6 +61,8 @@ const char *qemu_ram_get_idstr(RAMBlock *rb);
>
> 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)
> {
> @@ -71,6 +73,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 v2 00/16] x86: Secure Encrypted Virtualization (AMD), Brijesh Singh, 2016/09/22
- [Qemu-devel] [RFC PATCH v2 01/16] memattrs: add debug attrs, Brijesh Singh, 2016/09/22
- [Qemu-devel] [RFC PATCH v2 02/16] exec: add guest RAM read and write ops, Brijesh Singh, 2016/09/22
- [Qemu-devel] [RFC PATCH v2 03/16] exec: add debug version of physical memory read and write apis, Brijesh Singh, 2016/09/22
- Re: [Qemu-devel] [RFC PATCH v2 03/16] exec: add debug version of physical memory read and write apis,
Paolo Bonzini <=
- [Qemu-devel] [RFC PATCH v2 04/16] monitor: use debug version of memory access apis, Brijesh Singh, 2016/09/22
- [Qemu-devel] [RFC PATCH v2 05/16] core: add new security-policy object, Brijesh Singh, 2016/09/22
- [Qemu-devel] [RFC PATCH v2 06/16] sev: add Secure Encrypted Virtulization (SEV) support, Brijesh Singh, 2016/09/22
- Re: [Qemu-devel] [RFC PATCH v2 06/16] sev: add Secure Encrypted Virtulization (SEV) support, Michael S. Tsirkin, 2016/09/22