[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH v11bis 20/26] hw/xen: Hook up emulated implementation for eve
From: |
David Woodhouse |
Subject: |
[RFC PATCH v11bis 20/26] hw/xen: Hook up emulated implementation for event channel operations |
Date: |
Thu, 16 Feb 2023 09:44:30 +0000 |
From: David Woodhouse <dwmw@amazon.co.uk>
We provided the backend-facing evtchn functions very early on as part of
the core Xen platform support, since things like timers and xenstore need
to use them.
By what may or may not be an astonishing coincidence, those functions
just *happen* all to have exactly the right function prototypes to slot
into the evtchn_backend_ops table and be called by the PV backends.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/i386/kvm/xen_evtchn.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm/xen_evtchn.c
index 3f60461e5c..4442e3ab06 100644
--- a/hw/i386/kvm/xen_evtchn.c
+++ b/hw/i386/kvm/xen_evtchn.c
@@ -34,6 +34,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"
@@ -278,6 +279,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);
@@ -318,6 +330,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)
--
2.39.0
- [RFC PATCH v11bis 03/26] hw/xen: Implement XenStore watches, (continued)
- [RFC PATCH v11bis 03/26] hw/xen: Implement XenStore watches, David Woodhouse, 2023/02/16
- [RFC PATCH v11bis 22/26] hw/xen: Add emulated implementation of XenStore operations, David Woodhouse, 2023/02/16
- [RFC PATCH v11bis 02/26] hw/xen: Add basic XenStore tree walk and write/read/directory support, David Woodhouse, 2023/02/16
- [RFC PATCH v11bis 05/26] hw/xen: Watches on XenStore transactions, David Woodhouse, 2023/02/16
- [RFC PATCH v11bis 10/26] hw/xen: Add gnttab operations to allow redirection to internal emulation, David Woodhouse, 2023/02/16
- [RFC PATCH v11bis 09/26] hw/xen: Add evtchn operations to allow redirection to internal emulation, David Woodhouse, 2023/02/16
- [RFC PATCH v11bis 08/26] hw/xen: Create initial XenStore nodes, David Woodhouse, 2023/02/16
- [RFC PATCH v11bis 01/26] hw/xen: Add xenstore wire implementation and implementation stubs, David Woodhouse, 2023/02/16
- [RFC PATCH v11bis 13/26] hw/xen: Add xenstore operations to allow redirection to internal emulation, David Woodhouse, 2023/02/16
- [RFC PATCH v11bis 16/26] hw/xen: Rename xen_common.h to xen_native.h, David Woodhouse, 2023/02/16
- [RFC PATCH v11bis 20/26] hw/xen: Hook up emulated implementation for event channel operations,
David Woodhouse <=
- [RFC PATCH v11bis 12/26] hw/xen: Add foreignmem operations to allow redirection to internal emulation, David Woodhouse, 2023/02/16
- [RFC PATCH v11bis 11/26] hw/xen: Pass grant ref to gnttab unmap operation, David Woodhouse, 2023/02/16
- [RFC PATCH v11bis 07/26] hw/xen: Implement core serialize/deserialize methods for xenstore_impl, David Woodhouse, 2023/02/16
- Re: [RFC PATCH v11bis 00/26] Emulated XenStore and PV backend support, Juan Quintela, 2023/02/16