[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH v5 09/52] hw/xen_backend: refactor xen_be_init()
From: |
David Woodhouse |
Subject: |
[RFC PATCH v5 09/52] hw/xen_backend: refactor xen_be_init() |
Date: |
Fri, 30 Dec 2022 12:11:52 +0000 |
From: Joao Martins <joao.m.martins@oracle.com>
Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
hw/xen/xen-legacy-backend.c | 40 +++++++++++++++++++++--------
include/hw/xen/xen-legacy-backend.h | 3 +++
2 files changed, 32 insertions(+), 11 deletions(-)
diff --git a/hw/xen/xen-legacy-backend.c b/hw/xen/xen-legacy-backend.c
index 085fd31ef7..694e7bbc54 100644
--- a/hw/xen/xen-legacy-backend.c
+++ b/hw/xen/xen-legacy-backend.c
@@ -676,17 +676,40 @@ void xenstore_update_fe(char *watch, struct
XenLegacyDevice *xendev)
}
/* -------------------------------------------------------------------- */
-int xen_be_init(void)
+int xen_be_xenstore_open(void)
{
- xengnttab_handle *gnttabdev;
-
xenstore = xs_daemon_open();
if (!xenstore) {
- xen_pv_printf(NULL, 0, "can't connect to xenstored\n");
return -1;
}
qemu_set_fd_handler(xs_fileno(xenstore), xenstore_update, NULL, NULL);
+ return 0;
+}
+
+void xen_be_xenstore_close(void)
+{
+ qemu_set_fd_handler(xs_fileno(xenstore), NULL, NULL, NULL);
+ xs_daemon_close(xenstore);
+ xenstore = NULL;
+}
+
+void xen_be_sysdev_init(void)
+{
+ xen_sysdev = qdev_new(TYPE_XENSYSDEV);
+ sysbus_realize_and_unref(SYS_BUS_DEVICE(xen_sysdev), &error_fatal);
+ xen_sysbus = qbus_new(TYPE_XENSYSBUS, xen_sysdev, "xen-sysbus");
+ qbus_set_bus_hotplug_handler(xen_sysbus);
+}
+
+int xen_be_init(void)
+{
+ xengnttab_handle *gnttabdev;
+
+ if (xen_be_xenstore_open()) {
+ xen_pv_printf(NULL, 0, "can't connect to xenstored\n");
+ return -1;
+ }
if (xen_xc == NULL || xen_fmem == NULL) {
/* Check if xen_init() have been called */
@@ -701,17 +724,12 @@ int xen_be_init(void)
xengnttab_close(gnttabdev);
}
- xen_sysdev = qdev_new(TYPE_XENSYSDEV);
- sysbus_realize_and_unref(SYS_BUS_DEVICE(xen_sysdev), &error_fatal);
- xen_sysbus = qbus_new(TYPE_XENSYSBUS, xen_sysdev, "xen-sysbus");
- qbus_set_bus_hotplug_handler(xen_sysbus);
+ xen_be_sysdev_init();
return 0;
err:
- qemu_set_fd_handler(xs_fileno(xenstore), NULL, NULL, NULL);
- xs_daemon_close(xenstore);
- xenstore = NULL;
+ xen_be_xenstore_close();
return -1;
}
diff --git a/include/hw/xen/xen-legacy-backend.h
b/include/hw/xen/xen-legacy-backend.h
index be281e1f38..0aa171f6c2 100644
--- a/include/hw/xen/xen-legacy-backend.h
+++ b/include/hw/xen/xen-legacy-backend.h
@@ -42,6 +42,9 @@ int xenstore_read_fe_uint64(struct XenLegacyDevice *xendev,
const char *node,
void xen_be_check_state(struct XenLegacyDevice *xendev);
/* xen backend driver bits */
+int xen_be_xenstore_open(void);
+void xen_be_xenstore_close(void);
+void xen_be_sysdev_init(void);
int xen_be_init(void);
void xen_be_register_common(void);
int xen_be_register(const char *type, struct XenDevOps *ops);
--
2.35.3
- [RFC PATCH v5 28/52] i386/xen: Add support for Xen event channel delivery to vCPU, (continued)
- [RFC PATCH v5 28/52] i386/xen: Add support for Xen event channel delivery to vCPU, David Woodhouse, 2022/12/30
- [RFC PATCH v5 14/52] hw/xen: Add xen_overlay device for emulating shared xenheap pages, David Woodhouse, 2022/12/30
- [RFC PATCH v5 17/52] i386/xen: implement HYPERVISOR_memory_op, David Woodhouse, 2022/12/30
- [RFC PATCH v5 23/52] i386/xen: handle VCPUOP_register_runstate_memory_area, David Woodhouse, 2022/12/30
- [RFC PATCH v5 24/52] i386/xen: implement HYPERVISOR_event_channel_op, David Woodhouse, 2022/12/30
- [RFC PATCH v5 35/52] hw/xen: Implement EVTCHNOP_alloc_unbound, David Woodhouse, 2022/12/30
- [RFC PATCH v5 16/52] i386/xen: manage and save/restore Xen guest long_mode setting, David Woodhouse, 2022/12/30
- [RFC PATCH v5 26/52] i386/xen: implement HVMOP_set_param, David Woodhouse, 2022/12/30
- [RFC PATCH v5 41/52] hw/xen: Support HVM_PARAM_CALLBACK_TYPE_PCI_INTX callback, David Woodhouse, 2022/12/30
- [RFC PATCH v5 49/52] i386/xen: handle HVMOP_get_param, David Woodhouse, 2022/12/30
- [RFC PATCH v5 09/52] hw/xen_backend: refactor xen_be_init(),
David Woodhouse <=
- [RFC PATCH v5 05/52] i386/kvm: handle Xen HVM cpuid leaves, David Woodhouse, 2022/12/30
- [RFC PATCH v5 31/52] hw/xen: Implement EVTCHNOP_unmask, David Woodhouse, 2022/12/30
- [RFC PATCH v5 07/52] xen-platform: exclude vfio-pci from the PCI platform unplug, David Woodhouse, 2022/12/30
- [RFC PATCH v5 40/52] hw/xen: Support HVM_PARAM_CALLBACK_TYPE_GSI callback, David Woodhouse, 2022/12/30
- [RFC PATCH v5 22/52] i386/xen: handle VCPUOP_register_vcpu_time_info, David Woodhouse, 2022/12/30
- [RFC PATCH v5 45/52] i386/xen: Implement HYPERVISOR_grant_table_op and GNTTABOP_[gs]et_verson, David Woodhouse, 2022/12/30
- [RFC PATCH v5 33/52] hw/xen: Implement EVTCHNOP_bind_ipi, David Woodhouse, 2022/12/30
- [RFC PATCH v5 47/52] i386/xen: handle PV timer hypercalls, David Woodhouse, 2022/12/30
- [RFC PATCH v5 04/52] i386/kvm: Add xen-version KVM accelerator property and init KVM Xen support, David Woodhouse, 2022/12/30
- [RFC PATCH v5 39/52] i386/xen: add monitor commands to test event injection, David Woodhouse, 2022/12/30