KVMDirtyLog d;
KVMSlot *mem;
int ret = 0;
- int r;
d.dirty_bitmap = NULL;
while (start_addr < end_addr) {
break;
}
- /* We didn't activate dirty logging? Don't care then. */
- if(!(mem->flags & KVM_MEM_LOG_DIRTY_PAGES)) {
- continue;
- }
-
size = ((mem->memory_size >> TARGET_PAGE_BITS) + 7) / 8;
if (!d.dirty_bitmap) {
d.dirty_bitmap = qemu_malloc(size);
d.slot = mem->slot;
- r = kvm_vm_ioctl(s, KVM_GET_DIRTY_LOG, &d);
- if (r == -EINVAL) {
+ if (kvm_vm_ioctl(s, KVM_GET_DIRTY_LOG, &d) == -1) {
dprintf("ioctl failed %d\n", errno);
ret = -1;
break;
if (test_le_bit(nr, bitmap)) {
cpu_physical_memory_set_dirty(addr);
- } else if (r < 0) {
- /* When our KVM implementation doesn't know about dirty logging
- * we can just assume it's always dirty and be fine. */
- cpu_physical_memory_set_dirty(addr);
}
}
start_addr = phys_addr;