hw/xen: Subsume xen_be_register_common() into xen_be_init()
Every caller of xen_be_init() checks and exits on error, then calls xen_be_register_common(). Just make xen_be_init() abort for itself and return void, and register the common devices too. Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Reviewed-by: Paul Durrant <paul@xen.org>
This commit is contained in:
parent
c1eaa6d0df
commit
79807f3e6b
@ -1502,13 +1502,7 @@ void xen_hvm_init_pc(PCMachineState *pcms, MemoryRegion **ram_memory)
|
||||
device_listener_register(&state->device_listener);
|
||||
|
||||
xen_bus_init();
|
||||
|
||||
/* Initialize backend core & drivers */
|
||||
if (xen_be_init() != 0) {
|
||||
error_report("xen backend core setup failed");
|
||||
goto err;
|
||||
}
|
||||
xen_be_register_common();
|
||||
xen_be_init();
|
||||
|
||||
QLIST_INIT(&xen_physmap);
|
||||
xen_read_physmap(state);
|
||||
|
@ -676,21 +676,30 @@ void xenstore_update_fe(char *watch, struct XenLegacyDevice *xendev)
|
||||
}
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
int xen_be_init(void)
|
||||
static void xen_set_dynamic_sysbus(void)
|
||||
{
|
||||
Object *machine = qdev_get_machine();
|
||||
ObjectClass *oc = object_get_class(machine);
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_XENSYSDEV);
|
||||
}
|
||||
|
||||
void xen_be_init(void)
|
||||
{
|
||||
xengnttab_handle *gnttabdev;
|
||||
|
||||
xenstore = xs_daemon_open();
|
||||
if (!xenstore) {
|
||||
xen_pv_printf(NULL, 0, "can't connect to xenstored\n");
|
||||
return -1;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
qemu_set_fd_handler(xs_fileno(xenstore), xenstore_update, NULL, NULL);
|
||||
|
||||
if (xen_xc == NULL || xen_fmem == NULL) {
|
||||
/* Check if xen_init() have been called */
|
||||
goto err;
|
||||
xen_pv_printf(NULL, 0, "Xen operations not set up\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
gnttabdev = xengnttab_open(NULL, 0);
|
||||
@ -706,23 +715,16 @@ int xen_be_init(void)
|
||||
xen_sysbus = qbus_new(TYPE_XENSYSBUS, xen_sysdev, "xen-sysbus");
|
||||
qbus_set_bus_hotplug_handler(xen_sysbus);
|
||||
|
||||
return 0;
|
||||
xen_set_dynamic_sysbus();
|
||||
|
||||
err:
|
||||
qemu_set_fd_handler(xs_fileno(xenstore), NULL, NULL, NULL);
|
||||
xs_daemon_close(xenstore);
|
||||
xenstore = NULL;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void xen_set_dynamic_sysbus(void)
|
||||
{
|
||||
Object *machine = qdev_get_machine();
|
||||
ObjectClass *oc = object_get_class(machine);
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_XENSYSDEV);
|
||||
xen_be_register("console", &xen_console_ops);
|
||||
xen_be_register("vkbd", &xen_kbdmouse_ops);
|
||||
#ifdef CONFIG_VIRTFS
|
||||
xen_be_register("9pfs", &xen_9pfs_ops);
|
||||
#endif
|
||||
#ifdef CONFIG_USB_LIBUSB
|
||||
xen_be_register("qusb", &xen_usb_ops);
|
||||
#endif
|
||||
}
|
||||
|
||||
int xen_be_register(const char *type, struct XenDevOps *ops)
|
||||
@ -744,20 +746,6 @@ int xen_be_register(const char *type, struct XenDevOps *ops)
|
||||
return xenstore_scan(type, xen_domid, ops);
|
||||
}
|
||||
|
||||
void xen_be_register_common(void)
|
||||
{
|
||||
xen_set_dynamic_sysbus();
|
||||
|
||||
xen_be_register("console", &xen_console_ops);
|
||||
xen_be_register("vkbd", &xen_kbdmouse_ops);
|
||||
#ifdef CONFIG_VIRTFS
|
||||
xen_be_register("9pfs", &xen_9pfs_ops);
|
||||
#endif
|
||||
#ifdef CONFIG_USB_LIBUSB
|
||||
xen_be_register("qusb", &xen_usb_ops);
|
||||
#endif
|
||||
}
|
||||
|
||||
int xen_be_bind_evtchn(struct XenLegacyDevice *xendev)
|
||||
{
|
||||
if (xendev->local_port != -1) {
|
||||
|
@ -36,10 +36,7 @@ static void xen_init_pv(MachineState *machine)
|
||||
int i;
|
||||
|
||||
/* Initialize backend core & drivers */
|
||||
if (xen_be_init() != 0) {
|
||||
error_report("%s: xen backend core setup failed", __func__);
|
||||
exit(1);
|
||||
}
|
||||
xen_be_init();
|
||||
|
||||
switch (xen_mode) {
|
||||
case XEN_ATTACH:
|
||||
@ -55,7 +52,6 @@ static void xen_init_pv(MachineState *machine)
|
||||
break;
|
||||
}
|
||||
|
||||
xen_be_register_common();
|
||||
xen_be_register("vfb", &xen_framebuffer_ops);
|
||||
xen_be_register("qnic", &xen_netdev_ops);
|
||||
|
||||
|
@ -42,8 +42,7 @@ 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_init(void);
|
||||
void xen_be_register_common(void);
|
||||
void xen_be_init(void);
|
||||
int xen_be_register(const char *type, struct XenDevOps *ops);
|
||||
int xen_be_set_state(struct XenLegacyDevice *xendev, enum xenbus_state state);
|
||||
int xen_be_bind_evtchn(struct XenLegacyDevice *xendev);
|
||||
|
Loading…
Reference in New Issue
Block a user