eeh-powernv.c: Unbalanced IRQ warning
Gavin Shan
gwshan at linux.vnet.ibm.com
Tue Jul 28 11:28:32 AEST 2015
On Tue, Jul 28, 2015 at 11:14:51AM +1000, Alistair Popple wrote:
>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?)
>
Yeah, I confirmed. The way that Alistair fixes the issue is simple and more
precise. Please try his fix and ignore the one I sent couple of minutes
before.
Thanks,
Gavin
>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 <alistair at 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
>
>
More information about the Linuxppc-dev
mailing list