]> git.proxmox.com Git - mirror_qemu.git/commit - exec.c
memory: add address_space_translate
authorPaolo Bonzini <pbonzini@redhat.com>
Fri, 24 May 2013 10:59:37 +0000 (12:59 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 29 May 2013 14:26:50 +0000 (16:26 +0200)
commit149f54b53b7666a3facd45e86eece60ce7d3b114
tree716ff4eeaca8647f328eb06730476d46adbe6bc0
parentb018ddf633f77195e9ae859c6d940a334e68879f
memory: add address_space_translate

Using phys_page_find to translate an AddressSpace to a MemoryRegionSection
is unwieldy.  It requires to pass the page index rather than the address,
and later memory_region_section_addr has to be called.  Replace
memory_region_section_addr with a function that does all of it: call
phys_page_find, compute the offset within the region, and check how
big the current mapping is.  This way, a large flat region can be written
with a single lookup rather than a page at a time.

address_space_translate will also provide a single point where IOMMU
forwarding is implemented.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
cputlb.c
exec.c
include/exec/cputlb.h
include/exec/memory.h
translate-all.c