[Skiboot] [PATCH] xive: Don't double EOI interrupts that have an EOI override
Michael Neuling
mikey at neuling.org
Fri Apr 21 11:59:38 AEST 2017
This is upstream as of 50e1921f98
On Thu, 2017-04-20 at 22:00 +1000, Benjamin Herrenschmidt wrote:
> Some interrupts source such as PSI serirq have a special EOI override.
>
> That override will perform the PQ bit EOI operation, so we must not
> do a second one in xive_source_eoi().
>
> This bug can cause queue overflows, especially when dealing with
> runaway level interrupts.
>
> Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> ---
>
> This fixes the hangs on w18. It doesn't fix the massive slowdowns caused
> by runaway mbox interrupts which I will look into separately.
> hw/xive.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/xive.c b/hw/xive.c
> index 530e0df..1e2648c 100644
> --- a/hw/xive.c
> +++ b/hw/xive.c
> @@ -2531,8 +2531,8 @@ static void xive_source_eoi(struct irq_source *is,
> uint32_t isn)
>
> if (s->orig_ops && s->orig_ops->eoi)
> s->orig_ops->eoi(is, isn);
> -
> - __xive_source_eoi(is, isn);
> + else
> + __xive_source_eoi(is, isn);
> }
>
> static void xive_source_interrupt(struct irq_source *is, uint32_t isn)
>
> _______________________________________________
> Skiboot mailing list
> Skiboot at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/skiboot
More information about the Skiboot
mailing list