Paravirtualized devices (and also some real devices) can assume they
are going to access RAM. For this reason, provide a fast-path
function with the following properties:
1) it will never allocate a bounce buffer
2) it can be used for read-modify-write operations
3) unlike qemu_get_ram_ptr, it is safe because it recognizes "short"
blocks
Patches 3 and 4 use this function for virtio devices and the milkymist
GPU. The latter is only compile-tested.
Another function checks if it is possible to split a contiguous physical
address range into multiple subranges, all of which use the fast path.
I will introduce later a use for this function.
Paolo Bonzini (4):
exec: extract cpu_physical_memory_map_internal
exec: introduce cpu_physical_memory_map_fast and
cpu_physical_memory_map_check
virtio: use cpu_physical_memory_map_fast
milkymist: use cpu_physical_memory_map_fast
cpu-common.h | 4 ++
exec.c | 108 +++++++++++++++++++++++++++++++++++++-------------
hw/milkymist-tmu2.c | 39 ++++++++++--------
hw/vhost.c | 10 ++--
hw/virtio.c | 2 +-
5 files changed, 111 insertions(+), 52 deletions(-)