xen: initialize legacy backends from xen_bus_init()

Prepare for moving the calls to xen_be_register() under the
control of xen_bus_init(), using the normal xen_backend_init()
method that is used by the "modern" backends.

This requires the xenstore global variable to be initialized,
which is done by xen_be_init().  To ensure that everything is
ready at the time the xen_backend_init() functions are called,
remove the xen_be_init() function from all the boards and
place it directly in xen_bus_init().

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20240509170044.190795-7-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2024-05-09 19:00:37 +02:00
parent fa5365e8b6
commit 0973996fe4
4 changed files with 5 additions and 7 deletions

View file

@ -1250,7 +1250,6 @@ void pc_basic_device_init(struct PCMachineState *pcms,
pci_create_simple(pcms->pcibus, -1, "xen-platform"); pci_create_simple(pcms->pcibus, -1, "xen-platform");
} }
xen_bus_init(); xen_bus_init();
xen_be_init();
} }
#endif #endif

View file

@ -13,6 +13,7 @@
#include "hw/sysbus.h" #include "hw/sysbus.h"
#include "hw/xen/xen.h" #include "hw/xen/xen.h"
#include "hw/xen/xen-backend.h" #include "hw/xen/xen-backend.h"
#include "hw/xen/xen-legacy-backend.h" /* xen_be_init() */
#include "hw/xen/xen-bus.h" #include "hw/xen/xen-bus.h"
#include "hw/xen/xen-bus-helper.h" #include "hw/xen/xen-bus-helper.h"
#include "monitor/monitor.h" #include "monitor/monitor.h"
@ -329,6 +330,9 @@ static void xen_bus_realize(BusState *bus, Error **errp)
goto fail; goto fail;
} }
/* Initialize legacy backend core & drivers */
xen_be_init();
if (xs_node_scanf(xenbus->xsh, XBT_NULL, "", /* domain root node */ if (xs_node_scanf(xenbus->xsh, XBT_NULL, "", /* domain root node */
"domid", NULL, "%u", &domid) == 1) { "domid", NULL, "%u", &domid) == 1) {
xenbus->backend_id = domid; xenbus->backend_id = domid;

View file

@ -872,8 +872,6 @@ void xen_register_ioreq(XenIOState *state, unsigned int max_cpus,
xen_bus_init(); xen_bus_init();
xen_be_init();
return; return;
err: err:

View file

@ -34,8 +34,7 @@ static void xen_init_pv(MachineState *machine)
{ {
setup_xen_backend_ops(); setup_xen_backend_ops();
/* Initialize backend core & drivers */ xen_bus_init();
xen_be_init();
switch (xen_mode) { switch (xen_mode) {
case XEN_ATTACH: case XEN_ATTACH:
@ -60,8 +59,6 @@ static void xen_init_pv(MachineState *machine)
vga_interface_created = true; vga_interface_created = true;
} }
xen_bus_init();
/* config cleanup hook */ /* config cleanup hook */
atexit(xen_config_cleanup); atexit(xen_config_cleanup);
} }