[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [QEMU][PATCH v4 06/10] hw/xen/xen-hvm-common: skip ioreq creation on ioreq registration failure
On Wed, 25 Jan 2023, Vikram Garhwal wrote: > From: Stefano Stabellini <stefano.stabellini@xxxxxxx> > > On ARM it is possible to have a functioning xenpv machine with only the > PV backends and no IOREQ server. If the IOREQ server creation fails continue > to the PV backends initialization. > > Also, moved the IOREQ registration and mapping subroutine to new function > xen_do_ioreq_register(). > > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxx> > Signed-off-by: Vikram Garhwal <vikram.garhwal@xxxxxxx> as per my previous reply, even though I am listed as co-author, for tracking that I did review this version of the patch: Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> > --- > hw/xen/xen-hvm-common.c | 53 ++++++++++++++++++++++++++++------------- > 1 file changed, 36 insertions(+), 17 deletions(-) > > diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c > index e748d8d423..94dbbe97ed 100644 > --- a/hw/xen/xen-hvm-common.c > +++ b/hw/xen/xen-hvm-common.c > @@ -777,25 +777,12 @@ err: > exit(1); > } > > -void xen_register_ioreq(XenIOState *state, unsigned int max_cpus, > - MemoryListener xen_memory_listener) > +static void xen_do_ioreq_register(XenIOState *state, > + unsigned int max_cpus, > + MemoryListener > xen_memory_listener) > { > int i, rc; > > - state->xce_handle = xenevtchn_open(NULL, 0); > - if (state->xce_handle == NULL) { > - perror("xen: event channel open"); > - goto err; > - } > - > - state->xenstore = xs_daemon_open(); > - if (state->xenstore == NULL) { > - perror("xen: xenstore open"); > - goto err; > - } > - > - xen_create_ioreq_server(xen_domid, &state->ioservid); > - > state->exit.notify = xen_exit_notifier; > qemu_add_exit_notifier(&state->exit); > > @@ -859,12 +846,44 @@ void xen_register_ioreq(XenIOState *state, unsigned int > max_cpus, > QLIST_INIT(&state->dev_list); > device_listener_register(&state->device_listener); > > + return; > + > +err: > + error_report("xen hardware virtual machine initialisation failed"); > + exit(1); > +} > + > +void xen_register_ioreq(XenIOState *state, unsigned int max_cpus, > + MemoryListener xen_memory_listener) > +{ > + int rc; > + > + state->xce_handle = xenevtchn_open(NULL, 0); > + if (state->xce_handle == NULL) { > + perror("xen: event channel open"); > + goto err; > + } > + > + state->xenstore = xs_daemon_open(); > + if (state->xenstore == NULL) { > + perror("xen: xenstore open"); > + goto err; > + } > + > + rc = xen_create_ioreq_server(xen_domid, &state->ioservid); > + if (!rc) { > + xen_do_ioreq_register(state, max_cpus, xen_memory_listener); > + } else { > + warn_report("xen: failed to create ioreq server"); > + } > + > xen_bus_init(); > > xen_register_backend(state); > > return; > + > err: > - error_report("xen hardware virtual machine initialisation failed"); > + error_report("xen hardware virtual machine backend registration failed"); > exit(1); > } > -- > 2.17.0 > >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |