[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 19/19] spapr: Work around spurious warnings from vfio INTx ini
From: |
David Gibson |
Subject: |
[PATCH v4 19/19] spapr: Work around spurious warnings from vfio INTx initialization |
Date: |
Wed, 9 Oct 2019 17:08:18 +1100 |
Traditional PCI INTx for vfio devices can only perform well if using
an in-kernel irqchip. Therefore, vfio_intx_update() issues a warning
if an in kernel irqchip is not available.
We usually do have an in-kernel irqchip available for pseries machines
on POWER hosts. However, because the platform allows feature
negotiation of what interrupt controller model to use, we don't
currently initialize it until machine reset. vfio_intx_update() is
called (first) from vfio_realize() before that, so it can issue a
spurious warning, even if we will have an in kernel irqchip by the
time we need it.
To workaround this, make a call to spapr_irq_update_active_intc() from
spapr_irq_init() which is called at machine realize time, before the
vfio realize. This call will be pretty much obsoleted by the later
call at reset time, but it serves to suppress the spurious warning
from VFIO.
Cc: Alex Williamson <address@hidden>
Cc: Alexey Kardashevskiy <address@hidden>
Signed-off-by: David Gibson <address@hidden>
---
hw/ppc/spapr_irq.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c
index 7964e4a1b8..3aeb523f3e 100644
--- a/hw/ppc/spapr_irq.c
+++ b/hw/ppc/spapr_irq.c
@@ -274,6 +274,14 @@ void spapr_irq_init(SpaprMachineState *spapr, Error **errp)
spapr->qirqs = qemu_allocate_irqs(spapr_set_irq, spapr,
smc->nr_xirqs + SPAPR_XIRQ_BASE);
+
+ /*
+ * Mostly we don't actually need this until reset, except that not
+ * having this set up can cause VFIO devices to issue a
+ * false-positive warning during realize(), because they don't yet
+ * have an in-kernel irq chip.
+ */
+ spapr_irq_update_active_intc(spapr);
}
int spapr_irq_claim(SpaprMachineState *spapr, int irq, bool lsi, Error **errp)
@@ -429,7 +437,8 @@ void spapr_irq_update_active_intc(SpaprMachineState *spapr)
* this.
*/
new_intc = SPAPR_INTC(spapr->xive);
- } else if (spapr_ovec_test(spapr->ov5_cas, OV5_XIVE_EXPLOIT)) {
+ } else if (spapr->ov5_cas
+ && spapr_ovec_test(spapr->ov5_cas, OV5_XIVE_EXPLOIT)) {
new_intc = SPAPR_INTC(spapr->xive);
} else {
new_intc = SPAPR_INTC(spapr->ics);
--
2.21.0
- [PATCH v4 03/19] target/ppc: Fix for optimized vsl/vsr instructions, (continued)
- [PATCH v4 03/19] target/ppc: Fix for optimized vsl/vsr instructions, David Gibson, 2019/10/09
- [PATCH v4 12/19] spapr: Remove SpaprIrq::init_kvm hook, David Gibson, 2019/10/09
- [PATCH v4 18/19] spapr: Handle irq backend changes with VFIO PCI devices, David Gibson, 2019/10/09
- [PATCH v4 06/19] spapr, xics, xive: Move irq claim and free from SpaprIrq to SpaprInterruptController, David Gibson, 2019/10/09
- [PATCH v4 14/19] spapr, xics, xive: Move SpaprIrq::post_load hook to backends, David Gibson, 2019/10/09
- [PATCH v4 16/19] spapr: Move SpaprIrq::nr_xirqs to SpaprMachineClass, David Gibson, 2019/10/09
- [PATCH v4 05/19] spapr, xics, xive: Move cpu_intc_create from SpaprIrq to SpaprInterruptController, David Gibson, 2019/10/09
- [PATCH v4 19/19] spapr: Work around spurious warnings from vfio INTx initialization,
David Gibson <=
[PATCH v4 15/19] spapr: Remove SpaprIrq::nr_msis, David Gibson, 2019/10/09
[PATCH v4 01/19] xive: Make some device types not user creatable, David Gibson, 2019/10/09
[PATCH v4 08/19] spapr, xics, xive: Move set_irq from SpaprIrq to SpaprInterruptController, David Gibson, 2019/10/09