[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 19/19] spapr: Work around spurious warnings from vfio INTx
From: |
Greg Kurz |
Subject: |
Re: [PATCH v4 19/19] spapr: Work around spurious warnings from vfio INTx initialization |
Date: |
Wed, 9 Oct 2019 10:37:38 +0200 |
On Wed, 9 Oct 2019 17:08:18 +1100
David Gibson <address@hidden> wrote:
> 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.
>
Can you elaborate on what doesn't "perform well" without an
in-kernel irqchip ? Is it a matter of performance or is it
actually broken or something else ?
What is the impact on -machine accel=kvm,kernel-irqchip=off which
always spit this warning ?
> 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);
- Re: [PATCH v4 17/19] spapr: Remove last pieces of SpaprIrq, (continued)
[PATCH v4 11/19] spapr, xics, xive: Match signatures for XICS and XIVE KVM connect routines, David Gibson, 2019/10/09
[PATCH v4 10/19] spapr, xics, xive: Move dt_populate from SpaprIrq to SpaprInterruptController, 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 06/19] spapr, xics, xive: Move irq claim and free from SpaprIrq to SpaprInterruptController, David Gibson, 2019/10/09
[PATCH v4 19/19] spapr: Work around spurious warnings from vfio INTx initialization, David Gibson, 2019/10/09
- Re: [PATCH v4 19/19] spapr: Work around spurious warnings from vfio INTx initialization,
Greg Kurz <=
Re: [PATCH v4 00/19] spapr: IRQ subsystem cleanup, David Gibson, 2019/10/09
Re: [PATCH v4 00/19] spapr: IRQ subsystem cleanup, Greg Kurz, 2019/10/16