The irqsteer's runtime PM has to be enabled otherwise the probe of some devices (such as dpu) will fail because of the failure of irq_chip_pm_get(). But we can't allow the irqsteer to really enter the suspend state because it will break the kdump with a call trace like below.
Internal error: synchronous external abort: 96000210 [#1] PREEMPT SMP Modules linked in: sch_fq_codel CPU: 3 PID: 3772 Comm: sh Kdump: loaded Not tainted 5.4.87-yocto-standard #1 Hardware name: Freescale i.MX8QM MEK (DT) pstate: 40000085 (nZcv daIf -PAN -UAO) pc : imx_irqsteer_irq_mask+0x50/0x90 lr : imx_irqsteer_irq_mask+0x40/0x90 sp : ffff800014b7b9e0 x29: ffff800014b7b9e0 x28: ffff0008e5800000 x27: 0000000000000000 x26: 0000000000000000 x25: 0000000000000007 x24: ffff800011513398 x23: ffff800014b7ba88 x22: ffff0008ef1fadd8 x21: ffff0008ef1fac80 x20: ffff0008eecd8858 x19: 0000000000000001 x18: 0000000000000020 x17: 0000000000000000 x16: 0000000000000000 x15: ffff0008e5800470 x14: 0000000080000085 x13: ffff800010192a48 x12: ffff800011ed8000 x11: ffff800011ed8b50 x10: 00000000000c01d2 x9 : 000000002769dc82 x8 : 00000000000084ab x7 : ffff800011ed8b68 x6 : 0000000000000001 x5 : 0000000016f0f41b x4 : 8888888888888889 x3 : ffff800013677000 x2 : ffff800013677004 x1 : 0000000000000080 x0 : 0000000000000080 Call trace: imx_irqsteer_irq_mask+0x50/0x90 machine_crash_shutdown+0xb4/0x10c __crash_kexec+0x78/0x12c panic+0x180/0x370 sysrq_handle_reboot+0x0/0x3c __handle_sysrq+0xf0/0x1d0 write_sysrq_trigger+0xac/0xcc proc_reg_write+0x8c/0x110 __vfs_write+0x4c/0x90 vfs_write+0xe8/0x1d0 ksys_write+0x7c/0x104 __arm64_sys_write+0x28/0x3c el0_svc_common.constprop.0+0x7c/0x1b4 el0_svc_handler+0x54/0xc0 el0_svc+0x8/0x204 Code: f94092a3 531e7662 aa0003e1 8b22c062 (b9400040) So enable the runtime PM with pm_runtime_enable(), but block the suspend of irqsteer with pm_runtime_forbid(). Signed-off-by: Xiaolei Wang <[email protected]> Signed-off-by: Bruce Ashfield <[email protected]> --- drivers/irqchip/irq-imx-irqsteer.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/irqchip/irq-imx-irqsteer.c b/drivers/irqchip/irq-imx-irqsteer.c index a5165579bed1..df6c37c3e8e7 100644 --- a/drivers/irqchip/irq-imx-irqsteer.c +++ b/drivers/irqchip/irq-imx-irqsteer.c @@ -298,6 +298,8 @@ static int imx_irqsteer_probe(struct platform_device *pdev) platform_set_drvdata(pdev, data); pm_runtime_enable(&pdev->dev); + pm_runtime_forbid(&pdev->dev); + return 0; out: clk_disable_unprepare(data->ipg_clk); -- 2.25.1
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#11286): https://lists.yoctoproject.org/g/linux-yocto/message/11286 Mute This Topic: https://lists.yoctoproject.org/mt/91008124/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
