Messages in this thread |  | | | Date | Wed, 11 Mar 2009 23:45:48 +0100 (CET) | | From | Thomas Gleixner <> | | Subject | Re: [PATCH 1/10] PM: Rework handling of interrupts during suspend-resume (rev. 5) |
| |
On Wed, 11 Mar 2009, Thomas Gleixner wrote: > On Wed, 11 Mar 2009, Rafael J. Wysocki wrote: > > On Wednesday 11 March 2009, Thomas Gleixner wrote: > > > > +EXPORT_SYMBOL_GPL(suspend_device_irqs); > > > > > > I'm not too enthusiastic about this open coded implementation of > > > disable_irq() with slightly different semantics. > > > > The difference in semantics is important IMO, otherwise I woulndn't have > > done that. In particular, IMO, the condition should be under the spinlock IMO > > and I'd rather not synchronize all interrupts we don't really disable here. > > I don't say that the difference is not relevant. But the code is > almost the same and disable_irq() could have the sync_irq optimization > as well.
Thought more about that. Avoiding the sync_irq() for irqs which have no action associated is fine, but you need to catch the following case as well:
driver code calls disable_irq_nosyc() from the handler (which is still running)
suspend code skips the sync due to depth > 0 The sync operation is not that expensive.
Thanks,
tglx
|  |