summaryrefslogtreecommitdiffstats
path: root/accel/kvm
diff options
context:
space:
mode:
authorGal Hammer2018-01-14 11:06:55 +0100
committerMichael S. Tsirkin2018-01-18 20:52:37 +0100
commit4fe6d78b2e241f41208dfb07605aace4becfc747 (patch)
tree85a395c6e7f764185229f3e190daa87db314fd51 /accel/kvm
parentqemu: add a cleanup callback function to EventNotifier (diff)
downloadqemu-4fe6d78b2e241f41208dfb07605aace4becfc747.tar.gz
qemu-4fe6d78b2e241f41208dfb07605aace4becfc747.tar.xz
qemu-4fe6d78b2e241f41208dfb07605aace4becfc747.zip
virtio: postpone the execution of event_notifier_cleanup function
Use the EventNotifier's cleanup callback function to execute the event_notifier_cleanup function after kvm unregistered the eventfd. This change supports running the virtio_bus_set_host_notifier function inside a memory region transaction. Otherwise, a closed fd is sent to kvm, which results in a failure. Signed-off-by: Gal Hammer <ghammer@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'accel/kvm')
-rw-r--r--accel/kvm/kvm-all.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index f290f487a5..071f4f57c0 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -812,6 +812,10 @@ static void kvm_mem_ioeventfd_del(MemoryListener *listener,
if (r < 0) {
abort();
}
+
+ if (e->cleanup) {
+ e->cleanup(e);
+ }
}
static void kvm_io_ioeventfd_add(MemoryListener *listener,