Skip to content

Commit c760dcf

Browse files
nathanlynchnaushir
authored andcommitted
powerpc/rtas: use correct function name for resetting TCE tables
[ Upstream commit fad87db ] The PAPR spec spells the function name as "ibm,reset-pe-dma-windows" but in practice firmware uses the singular form: "ibm,reset-pe-dma-window" in the device tree. Since we have the wrong spelling in the RTAS function table, reverse lookups (token -> name) fail and warn: unexpected failed lookup for token 86 WARNING: CPU: 1 PID: 545 at arch/powerpc/kernel/rtas.c:659 __do_enter_rtas_trace+0x2a4/0x2b4 CPU: 1 PID: 545 Comm: systemd-udevd Not tainted 6.8.0-rc4 raspberrypi#30 Hardware name: IBM,9105-22A POWER10 (raw) 0x800200 0xf000006 of:IBM,FW1060.00 (NL1060_028) hv:phyp pSeries NIP [c0000000000417f0] __do_enter_rtas_trace+0x2a4/0x2b4 LR [c0000000000417ec] __do_enter_rtas_trace+0x2a0/0x2b4 Call Trace: __do_enter_rtas_trace+0x2a0/0x2b4 (unreliable) rtas_call+0x1f8/0x3e0 enable_ddw.constprop.0+0x4d0/0xc84 dma_iommu_dma_supported+0xe8/0x24c dma_set_mask+0x5c/0xd8 mlx5_pci_init.constprop.0+0xf0/0x46c [mlx5_core] probe_one+0xfc/0x32c [mlx5_core] local_pci_probe+0x68/0x12c pci_call_probe+0x68/0x1ec pci_device_probe+0xbc/0x1a8 really_probe+0x104/0x570 __driver_probe_device+0xb8/0x224 driver_probe_device+0x54/0x130 __driver_attach+0x158/0x2b0 bus_for_each_dev+0xa8/0x120 driver_attach+0x34/0x48 bus_add_driver+0x174/0x304 driver_register+0x8c/0x1c4 __pci_register_driver+0x68/0x7c mlx5_init+0xb8/0x118 [mlx5_core] do_one_initcall+0x60/0x388 do_init_module+0x7c/0x2a4 init_module_from_file+0xb4/0x108 idempotent_init_module+0x184/0x34c sys_finit_module+0x90/0x114 And oopses are possible when lockdep is enabled or the RTAS tracepoints are active, since those paths dereference the result of the lookup. Use the correct spelling to match firmware's behavior, adjusting the related constants to match. Signed-off-by: Nathan Lynch <[email protected]> Fixes: 8252b88 ("powerpc/rtas: improve function information lookups") Reported-by: Gaurav Batra <[email protected]> Signed-off-by: Michael Ellerman <[email protected]> Link: https://msgid.link/20240222-rtas-fix-ibm-reset-pe-dma-window-v1-1-7aaf235ac63c@linux.ibm.com Signed-off-by: Sasha Levin <[email protected]>
1 parent 14ce683 commit c760dcf

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

arch/powerpc/include/asm/rtas.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ enum rtas_function_index {
6868
RTAS_FNIDX__IBM_READ_SLOT_RESET_STATE,
6969
RTAS_FNIDX__IBM_READ_SLOT_RESET_STATE2,
7070
RTAS_FNIDX__IBM_REMOVE_PE_DMA_WINDOW,
71-
RTAS_FNIDX__IBM_RESET_PE_DMA_WINDOWS,
71+
RTAS_FNIDX__IBM_RESET_PE_DMA_WINDOW,
7272
RTAS_FNIDX__IBM_SCAN_LOG_DUMP,
7373
RTAS_FNIDX__IBM_SET_DYNAMIC_INDICATOR,
7474
RTAS_FNIDX__IBM_SET_EEH_OPTION,
@@ -163,7 +163,7 @@ typedef struct {
163163
#define RTAS_FN_IBM_READ_SLOT_RESET_STATE rtas_fn_handle(RTAS_FNIDX__IBM_READ_SLOT_RESET_STATE)
164164
#define RTAS_FN_IBM_READ_SLOT_RESET_STATE2 rtas_fn_handle(RTAS_FNIDX__IBM_READ_SLOT_RESET_STATE2)
165165
#define RTAS_FN_IBM_REMOVE_PE_DMA_WINDOW rtas_fn_handle(RTAS_FNIDX__IBM_REMOVE_PE_DMA_WINDOW)
166-
#define RTAS_FN_IBM_RESET_PE_DMA_WINDOWS rtas_fn_handle(RTAS_FNIDX__IBM_RESET_PE_DMA_WINDOWS)
166+
#define RTAS_FN_IBM_RESET_PE_DMA_WINDOW rtas_fn_handle(RTAS_FNIDX__IBM_RESET_PE_DMA_WINDOW)
167167
#define RTAS_FN_IBM_SCAN_LOG_DUMP rtas_fn_handle(RTAS_FNIDX__IBM_SCAN_LOG_DUMP)
168168
#define RTAS_FN_IBM_SET_DYNAMIC_INDICATOR rtas_fn_handle(RTAS_FNIDX__IBM_SET_DYNAMIC_INDICATOR)
169169
#define RTAS_FN_IBM_SET_EEH_OPTION rtas_fn_handle(RTAS_FNIDX__IBM_SET_EEH_OPTION)

arch/powerpc/kernel/rtas.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,13 @@ static struct rtas_function rtas_function_table[] __ro_after_init = {
310310
[RTAS_FNIDX__IBM_REMOVE_PE_DMA_WINDOW] = {
311311
.name = "ibm,remove-pe-dma-window",
312312
},
313-
[RTAS_FNIDX__IBM_RESET_PE_DMA_WINDOWS] = {
314-
.name = "ibm,reset-pe-dma-windows",
313+
[RTAS_FNIDX__IBM_RESET_PE_DMA_WINDOW] = {
314+
/*
315+
* Note: PAPR+ v2.13 7.3.31.4.1 spells this as
316+
* "ibm,reset-pe-dma-windows" (plural), but RTAS
317+
* implementations use the singular form in practice.
318+
*/
319+
.name = "ibm,reset-pe-dma-window",
315320
},
316321
[RTAS_FNIDX__IBM_SCAN_LOG_DUMP] = {
317322
.name = "ibm,scan-log-dump",

0 commit comments

Comments
 (0)