Hi Daniel, I see the problem - pnv_eeh_next_error() re-enables the interrupt but it gets called from a loop if there are more outstanding events to process. The most obvious solution would be to do this check before enabling interrupts:
if (ret == EEH_NEXT_ERR_NONE && eeh_enabled()) instead of: if (eeh_enabled()) This should work fine so long as pnv_eeh_next_error() is called continuously until is returns either EEH_NEXT_ERR_NONE or another value which signals that pnv_eeh_next_error() should never be called again. As far as I can tell this looks to be true (perhaps Gavin can confirm?) Would you mind trying the below patch and seeing if it fixes the problem? Thanks! -- >8 -- From 6eeed1d6dd25e8cf6bfe3423dc50ff855d1cbc42 Mon Sep 17 00:00:00 2001 From: Alistair Popple <alist...@popple.id.au> --- arch/powerpc/platforms/powernv/eeh-powernv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/platforms/powernv/eeh-powernv.c b/arch/powerpc/platforms/powernv/eeh-powernv.c index ca825ec..ff41c03 100644 --- a/arch/powerpc/platforms/powernv/eeh-powernv.c +++ b/arch/powerpc/platforms/powernv/eeh-powernv.c @@ -1478,7 +1478,7 @@ static int pnv_eeh_next_error(struct eeh_pe **pe) } /* Unmask the event */ - if (eeh_enabled()) + if (ret == EEH_NEXT_ERR_NONE && eeh_enabled()) enable_irq(eeh_event_irq); return ret; -- 1.8.3.2 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev