From 84cc9537c69b7ec652c838104c33c7d563588fc2 Mon Sep 17 00:00:00 2001 From: Uri Lublin Date: Tue, 4 Dec 2007 16:44:08 +0200 Subject: [PATCH] Register memory in orderly fashion (from 0 up to ram_size) The function kvm_cpu_register_physical_memory() does not keep phys_offset. We need it when updating qemu-dirty-page-bitmap with kvm-dirty-page-bitmap. Now (for VM RAM) start_addr would be the same as phys_offset. Getting kvm-dirty-page-bitmap and updating qemu-dirty-bitmap would be done correctly. Signed-off-by: Uri Lublin Signed-off-by: Avi Kivity --- hw/pc.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hw/pc.c b/hw/pc.c index 6c71b09d25..830cfb894c 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -725,13 +725,15 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size, int boot_device, #ifdef USE_KVM #ifdef KVM_CAP_USER_MEMORY if (kvm_allowed && kvm_qemu_check_extension(KVM_CAP_USER_MEMORY)) { + ram_addr = qemu_ram_alloc(0xa0000); + cpu_register_physical_memory(0, 0xa0000, ram_addr); + kvm_cpu_register_physical_memory(0, 0xa0000, ram_addr); + + ram_addr = qemu_ram_alloc(0x100000 - 0xa0000); // hole ram_addr = qemu_ram_alloc(ram_size - 0x100000); cpu_register_physical_memory(0x100000, ram_size - 0x100000, ram_addr); kvm_cpu_register_physical_memory(0x100000, ram_size - 0x100000, ram_addr); - ram_addr = qemu_ram_alloc(0xa0000); - cpu_register_physical_memory(0, 0xa0000, ram_addr); - kvm_cpu_register_physical_memory(0, 0xa0000, ram_addr); } else #endif #endif -- 2.11.4.GIT