Commit 1c7936e37730e58a8cc81fea91fd831b1ccf0b73
Committed by
Anthony Liguori
1 parent
ce536cfd
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 <agraf@suse.de> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing
1 changed file
with
1 additions
and
1 deletions
kvm-all.c
... | ... | @@ -357,7 +357,7 @@ int kvm_physical_sync_dirty_bitmap(target_phys_addr_t start_addr, |
357 | 357 | for (phys_addr = mem->start_addr, addr = mem->phys_offset; |
358 | 358 | phys_addr < mem->start_addr + mem->memory_size; |
359 | 359 | phys_addr += TARGET_PAGE_SIZE, addr += TARGET_PAGE_SIZE) { |
360 | - unsigned long *bitmap = (unsigned long *)d.dirty_bitmap; | |
360 | + uint64_t *bitmap = (uint64_t *)d.dirty_bitmap; | |
361 | 361 | unsigned nr = (phys_addr - mem->start_addr) >> TARGET_PAGE_BITS; |
362 | 362 | unsigned word = nr / (sizeof(*bitmap) * 8); |
363 | 363 | unsigned bit = nr % (sizeof(*bitmap) * 8); | ... | ... |