[PATCH v3 00/10] powerpc/pseries: New character devices for system parameters and VPD

Nathan Lynch nathanl at linux.ibm.com
Fri Oct 27 10:56:36 AEDT 2023

Nathan Lynch via B4 Relay <devnull+nathanl.linux.ibm.com at kernel.org>
> I have made changes to librtas to prefer the new interfaces and
> verified that existing clients work correctly with the new code.

Unfortunately I made a mistake in testing this time and introduced a
boot-time oops:

BUG: Kernel NULL pointer dereference on read at 0x00000018
Faulting instruction address: 0xc00000000004223c
Oops: Kernel access of bad area, sig: 7 [#1]
Modules linked in:
CPU: 0 PID: 0 Comm: swapper Tainted: G        W          6.6.0-rc2+ #129
NIP:  c00000000004223c LR: c000000000042238 CTR: 0000000000000000
REGS: c000000002c579d0 TRAP: 0300   Tainted: G        W           (6.6.0-rc2+)
MSR:  8000000000001033 <SF,ME,IR,DR,RI,LE>  CR: 28000284  XER: 00000000
CFAR: c000000000042008 DAR: 0000000000000018 DSISR: 00080000 IRQMASK: 3 
GPR00: c000000000042238 c000000002c57c70 c000000001f5eb00 0000000000000000 
GPR04: c00000000294cd08 0000000000000002 c000000002c579b4 0000000000000000 
GPR08: 0000000000000000 0000000000000002 c000000002c0da80 0000000000000000 
GPR12: 0000000000000000 c000000005e40000 0000000000000000 0000000002097728 
GPR16: 0000000000001111 0000000000000001 0000000002097b80 00000000020975b8 
GPR20: 00000000020976f0 00000000020974e8 00000000030feb00 00000000030feb00 
GPR24: 0000000000002008 0000000000000000 0000000000000001 c0000000028f3d70 
GPR28: 0000000002d31020 c000000002cac268 c000000002d31020 0000000000000000 
NIP [c00000000004223c] do_enter_rtas+0xcc/0x460
LR [c000000000042238] do_enter_rtas+0xc8/0x460
Call Trace:
[c000000002c57c70] [c000000000042238] do_enter_rtas+0xc8/0x460 (unreliable)
[c000000002c57cc0] [c000000000042e34] rtas_call+0x434/0x490
[c000000002c57d20] [c0000000000fd584] papr_sysparm_get+0xe4/0x230
[c000000002c57db0] [c0000000020267d0] pSeries_probe+0x2f0/0x5fc
[c000000002c57e80] [c00000000200a318] setup_arch+0x11c/0x524
[c000000002c57f10] [c00000000200418c] start_kernel+0xcc/0xc1c
[c000000002c57fe0] [c00000000000e788] start_here_common+0x1c/0x20

This was introduced by patch #4 "powerpc/rtas: Warn if per-function lock
isn't held": __do_enter_rtas() is now attempting token -> descriptor
lookups unconditionally, before the xarray for that has been initialized.

With that change reverted, the series tests OK.

More information about the Linuxppc-dev mailing list