[PATCH] ARM: exynos: Rework system wakeup interrupts initialization
Marek Szyprowski
m.szyprowski at samsung.com
Tue Nov 18 03:50:37 PST 2025
Since commit 1b1f04d8271e ("of/irq: Ignore interrupt parent for nodes
without interrupts") it is not possible to get parent interrupt device
node when no 'interrupts' property is specified. Rework the hack used for
initializing the Exynos system wakeup interrupts (PMU controller is a
proxy for SoC RTC interrupts) to get the parent interrupt node by
manually parsing 'interrupt-parent' property.
Fixes: 8b283c025443 ("ARM: exynos4/5: convert pmu wakeup to stacked domains")
Signed-off-by: Marek Szyprowski <m.szyprowski at samsung.com>
---
This fixes the following boot failure of allmost all ARM 32bit Exynos
boards observed since next-20251118:
/soc/system-controller at 10020000: no parent, giving up
OF: of_irq_init: Failed to init /soc/system-controller at 10020000 ((ptrval)), parent 00000000
...
8<--- cut here ---
Unable to handle kernel paging request at virtual address 00002008 when read
[00002008] *pgd=00000000
Internal error: Oops: 5 [#1] SMP ARM
Modules linked in:
CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1-00026-g1b1f04d8271e #16162 PREEMPT
Hardware name: Samsung Exynos (Flattened Device Tree)
PC is at exynos_set_delayed_reset_assertion+0x5c/0xb0
LR is at exynos_set_delayed_reset_assertion+0x80/0xb0
pc : [<c012b9a4>] lr : [<c012b9c8>] psr: 80000053
...
Process swapper/0 (pid: 1, stack limit = 0x(ptrval))
Stack: (0xf0825f30 to 0xf0826000)
...
Call trace:
exynos_set_delayed_reset_assertion from exynos_smp_prepare_cpus+0x10/0x34
exynos_smp_prepare_cpus from kernel_init_freeable+0x94/0x234
kernel_init_freeable from kernel_init+0x1c/0x12c
kernel_init from ret_from_fork+0x14/0x28
Exception stack(0xf0825fb0 to 0xf0825ff8)
...
---[ end trace 0000000000000000 ]---
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]---
Best regards
Marek Szyprowski, PhD
Samsung R&D Institute Poland
---
arch/arm/mach-exynos/suspend.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/mach-exynos/suspend.c b/arch/arm/mach-exynos/suspend.c
index 44811faaa4b4..02785342e0c7 100644
--- a/arch/arm/mach-exynos/suspend.c
+++ b/arch/arm/mach-exynos/suspend.c
@@ -192,6 +192,7 @@ static int __init exynos_pmu_irq_init(struct device_node *node,
{
struct irq_domain *parent_domain, *domain;
+ parent = of_parse_phandle(node, "interrupt-parent", 0);
if (!parent) {
pr_err("%pOF: no parent, giving up\n", node);
return -ENODEV;
--
2.34.1
More information about the linux-arm-kernel
mailing list