Re: [PATCH] ARM: integrator: Fix early initialization

Guenter Roeck <[email protected]>
Newsgroups dev.linux.lists.soc,org.infradead.lists.linux-arm-kernel
Message-ID <[email protected]>
On 5/5/26 12:15, Linus Walleij wrote:
> From: Guenter Roeck <[email protected]>
> 
> Starting with commit bdb249fce9ad4 ("ARM: integrator: read counter using
> syscon/regmap"), intcp_init_early calls syscon_regmap_lookup_by_compatible
> which in turn calls of_syscon_register. This function allocates memory.
> Since the memory management code has not been initialized at that time,
> the call always fails. It either returns -ENOMEM or crashes as follows.
> 
> Unable to handle kernel NULL pointer dereference at virtual address 0000000c when read
> [0000000c] *pgd=00000000
> Internal error: Oops: 5 [#1] ARM
> Modules linked in:
> CPU: 0 UID: 0 PID: 0 Comm: swapper Not tainted 6.15.0-rc5-00026-g5fcc9bf84ee5 #1 PREEMPT
> Hardware name: ARM Integrator/CP (Device Tree)
> PC is at __kmalloc_cache_noprof+0xec/0x39c
> LR is at __kmalloc_cache_noprof+0x34/0x39c
> ...
> Call trace:
>   __kmalloc_cache_noprof from of_syscon_register+0x7c/0x310
>   of_syscon_register from device_node_get_regmap+0xa4/0xb0
>   device_node_get_regmap from intcp_init_early+0xc/0x40
>   intcp_init_early from start_kernel+0x60/0x688
>   start_kernel from 0x0
> 
> The crash is seen due to a dereferenced pointer which is not supposed to be
> NULL but is NULL if the memory management subsystem has not been
> initialized. The crash is not seen with all versions of gcc. Some versions
> such as gcc 9.x apparently do not dereference the pointer, presumably if
> tracing is disabled. The problem has been reproduced with gcc 10.x, 11.x,
> and 13.x. Either case, if the crash is not seen, the call to
> syscon_regmap_lookup_by_compatible returns -ENOMEM, and
> sched_clock_register is never called.
> 
> Fix the problem by moving the early initialization code into the standard
> machine initialization code.
> 
> Fixes: bdb249fce9ad4 ("ARM: integrator: read counter using syscon/regmap")
> Cc: Linus Walleij <[email protected]>
> Signed-off-by: Guenter Roeck <[email protected]>
> Link: https://lore.kernel.org/[email protected]
> Signed-off-by: Linus Walleij <[email protected]>
> ---
> Hi SoC folks, please apply this directly for fixes.
> Got stuck on a sideways branch for way too long.

I actually stopped testing the integratorcp qemu emulation
because it no longer works reliably, not even with gcc 9.x,
since the timer-sp804 patches were applied.

Given that apparently no one but me ever hit that problem,
I wonder if it is time to remove support for that machine entirely.

Guenter
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.