On 12/04/2015 12:54 PM, Sudeep Holla wrote:
Hi Grygorii,
On 04/12/15 10:44, Grygorii Strashko wrote:
On 12/03/2015 11:37 PM, Tony Lindgren wrote:
[...]
And these both need to be applied together when we have a fix for the
above
as otherwise we'll get the lock recursion Sudeep mentioned in patch 2/2.
Most probably below diff will fix above issue:
diff --git a/arch/arm/mach-omap2/prm_common.c
b/arch/arm/mach-omap2/prm_common.c
index 3fc2cbe..69cde67 100644
--- a/arch/arm/mach-omap2/prm_common.c
+++ b/arch/arm/mach-omap2/prm_common.c
@@ -338,6 +338,7 @@ int omap_prcm_register_chain_handler(struct
omap_prcm_irq_setup *irq_setup)
ct->chip.irq_ack = irq_gc_ack_set_bit;
ct->chip.irq_mask = irq_gc_mask_clr_bit;
ct->chip.irq_unmask = irq_gc_mask_set_bit;
+ ct->chip.flags = IRQCHIP_SKIP_SET_WAKE;
Thanks for testing.
Sry, I've not tested it yet - it's just fast assumption :(
In that case without this hunk, we should get error
from pcs_irq_set_wake in the suspend path. No ? May be driver is not
checking the error value and entering suspend.
Yep. Noone is checking return result from enable_irq_wake() in suspend path
(see dev_pm_arm_wake_irq()).
Actually, return result of enable_irq_wake() is checked only in ~30% of
cases in kernel now :)