]> xenbits.xensource.com Git - people/pauldu/qemu.git/commitdiff
hw/xen: Add emulated evtchn ops
authorDavid Woodhouse <dwmw@amazon.co.uk>
Sun, 1 Jan 2023 23:49:25 +0000 (23:49 +0000)
committerDavid Woodhouse <dwmw@amazon.co.uk>
Fri, 20 Jan 2023 12:28:53 +0000 (12:28 +0000)
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
hw/i386/kvm/xen_evtchn.c

index 17a88823d604073a8bb0babde9f492c57b127ff3..95349f16d4bfb0f2423b940a38a17be6d51cc9c9 100644 (file)
@@ -33,6 +33,7 @@
 #include "hw/pci/msi.h"
 #include "hw/pci/msix.h"
 #include "hw/irq.h"
+#include "hw/xen/xen_backend_ops.h"
 
 #include "xen_evtchn.h"
 #include "xen_overlay.h"
@@ -277,6 +278,17 @@ static const TypeInfo xen_evtchn_info = {
     .class_init    = xen_evtchn_class_init,
 };
 
+static struct evtchn_backend_ops emu_evtchn_backend_ops = {
+    .open = xen_be_evtchn_open,
+    .bind_interdomain = xen_be_evtchn_bind_interdomain,
+    .unbind = xen_be_evtchn_unbind,
+    .close = xen_be_evtchn_close,
+    .get_fd = xen_be_evtchn_fd,
+    .notify = xen_be_evtchn_notify,
+    .unmask = xen_be_evtchn_unmask,
+    .pending = xen_be_evtchn_pending,
+};
+
 static void gsi_assert_bh(void *opaque)
 {
     struct vcpu_info *vi = kvm_xen_get_vcpu_info_hva(0);
@@ -317,6 +329,9 @@ void xen_evtchn_create(void)
     s->nr_pirq_inuse_words = DIV_ROUND_UP(s->nr_pirqs, 64);
     s->pirq_inuse_bitmap = g_new0(uint64_t, s->nr_pirq_inuse_words);
     s->pirq = g_new0(struct pirq_info, s->nr_pirqs);
+
+    /* Set event channel functions for backend drivers to use */
+    xen_evtchn_ops = &emu_evtchn_backend_ops;
 }
 
 void xen_evtchn_connect_gsis(qemu_irq *system_gsis)