[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH 05/21] hw/xen_backend: refactor xen_be_init()
From: |
David Woodhouse |
Subject: |
[RFC PATCH 05/21] hw/xen_backend: refactor xen_be_init() |
Date: |
Mon, 5 Dec 2022 17:31:21 +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>
---
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 01/21] include: import xen public headers, (continued)
[RFC PATCH 17/21] i386/xen: handle register_runstate_memory_area, David Woodhouse, 2022/12/05
[RFC PATCH 13/21] i386/xen: implement HYPERVISOR_hvm_op, David Woodhouse, 2022/12/05
[RFC PATCH 05/21] hw/xen_backend: refactor xen_be_init(),
David Woodhouse <=
[RFC PATCH 16/21] i386/xen: handle register_vcpu_time_memory_area, David Woodhouse, 2022/12/05
[RFC PATCH 11/21] i386/xen: implement HYPERCALL_xen_version, David Woodhouse, 2022/12/05
[RFC PATCH 09/21] pc_piix: allow xenfv machine with XEN_EMULATE, David Woodhouse, 2022/12/05
[RFC PATCH 18/21] kvm/ioapic: mark gsi-2 used in ioapic routing init, David Woodhouse, 2022/12/05
[RFC PATCH 07/21] xen-platform-pci: register xen-mmio as RAM for XEN_EMULATE, David Woodhouse, 2022/12/05
[RFC PATCH 15/21] i386/xen: handle register_vcpu_info, David Woodhouse, 2022/12/05