[PATCH] ARM: exynos: Rework system wakeup interrupts initialization

Geert Uytterhoeven geert at linux-m68k.org
Tue Nov 18 05:21:53 PST 2025


Hi Marek,

CC Robh

On Tue, 18 Nov 2025 at 12:50, Marek Szyprowski <m.szyprowski at samsung.com> wrote:
> 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>

Thanks for your patch!

> ---
> 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

Oops...

> ...
> 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;
>

Perhaps add a check:

    if (!parent)

just in case any of the pmu system controllers ever gets a real
interrupts or interrupts-extended property?

> +       parent = of_parse_phandle(node, "interrupt-parent", 0);

Or of_irq_find_parent(node)?

>         if (!parent) {
>                 pr_err("%pOF: no parent, giving up\n", node);
>                 return -ENODEV;

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds



More information about the linux-arm-kernel mailing list