[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: Add target memory mapping API
From: |
Mike Day |
Subject: |
[Qemu-devel] Re: Add target memory mapping API |
Date: |
Wed, 21 Jan 2009 06:52:01 -0500 |
User-agent: |
Mutt/1.5.17+20080114 (2008-01-14) |
On 18/01/09 21:53 +0200, Avi Kivity wrote:
> Devices accessing large amounts of memory (as with DMA) will wish to obtain
> a pointer to guest memory rather than access it indirectly via
> cpu_physical_memory_rw(). Add a new API to convert target addresses to
> host pointers.
>
> In case the target address does not correspond to RAM, a bounce buffer is
> allocated. To prevent the guest from causing the host to allocate unbounded
> amounts of bounce buffer, this memory is limited (currently to one page).
>
> Signed-off-by: Avi Kivity <address@hidden>
> ---
> cpu-all.h | 5 +++
> exec.c | 93
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 98 insertions(+), 0 deletions(-)
>
> diff --git a/cpu-all.h b/cpu-all.h
> index ee0a6e3..3439999 100644
> --- a/cpu-all.h
> +++ b/cpu-all.h
> @@ -923,6 +923,11 @@ static inline void
> cpu_physical_memory_write(target_phys_addr_t addr,
> {
> cpu_physical_memory_rw(addr, (uint8_t *)buf, len, 1);
> }
> +void *cpu_physical_memory_map(target_phys_addr_t addr,
> + target_phys_addr_t *plen,
> + int is_write);
> +void cpu_physical_memory_unmap(void *buffer, target_phys_addr_t len,
> + int is_write);
> uint32_t ldub_phys(target_phys_addr_t addr);
> uint32_t lduw_phys(target_phys_addr_t addr);
> uint32_t ldl_phys(target_phys_addr_t addr);
> diff --git a/exec.c b/exec.c
> index faa6333..7162271 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -3045,6 +3045,99 @@ void cpu_physical_memory_write_rom(target_phys_addr_t
> addr,
> }
> }
>
> +typedef struct {
> + void *buffer;
> + target_phys_addr_t addr;
> + target_phys_addr_t len;
> +} BounceBuffer;
> +
> +static BounceBuffer bounce;
Should there be one bounce buffer for each vcpu? Eventually the device
model lock will be refactored to allow more parallelism, right?
Mike
--
Mike Day
http://www.ncultra.org
AIM: ncmikeday | Yahoo IM: ultra.runner
PGP key: http://www.ncultra.org/ncmike/pubkey.asc
- [Qemu-devel] Re: [PATCH 1/5] Add target memory mapping API, (continued)
- [Qemu-devel] Re: [PATCH 1/5] Add target memory mapping API, Anthony Liguori, 2009/01/20
- Re: [Qemu-devel] Re: [PATCH 1/5] Add target memory mapping API, Anthony Liguori, 2009/01/21
- Re: [Qemu-devel] Re: [PATCH 1/5] Add target memory mapping API, Ian Jackson, 2009/01/22
- Re: [Qemu-devel] Re: [PATCH 1/5] Add target memory mapping API, Anthony Liguori, 2009/01/22
- Re: [Qemu-devel] Re: [PATCH 1/5] Add target memory mapping API, Ian Jackson, 2009/01/26
- Re: [Qemu-devel] Re: [PATCH 1/5] Add target memory mapping API, Anthony Liguori, 2009/01/26
[Qemu-devel] Re: Add target memory mapping API,
Mike Day <=
[Qemu-devel] [PATCH 2/5] Add map client retry notification, Avi Kivity, 2009/01/18
Re: [Qemu-devel] [PATCH 0/5] Direct memory access for devices, Blue Swirl, 2009/01/19