Re: [PATCH 1/10] PM: Rework handling of interrupts during suspend-resume (rev. 5)

Rafael J. Wysocki
2009-03-11T21:50:31Z

On Wednesday 11 March 2009, Thomas Gleixner wrote:
> On Wed, 11 Mar 2009, Rafael J. Wysocki wrote:
> > On Wednesday 11 March 2009, Thomas Gleixner wrote:
> > > > + desc->status |= IRQ_SUSPENDED;
> > >
> > > This flag needs to be checked in __enable_irq().
> >
> > [I overlooked this comment, sorry.]
> >
> > Why does it?
>
> To catch abuse and callers of enable_irq() when this flag is set.

Hmm. This means you'd like to make enable_irq() fail if called with
IRQ_SUSPENDED set, correct?

What if someone calls irq_disable() and then irq_enable() between
suspend_device_irqs() and resume_device_irqs()? That would be pointless, but
surely not a bug? Should irq_disable() also fail if IRQ_SUSPENDED is set?

Or should __enable_irq() only fail with IRQ_SUSPENDED set for desc->depth == 1?

Rafael