@@ -666,6 +666,21 @@ assign_error:
return r;
}
+static int virtio_mmio_set_config_notifier(DeviceState *d, bool assign)
+{
+ VirtIOMMIOProxy *proxy = VIRTIO_MMIO(d);
+ VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus);
+ EventNotifier *notifier = virtio_get_config_notifier(vdev);
+ int r = 0;
+ if (assign) {
+ r = event_notifier_init(notifier, 0);
+ virtio_set_config_notifier_fd_handler(vdev, true, false);
+ } else {
+ virtio_set_config_notifier_fd_handler(vdev, false, false);
+ event_notifier_cleanup(notifier);
+ }
+ return r;
+}
static void virtio_mmio_pre_plugged(DeviceState *d, Error **errp)
{
VirtIOMMIOProxy *proxy = VIRTIO_MMIO(d);
@@ -780,6 +795,7 @@ static void virtio_mmio_bus_class_init(ObjectClass *klass, void *data)
k->ioeventfd_assign = virtio_mmio_ioeventfd_assign;
k->pre_plugged = virtio_mmio_pre_plugged;
k->has_variable_vring_alignment = true;
+ k->set_config_notifiers = virtio_mmio_set_config_notifier;
bus_class->max_dev = 1;
bus_class->get_dev_path = virtio_mmio_bus_get_dev_path;
}
add configure interrupt support for virtio-mmio bus. This interrupt will working while backend is vhost-vdpa Signed-off-by: Cindy Lu <lulu@redhat.com> --- hw/virtio/virtio-mmio.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)