other: 0.258 semantic: 0.191 KVM: 0.121 vnc: 0.058 device: 0.057 graphic: 0.054 performance: 0.046 PID: 0.043 network: 0.040 files: 0.032 socket: 0.031 permissions: 0.031 boot: 0.019 debug: 0.018 KVM: 0.692 debug: 0.098 files: 0.059 other: 0.035 PID: 0.022 performance: 0.015 device: 0.014 semantic: 0.013 network: 0.012 boot: 0.010 socket: 0.009 vnc: 0.009 graphic: 0.007 permissions: 0.005 migration wrong handling of KVM_GET_DIRTY_LOG ioctl In the code below kvm_vm_ioctl(...) can return --errno != -1 from ioctl call, but return only checks for -1. Found during KVM-ARM migration which apperead to go through but was actually failing getting memslot dirty bitmap. static int kvm_physical_sync_dirty_bitmap(....) { .... if(kvm_vm_ioctl(s, KVM_GET_DIRTY_LOG, &d) == -1) { - err out } ... continue } Sent patch for error handling: http://lists.nongnu.org/archive/html/qemu-devel/2014-09/msg05633.html The apparently obvious fix was applied as commit b533f658a98325d0e4 but then reverted in commit 50212d6346f33d6e19, because not all errno returns from this ioctl should be treated as errors. That commit message said "Revert that patch instead of fixing it properly this late in the release process. I disagree with this approach, but let's make things move _somewhere_, instead of arguing endlessly whch of the 2 proposed fixes is better." -- and then we never did a proper fix, so 5 years later we're still making an incorrect == -1 check... Moving this bug back to Confirmed to move it out of "In progress" state. We still check for only -1 upstream. Yet another try to fix this issue: https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg07557.html Patch has been merged here: https://gitlab.com/qemu-project/qemu/-/commit/38e0b7904eca7cd32