@@ -817,6 +817,17 @@ static char *virtio_mmio_bus_get_dev_path(DeviceState *dev)
return path;
}
+static void virtio_mmio_vmstate_change(DeviceState *d, bool running)
+{
+ VirtIOMMIOProxy *proxy = VIRTIO_MMIO(d);
+
+ if (running) {
+ virtio_mmio_start_ioeventfd(proxy);
+ } else {
+ virtio_mmio_stop_ioeventfd(proxy);
+ }
+}
+
static void virtio_mmio_bus_class_init(ObjectClass *klass, void *data)
{
BusClass *bus_class = BUS_CLASS(klass);
@@ -832,6 +843,7 @@ static void virtio_mmio_bus_class_init(ObjectClass *klass, void *data)
k->ioeventfd_enabled = virtio_mmio_ioeventfd_enabled;
k->ioeventfd_assign = virtio_mmio_ioeventfd_assign;
k->pre_plugged = virtio_mmio_pre_plugged;
+ k->vmstate_change = virtio_mmio_vmstate_change;
k->has_variable_vring_alignment = true;
bus_class->max_dev = 1;
bus_class->get_dev_path = virtio_mmio_bus_get_dev_path;