The aim of this serie is to prepare kvm memory listener to support atomic memslots update. In order to do that, QEMU should take care of sending all memslot updates in a single ioctl, so that they can all be processed atomically.
In order to do that, implement kml->begin() and kml->commit() callbacks, and change the logic by replacing every ioctl invocation in ->region_* and ->log_* so that the struct kvm_userspace_memory_region are queued in a linked list that is then traversed and processed in ->commit. Patch 1 ensures that ->region_* and ->log_* are always wrapped by ->begin and ->commit. --- v2: - remove patch 1, as it is useless - patch 2: instead of a linked list, use kvm_userspace_memory_region_list - kvm_userspace_memory_region_list: add padding Emanuele Giuseppe Esposito (3): linux-headers/linux/kvm.h: introduce kvm_userspace_memory_region_list ioctl accel/kvm/kvm-all.c: pass kvm_userspace_memory_region_entry instead kvm/kvm-all.c: listener should delay kvm_vm_ioctl to the commit phase accel/kvm/kvm-all.c | 116 +++++++++++++++++++++++++++++--------- include/sysemu/kvm_int.h | 8 +++ linux-headers/linux/kvm.h | 20 +++++++ 3 files changed, 117 insertions(+), 27 deletions(-) -- 2.31.1