aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdgar E. Iglesias <edgar.iglesias@amd.com>2024-09-05 01:00:36 +0200
committerEdgar E. Iglesias <edgar.iglesias@amd.com>2024-10-03 19:37:35 +0200
commitcb988a10f6958e0d5779dee6f820cb04208106b0 (patch)
tree43ddf2d2294a45229c3c8a24182f2847dfff2dc4
parentb2150e403a015762e716684a17426a9532e4af15 (diff)
downloadqemu-cb988a10f6958e0d5779dee6f820cb04208106b0.zip
qemu-cb988a10f6958e0d5779dee6f820cb04208106b0.tar.gz
qemu-cb988a10f6958e0d5779dee6f820cb04208106b0.tar.bz2
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>
-rw-r--r--hw/arm/xen-pvh.c3
-rw-r--r--hw/i386/xen/xen-pvh.c3
-rw-r--r--hw/xen/xen-pvh-common.c2
-rw-r--r--include/hw/xen/xen-pvh-common.h3
4 files changed, 10 insertions, 1 deletions
diff --git a/hw/arm/xen-pvh.c b/hw/arm/xen-pvh.c
index 04cb985..28af391 100644
--- a/hw/arm/xen-pvh.c
+++ b/hw/arm/xen-pvh.c
@@ -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;
diff --git a/hw/i386/xen/xen-pvh.c b/hw/i386/xen/xen-pvh.c
index 4564566..f1f02d3 100644
--- a/hw/i386/xen/xen-pvh.c
+++ b/hw/i386/xen/xen-pvh.c
@@ -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.
*
diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c
index 08641fd..76a9b2b 100644
--- a/hw/xen/xen-pvh-common.c
+++ b/hw/xen/xen-pvh-common.c
@@ -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) {
diff --git a/include/hw/xen/xen-pvh-common.h b/include/hw/xen/xen-pvh-common.h
index bc09eea..5cdd23c 100644
--- a/include/hw/xen/xen-pvh-common.h
+++ b/include/hw/xen/xen-pvh-common.h
@@ -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.