hw/xen: xenpvh: Disable buffered IOREQs for ARM

Add a way to enable/disable buffered IOREQs for PVH machines
and disable them for ARM. ARM does not support buffered
IOREQ's nor the legacy way to map IOREQ info pages.

See the following for more details:
https://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=2fbd7e609e1803ac5e5c26e22aa8e4b5a6cddbb1
https://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=xen/arch/arm/ioreq.c;h=2e829d2e7f3760401b96fa7c930e2015fb1cf463;hb=HEAD#l138

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
This commit is contained in:
Edgar E. Iglesias 2024-09-05 01:00:36 +02:00
parent b2150e403a
commit cb988a10f6
4 changed files with 10 additions and 1 deletions

View File

@ -66,6 +66,9 @@ static void xen_arm_machine_class_init(ObjectClass *oc, void *data)
*/
mc->max_cpus = GUEST_MAX_VCPUS;
/* Xen/ARM does not use buffered IOREQs. */
xpc->handle_bufioreq = HVM_IOREQSRV_BUFIOREQ_OFF;
/* List of supported features known to work on PVH ARM. */
xpc->has_tpm = true;
xpc->has_virtio_mmio = true;

View File

@ -89,6 +89,9 @@ static void xen_pvh_machine_class_init(ObjectClass *oc, void *data)
/* We have an implementation specific init to create CPU objects. */
xpc->init = xen_pvh_init;
/* Enable buffered IOREQs. */
xpc->handle_bufioreq = HVM_IOREQSRV_BUFIOREQ_ATOMIC;
/*
* PCI INTX routing.
*

View File

@ -195,7 +195,7 @@ static void xen_pvh_init(MachineState *ms)
xen_pvh_init_ram(s, sysmem);
xen_register_ioreq(&s->ioreq, ms->smp.max_cpus,
HVM_IOREQSRV_BUFIOREQ_ATOMIC,
xpc->handle_bufioreq,
&xen_memory_listener);
if (s->cfg.virtio_mmio_num) {

View File

@ -43,6 +43,9 @@ struct XenPVHMachineClass {
*/
int (*set_pci_link_route)(uint8_t line, uint8_t irq);
/* Allow implementations to optionally enable buffered ioreqs. */
uint8_t handle_bufioreq;
/*
* Each implementation can optionally enable features that it
* supports and are known to work.