From 1c7936e37730e58a8cc81fea91fd831b1ccf0b73 Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Sat, 25 Jul 2009 01:16:44 +0200 Subject: [PATCH] Use 64bit pointer for dirty log Dirty logs currently get written with native "long" size. On little endian it doesn't matter if we use uint64_t instead though, because we'd still end up using the right bytes. On big endian, this does become a bigger problem, so we need to ensure that kernel and userspace talk the same language, which means getting rid of "long" and using a defined size instead. So I decided to use 64 bit types at all times. This doesn't break existing targets but will in conjunction with a patch I'll send to the KVM ML make dirty logs work with 32 bit userspace on 64 kernel with big endian. Signed-off-by: Alexander Graf Signed-off-by: Anthony Liguori --- kvm-all.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kvm-all.c b/kvm-all.c index 824bb4ccb5..9d02ce3544 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -357,7 +357,7 @@ int kvm_physical_sync_dirty_bitmap(target_phys_addr_t start_addr, for (phys_addr = mem->start_addr, addr = mem->phys_offset; phys_addr < mem->start_addr + mem->memory_size; phys_addr += TARGET_PAGE_SIZE, addr += TARGET_PAGE_SIZE) { - unsigned long *bitmap = (unsigned long *)d.dirty_bitmap; + uint64_t *bitmap = (uint64_t *)d.dirty_bitmap; unsigned nr = (phys_addr - mem->start_addr) >> TARGET_PAGE_BITS; unsigned word = nr / (sizeof(*bitmap) * 8); unsigned bit = nr % (sizeof(*bitmap) * 8);