[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