2024-04-24 08:43:27

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: boot failure after merge of the modules tree

Hi all,

After merging the modules tree, today's linux-next boot (powerpc
pseries_le_defconfig) failed like this:

BUG: Kernel NULL pointer dereference at 0x00000030
Faulting instruction address: 0xc00000000057a4ec
Oops: Kernel access of bad area, sig: 11 [#1]
LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
Modules linked in:
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.9.0-rc5-08179-ga5ea707d10dc #1
Hardware name: IBM pSeries (emulated by qemu) POWER8 (raw) 0x4d0200 0xf000004 of:SLOF,HEAD pSeries
NIP: c00000000057a4ec LR: c0000000002cd32c CTR: c0000000002cd304
REGS: c000000004997700 TRAP: 0380 Not tainted (6.9.0-rc5-08179-ga5ea707d10dc)
MSR: 8000000002009033 <SF,VEC,EE,ME,IR,DR,RI,LE> CR: 84002484 XER: 20000000
CFAR: c0000000002cd328 IRQMASK: 0
GPR00: c0000000002cd32c c0000000049979a0 c00000000163a500 0000000000010000
GPR04: 0000000000010000 0000000000004000 0000000000000000 0000000000002cc0
GPR08: 0000000000000030 0000000000000100 ffffffffffffffff 0000000000002000
GPR12: c0000000002cd304 c000000002b70000 c00000000001111c 0000000000000000
GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR20: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR24: 0000000000000000 0000000000000000 c000000002aa0940 c0000000026c0a40
GPR28: 0000000000010000 c0000000002cd32c 0000000000000030 c0000000027d0f78
NIP [c00000000057a4ec] execmem_alloc+0x5c/0x12c
LR [c0000000002cd32c] alloc_insn_page+0x28/0x70
Call Trace:
[c000000004997a40] [c0000000002cd32c] alloc_insn_page+0x28/0x70
[c000000004997a60] [c0000000002d07a4] __get_insn_slot+0x1cc/0x29c
[c000000004997aa0] [c00000000005c434] arch_prepare_kprobe+0xbc/0x31c
[c000000004997b20] [c0000000002d1b40] register_kprobe+0x54c/0x878
[c000000004997b90] [c000000002018828] arch_init_kprobes+0x28/0x40
[c000000004997bb0] [c00000000204b33c] init_kprobes+0x138/0x218
[c000000004997c30] [c000000000010da8] do_one_initcall+0x80/0x2f8
[c000000004997d00] [c000000002005aa8] kernel_init_freeable+0x1f8/0x520
[c000000004997de0] [c000000000011148] kernel_init+0x34/0x26c
[c000000004997e50] [c00000000000debc] ret_from_kernel_user_thread+0x14/0x1c
--- interrupt: 0 at 0x0
Code: fbe1fff8 3940ffff 38e02cc0 7c9c2378 7fa802a6 e8c91e48 f8010010 fb41ffd0 39200100 fb61ffd8 f821ff61 7fc64214 <7ca6402a> eb5e0020 837e0028 e8de0008
---[ end trace 0000000000000000 ]---

note: swapper/0[1] exited with irqs disabled
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

Bisected to commit

18da532eefc8 ("mm/execmem, arch: convert remaining overrides of module_alloc to execmem")

I have used the modules tree from next-20240423 for today.

This is a qemu boot test using:

qemu-system-ppc64 -M pseries -cpu POWER8 -m 2G -vga none -nographic -kernel ~/next/powerpc_pseries_le_defconfig/vmlinux -initrd ./ppc64le-rootfs.cpio.gz

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2024-04-24 09:17:19

by Mike Rapoport

[permalink] [raw]
Subject: Re: linux-next: boot failure after merge of the modules tree

On Wed, Apr 24, 2024 at 06:35:03PM +1000, Stephen Rothwell wrote:
> Hi all,
>
> After merging the modules tree, today's linux-next boot (powerpc
> pseries_le_defconfig) failed like this:
>
> BUG: Kernel NULL pointer dereference at 0x00000030
> Faulting instruction address: 0xc00000000057a4ec
> Oops: Kernel access of bad area, sig: 11 [#1]
> LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
> Modules linked in:
> CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.9.0-rc5-08179-ga5ea707d10dc #1
> Hardware name: IBM pSeries (emulated by qemu) POWER8 (raw) 0x4d0200 0xf000004 of:SLOF,HEAD pSeries
> NIP: c00000000057a4ec LR: c0000000002cd32c CTR: c0000000002cd304
> REGS: c000000004997700 TRAP: 0380 Not tainted (6.9.0-rc5-08179-ga5ea707d10dc)
> MSR: 8000000002009033 <SF,VEC,EE,ME,IR,DR,RI,LE> CR: 84002484 XER: 20000000
> CFAR: c0000000002cd328 IRQMASK: 0
> GPR00: c0000000002cd32c c0000000049979a0 c00000000163a500 0000000000010000
> GPR04: 0000000000010000 0000000000004000 0000000000000000 0000000000002cc0
> GPR08: 0000000000000030 0000000000000100 ffffffffffffffff 0000000000002000
> GPR12: c0000000002cd304 c000000002b70000 c00000000001111c 0000000000000000
> GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> GPR20: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> GPR24: 0000000000000000 0000000000000000 c000000002aa0940 c0000000026c0a40
> GPR28: 0000000000010000 c0000000002cd32c 0000000000000030 c0000000027d0f78
> NIP [c00000000057a4ec] execmem_alloc+0x5c/0x12c
> LR [c0000000002cd32c] alloc_insn_page+0x28/0x70
> Call Trace:
> [c000000004997a40] [c0000000002cd32c] alloc_insn_page+0x28/0x70
> [c000000004997a60] [c0000000002d07a4] __get_insn_slot+0x1cc/0x29c
> [c000000004997aa0] [c00000000005c434] arch_prepare_kprobe+0xbc/0x31c
> [c000000004997b20] [c0000000002d1b40] register_kprobe+0x54c/0x878
> [c000000004997b90] [c000000002018828] arch_init_kprobes+0x28/0x40
> [c000000004997bb0] [c00000000204b33c] init_kprobes+0x138/0x218
> [c000000004997c30] [c000000000010da8] do_one_initcall+0x80/0x2f8
> [c000000004997d00] [c000000002005aa8] kernel_init_freeable+0x1f8/0x520
> [c000000004997de0] [c000000000011148] kernel_init+0x34/0x26c
> [c000000004997e50] [c00000000000debc] ret_from_kernel_user_thread+0x14/0x1c
> --- interrupt: 0 at 0x0
> Code: fbe1fff8 3940ffff 38e02cc0 7c9c2378 7fa802a6 e8c91e48 f8010010 fb41ffd0 39200100 fb61ffd8 f821ff61 7fc64214 <7ca6402a> eb5e0020 837e0028 e8de0008
> ---[ end trace 0000000000000000 ]---
>
> note: swapper/0[1] exited with irqs disabled
> Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
>
> Bisected to commit
>
> 18da532eefc8 ("mm/execmem, arch: convert remaining overrides of module_alloc to execmem")
>
> I have used the modules tree from next-20240423 for today.
>
> This is a qemu boot test using:
>
> qemu-system-ppc64 -M pseries -cpu POWER8 -m 2G -vga none -nographic -kernel ~/next/powerpc_pseries_le_defconfig/vmlinux -initrd ./ppc64le-rootfs.cpio.gz

This should fix it for now, I'll rework initialization a bit in v6

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 1c4be3373686..bea33bf538e9 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -176,6 +176,7 @@ config PPC
select ARCH_WANT_IRQS_OFF_ACTIVATE_MM
select ARCH_WANT_LD_ORPHAN_WARN
select ARCH_WANT_OPTIMIZE_DAX_VMEMMAP if PPC_RADIX_MMU
+ select ARCH_WANTS_EXECMEM_EARLY if EXECMEM
select ARCH_WANTS_MODULES_DATA_IN_VMALLOC if PPC_BOOK3S_32 || PPC_8xx
select ARCH_WEAK_RELEASE_ACQUIRE
select BINFMT_ELF


> --
> Cheers,
> Stephen Rothwell

--
Sincerely yours,
Mike.

2024-04-26 06:36:26

by Stephen Rothwell

[permalink] [raw]
Subject: Re: linux-next: boot failure after merge of the modules tree

Hi Mike,

On Wed, 24 Apr 2024 12:14:49 +0300 Mike Rapoport <[email protected]> wrote:
>
> This should fix it for now, I'll rework initialization a bit in v6
>
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 1c4be3373686..bea33bf538e9 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -176,6 +176,7 @@ config PPC
> select ARCH_WANT_IRQS_OFF_ACTIVATE_MM
> select ARCH_WANT_LD_ORPHAN_WARN
> select ARCH_WANT_OPTIMIZE_DAX_VMEMMAP if PPC_RADIX_MMU
> + select ARCH_WANTS_EXECMEM_EARLY if EXECMEM
> select ARCH_WANTS_MODULES_DATA_IN_VMALLOC if PPC_BOOK3S_32 || PPC_8xx
> select ARCH_WEAK_RELEASE_ACQUIRE
> select BINFMT_ELF

I added the above to today's merge of the modules tree and it made the
boot failure go away.

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature