Thread (31 messages) 31 messages, 6 authors, 2015-03-06

[RFC PATCH 0/3] genirq: mixing IRQF_NO_SUSPEND and wakeup sources on shared IRQs

From: Rafael J. Wysocki <hidden>
Date: 2015-02-26 21:32:25
Also in: lkml

On Thursday, February 26, 2015 07:17:24 PM Boris Brezillon wrote:
On Thu, 26 Feb 2015 19:17:03 +0100
"Rafael J. Wysocki" [off-list ref] wrote:
quoted
On Thursday, February 26, 2015 04:47:24 PM Boris Brezillon wrote:
quoted
On Thu, 26 Feb 2015 16:44:16 +0100
"Rafael J. Wysocki" [off-list ref] wrote:
[...]
quoted
quoted
quoted
But it is still a bit risky.  Namely, if the driver in question is sufficiently
broken (eg. it may not suspend the device and rely on the fact that its interrupt
handler will be run just because it is sharing a "no suspend" IRQ), we may get
an interrupt storm.

Isn't that a problem?
For me no (I'll fix all the drivers to handle wakeup, and they are all
already masking interrupts coming from their side in the suspend
callback).
I can't talk for other people though.
The only problem I see here is that you're not informing people that
they are erroneously mixing IRQF_NO_SUSPEND and !IRQF_NO_SUSPEND anymore
(you removed the warning backtrace).
Moreover, you are replacing their handler by a stub when entering
suspend, so they might end-up receiving spurious interrupts when
suspended without knowing why ?

How about checking if the number of actions registered with
IRQF_NO_SUSPEND + those registered with IRQF_COND_SUSPEND (or another
flag stating that the handler can safely be called in suspended state
even if it didn't ask for NO_SUSPEND) are equal to the total number of
registered actions, and complain if it's not the case.
The same idea I had while talking to Peter over IRC.  So the patch below
implements that.
Yep, that's what I had in mind.
OK, thanks.

I'll submit it formally, then.


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help