This patch introduces in qemu the MMIO batching. It defines qemu_kvm_register_delayed_mmio() and qemu_kvm_unregister_delayed_mmio() to register and unregister delayed MMIO zone. It calls qemu_kvm_unregister_delayed_mmio() on pci_update_mappings().
Signed-off-by: Laurent Vivier <[EMAIL PROTECTED]> --- qemu/hw/pci.c | 4 ++++ qemu/qemu-kvm.c | 10 ++++++++++ qemu/qemu-kvm.h | 2 ++ 3 files changed, 16 insertions(+), 0 deletions(-) diff --git a/qemu/hw/pci.c b/qemu/hw/pci.c index a23a466..70809fb 100644 --- a/qemu/hw/pci.c +++ b/qemu/hw/pci.c @@ -26,6 +26,7 @@ #include "console.h" #include "net.h" #include "pc.h" +#include "qemu-kvm.h" //#define DEBUG_PCI @@ -323,6 +324,9 @@ static void pci_update_mappings(PCIDevice *d) cpu_register_physical_memory(pci_to_cpu_addr(r->addr), r->size, IO_MEM_UNASSIGNED); + if (kvm_enabled()) + qemu_kvm_unregister_delayed_mmio(r->addr, + r->size); } } r->addr = new_addr; diff --git a/qemu/qemu-kvm.c b/qemu/qemu-kvm.c index 02776bc..484a713 100644 --- a/qemu/qemu-kvm.c +++ b/qemu/qemu-kvm.c @@ -928,3 +928,13 @@ void kvm_mutex_lock(void) pthread_mutex_lock(&qemu_mutex); cpu_single_env = NULL; } + +int qemu_kvm_register_delayed_mmio(target_phys_addr_t addr, unsigned int size) +{ + return kvm_register_delayed_mmio(kvm_context, addr, size); +} + +int qemu_kvm_unregister_delayed_mmio(target_phys_addr_t addr, unsigned int size) +{ + return kvm_unregister_delayed_mmio(kvm_context, addr, size); +} diff --git a/qemu/qemu-kvm.h b/qemu/qemu-kvm.h index 7412e20..a69142c 100644 --- a/qemu/qemu-kvm.h +++ b/qemu/qemu-kvm.h @@ -76,6 +76,8 @@ int handle_tpr_access(void *opaque, int vcpu, void kvm_tpr_vcpu_start(CPUState *env); int qemu_kvm_get_dirty_pages(unsigned long phys_addr, void *buf); +int qemu_kvm_register_delayed_mmio(target_phys_addr_t addr, unsigned int size); +int qemu_kvm_unregister_delayed_mmio(target_phys_addr_t addr, unsigned int size); void qemu_kvm_system_reset_request(void); -- 1.5.2.4 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html