Re: [RFC][PATCH 2/2] PM: Rework handling of interrupts during suspend-resume

Ingo Molnar
2009-02-26T03:00:50Z

* Linus Torvalds <torvalds@linux-foundation.org> wrote:

>
>
> On Wed, 25 Feb 2009, Arve Hjønnevåg wrote:
> >
> > On the msm platform the keyboard driver currently leave the interrupts
> > enabled when suspended. If the interrupt handler is called, we use a
> > wakelock to abort suspend (without wakelocks you would need to set a
> > flag and abort in suspend_late instead). If the interrupt occurs after
> > local_irq_disable, it will still be pending when we get to the suspend
> > enter hook and suspend will be aborted there.
> >
> > As far as I can tell, this change breaks this. If you press a key at
> > the right time, it will be ignored.
>
> Is the irq on a private non-shared interrupt line? If so, you
> could just mark it as IRQF_TIMER, and the irq disable logic
> won't touch it.

Hm, if that solves the problem then it would be nice to have a
new IRQF_NO_SUSPEND flag for it, in addition to IRQF_TIMER:

./interrupt.h: * IRQF_TIMER - Flag to mark this interrupt as timer interrupt
./interrupt.h:#define IRQF_TIMER 0x00000200

to express such quirks cleanly.

and the suspend code can check the (IRQF_TIMER |
IRQF_NO_SUSPEND) mask - so no extra cost.

Right now we have a clean enumeration of timer interrupts, would
be nice to keep that.

Ingo