Re: [PATCH 1/2] pinctrl: mediatek: Ignore interrupts that are wake only during resume
From: Linus Walleij <hidden>
Date: 2019-06-25 13:51:05
Also in:
linux-gpio, linux-mediatek, lkml
From: Linus Walleij <hidden>
Date: 2019-06-25 13:51:05
Also in:
linux-gpio, linux-mediatek, lkml
On Mon, Apr 29, 2019 at 5:55 AM Nicolas Boichat [off-list ref] wrote:
Before suspending, mtk-eint would set the interrupt mask to the
one in wake_mask. However, some of these interrupts may not have a
corresponding interrupt handler, or the interrupt may be disabled.
On resume, the eint irq handler would trigger nevertheless,
and irq/pm.c:irq_pm_check_wakeup would be called, which would
try to call irq_disable. However, if the interrupt is not enabled
(irqd_irq_disabled(&desc->irq_data) is true), the call does nothing,
and the interrupt is left enabled in the eint driver.
Especially for level-sensitive interrupts, this will lead to an
interrupt storm on resume.
If we detect that an interrupt is only in wake_mask, but not in
cur_mask, we can just mask it out immediately (as mtk_eint_resume
would do anyway at a later stage in the resume sequence, when
restoring cur_mask).
Fixes: bf22ff45bed ("genirq: Avoid unnecessary low level irq function calls")
Signed-off-by: Nicolas Boichat <redacted>Patch applied for fixes. Hm a late ACK made me miss this, sorry. Yours, Linus Walleij _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel