Message ID | 1492689640.25766.147.camel@kernel.crashing.org |
---|---|
State | Accepted |
Headers | show |
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@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@lists.ozlabs.org > https://lists.ozlabs.org/listinfo/skiboot
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)
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@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(-)