[PATCH] powerpc/mpic: supply a .disable callback

Dongsheng.Wang at freescale.com Dongsheng.Wang at freescale.com
Tue Jan 7 21:18:10 EST 2014

> -----Original Message-----
> From: Benjamin Herrenschmidt [mailto:benh at kernel.crashing.org]
> Sent: Tuesday, January 07, 2014 1:50 PM
> To: Wang Dongsheng-B40534
> Cc: Wood Scott-B07421; linuxppc-dev at lists.ozlabs.org
> Subject: Re: [PATCH] powerpc/mpic: supply a .disable callback
> On Tue, 2014-01-07 at 13:38 +0800, Dongsheng Wang wrote:
> > From: Wang Dongsheng <dongsheng.wang at freescale.com>
> >
> > Currently MPIC provides .mask, but not .disable.  This means that
> > effectively disable_irq() soft-disables the interrupt, and you get
> > a .mask call if an interrupt actually occurs.
> >
> > I'm not sure if this was intended as a performance benefit (it seems common
> > to omit .disable on powerpc interrupt controllers, but nowhere else), but it
> > interacts badly with threaded/workqueue interrupts (including KVM
> > reflection).  In such cases, where the real interrupt handler does a
> > disable_irq_nosync(), schedules defered handling, and returns, we get two
> > interrupts for every real interrupt.  The second interrupt does nothing
> > but see that IRQ_DISABLED is set, and decide that it would be a good
> > idea to actually call .mask.
> We probably don't want to do that for edge, only level interrupts.
Sorry Ben, I am not understand your comments.

This issue is the kernel api irq_disable() only use chip->irq_disable(), but mpic
not have this interface so we don't real disable the interrupt.


> Cheers,
> Ben.

More information about the Linuxppc-dev mailing list