When running suspend/resume feature with below commands:
There is below call trace reported after system is woke up
Call trace:
handle_irq_desc+0x4c/0x68
tegra186_pmc_wake_syscore_resume+0x170/0x1d8
syscore_resume+0x58/0x1c0
suspend_devices_and_enter+0x54c/0x8a0
pm_suspend+0x1f8/0x240
state_store+0x88/0x118
......
el0_svc+0x30/0xf8
el0t_64_sync_handler+0x120/0x138
el0t_64_sync+0x190/0x198
This issue is introduced by commit 0474cc8489bd("soc/tegra: pmc: Process
wake events during resume"). In general, generic_handle_irq() should be
called in interrupt context, so simulate interrupt environment before
invoking it to avoid reporting call tarce.
Signed-off-by: Meng Li <[email protected]>
---
drivers/soc/tegra/pmc.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
index f3e62f75b795..a9dc15ec8a13 100644
--- a/drivers/soc/tegra/pmc.c
+++ b/drivers/soc/tegra/pmc.c
@@ -3390,6 +3390,7 @@ static void tegra186_pmc_process_wake_events(struct
tegra_pmc *pmc, unsigned int
unsigned long status)
{
unsigned int wake;
+ unsigned long flags;
dev_dbg(pmc->dev, "Wake[%d:%d] status=%#lx\n", (index * 32) + 31,
index * 32, status);
@@ -3407,7 +3408,11 @@ static void tegra186_pmc_process_wake_events(struct
tegra_pmc *pmc, unsigned int
}
dev_dbg(pmc->dev, "Resume caused by WAKE%ld, %s\n", hwirq,
desc->action->name);
+ local_irq_save(flags);
+ irq_enter();
generic_handle_irq(irq);
+ irq_exit();
+ local_irq_restore(flags);
}
}
--
2.34.1
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#15971):
https://lists.yoctoproject.org/g/linux-yocto/message/15971
Mute This Topic: https://lists.yoctoproject.org/mt/116271230/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-