include/hw/xen/xen_common: return error from xen_create_ioreq_server

This is done to prepare for enabling xenpv support for ARM architecture.
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.

Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
Signed-off-by: Vikram Garhwal <vikram.garhwal@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Reviewed-by: Paul Durrant <paul@xen.org>
master
Stefano Stabellini 2023-06-14 17:03:33 -07:00
parent f17068c1c7
commit 420927c218
1 changed files with 5 additions and 3 deletions

View File

@ -463,8 +463,8 @@ static inline void xen_unmap_pcidev(domid_t dom,
PCI_FUNC(pci_dev->devfn)); PCI_FUNC(pci_dev->devfn));
} }
static inline void xen_create_ioreq_server(domid_t dom, static inline int xen_create_ioreq_server(domid_t dom,
ioservid_t *ioservid) ioservid_t *ioservid)
{ {
int rc = xendevicemodel_create_ioreq_server(xen_dmod, dom, int rc = xendevicemodel_create_ioreq_server(xen_dmod, dom,
HVM_IOREQSRV_BUFIOREQ_ATOMIC, HVM_IOREQSRV_BUFIOREQ_ATOMIC,
@ -472,12 +472,14 @@ static inline void xen_create_ioreq_server(domid_t dom,
if (rc == 0) { if (rc == 0) {
trace_xen_ioreq_server_create(*ioservid); trace_xen_ioreq_server_create(*ioservid);
return; return rc;
} }
*ioservid = 0; *ioservid = 0;
use_default_ioreq_server = true; use_default_ioreq_server = true;
trace_xen_default_ioreq_server(); trace_xen_default_ioreq_server();
return rc;
} }
static inline void xen_destroy_ioreq_server(domid_t dom, static inline void xen_destroy_ioreq_server(domid_t dom,