Fix KVM dirty logging with 32-bit qemu & >32-bit physical addresses
PATCH 1/1 Fix KVM dirty logging with 32-bit qemu & >32-bit physical addresses
We were using the wrong types in kvm_get_dirty_pages_log_range().
This would break dirty logging if the region to log resides at a physical address above 32-bit, which can happen with 64-bit guest but also with 32-bit guests that support >32-bit physical addresses such as ppc BookE.
Signed-off-by Benjamin Herrenschmidt <[email protected]>
--- kvm-all.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)
kvm-all.c +4 -3
@@ -328,13 +328,14 @@ static int kvm_set_migration_log(int enable) }/* get kvm's dirty pages bitmap and update qemu's */ -static int kvm_get_dirty_pages_log_range (unsigned long start_addr, +static int kvm_get_dirty_pages_log_range (target_phys_addr_t start_addr,unsigned long *bitmap, -unsigned long offset, +target_phys_addr_t offset,unsigned long mem_size) {unsigned int i, j; -unsigned long page_number, addr, addr1, c; +unsigned long page_number, c; +target_phys_addr_t addr, addr1;ram_addr_t ram_addr;unsigned int len = ((mem_size /TARGET_PAGE_SIZE ) +HOST_LONG_BITS -1 ) /HOST_LONG_BITS ;
Quoted 8 lines · Benjamin Herrenschmidt
We were using the wrong types in
kvm_get_dirty_pages_log_range().This would break dirty logging if the region to log resides at a physical address above 32-bit, which can happen with 64-bit guest but also with 32-bit guests that support >32-bit physical addresses such as ppc BookE.
Signed-off-by Benjamin Herrenschmidt <[email protected]>
Acked-by Alexander Graf <[email protected]>
Alex