summaryrefslogtreecommitdiff
path: root/drivers/idle
diff options
context:
space:
mode:
authorNicolas Boichat <drinkcat@chromium.org>2019-04-29 11:55:14 +0800
committerLinus Walleij <linus.walleij@linaro.org>2019-06-26 16:09:50 +0200
commit35594bc7cecf3a78504b590e350570e8f4d7779e (patch)
tree8c936b1d05dae686097e53f3a7464a57e5c748ea /drivers/idle
parent4b36082e2e09c2769710756390d54cfca563ed96 (diff)
pinctrl: mediatek: Ignore interrupts that are wake only during resume
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: bf22ff45bed6 ("genirq: Avoid unnecessary low level irq function calls") Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Acked-by: Sean Wang <sean.wang@kernel.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/idle')
0 files changed, 0 insertions, 0 deletions