linux/arch/powerpc/platforms
Russell Currey eac030b22e powerpc/pseries: Rework lppaca_shared_proc() to avoid DEBUG_PREEMPT
lppaca_shared_proc() takes a pointer to the lppaca which is typically
accessed through get_lppaca().  With DEBUG_PREEMPT enabled, this leads
to checking if preemption is enabled, for example:

  BUG: using smp_processor_id() in preemptible [00000000] code: grep/10693
  caller is lparcfg_data+0x408/0x19a0
  CPU: 4 PID: 10693 Comm: grep Not tainted 6.5.0-rc3 #2
  Call Trace:
    dump_stack_lvl+0x154/0x200 (unreliable)
    check_preemption_disabled+0x214/0x220
    lparcfg_data+0x408/0x19a0
    ...

This isn't actually a problem however, as it does not matter which
lppaca is accessed, the shared proc state will be the same.
vcpudispatch_stats_procfs_init() already works around this by disabling
preemption, but the lparcfg code does not, erroring any time
/proc/powerpc/lparcfg is accessed with DEBUG_PREEMPT enabled.

Instead of disabling preemption on the caller side, rework
lppaca_shared_proc() to not take a pointer and instead directly access
the lppaca, bypassing any potential preemption checks.

Fixes: f13c13a005 ("powerpc: Stop using non-architected shared_proc field in lppaca")
Signed-off-by: Russell Currey <ruscur@russell.cc>
[mpe: Rework to avoid needing a definition in paca.h and lppaca.h]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230823055317.751786-4-mpe@ellerman.id.au
2023-08-24 22:33:17 +10:00
..
4xx powerpc/4xx: Add missing includes to fix no previous prototype errors 2023-08-18 17:03:15 +10:00
8xx powerpc/8xx: Remove init_internal_rtc() to fix no previous prototype error 2023-08-18 17:03:14 +10:00
40x powerpc updates for 6.4 2023-04-28 16:24:32 -07:00
44x powerpc/4xx: Remove pika_dtm_[un]register_shutdown() to fix no previous prototype 2023-08-18 17:03:14 +10:00
52xx powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
82xx powerpc/82xx: Remove CONFIG_8260 and CONFIG_8272 2023-08-18 17:03:14 +10:00
83xx powerpc/83xx: Split usb.c 2023-08-18 17:03:14 +10:00
85xx powerpc/85xx: Mark some functions static and add missing includes to fix no previous prototype error 2023-08-23 15:55:21 +10:00
86xx powerpc: address missing-prototypes warnings 2023-08-02 22:22:19 +10:00
512x powerpc/512x: Make mpc512x_select_reset_compat() static 2023-08-18 17:02:40 +10:00
amigaone powerpc: Make generic_calibrate_decr() the default 2023-03-16 08:56:48 +11:00
book3s driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
cell powerpc: address missing-prototypes warnings 2023-08-02 22:22:19 +10:00
chrp powerpc: Make generic_calibrate_decr() the default 2023-03-16 08:56:48 +11:00
embedded6xx powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
maple powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
microwatt powerpc: Make generic_calibrate_decr() the default 2023-03-16 08:56:48 +11:00
pasemi powerpc: address missing-prototypes warnings 2023-08-02 22:22:19 +10:00
powermac powerpc: address missing-prototypes warnings 2023-08-02 22:22:19 +10:00
powernv powerpc/powernv: Use struct opal_prd_msg in more places 2023-08-24 22:33:16 +10:00
ps3 powerpc/ps3: refactor strncpy usage 2023-08-18 11:48:42 +10:00
pseries powerpc/pseries: Rework lppaca_shared_proc() to avoid DEBUG_PREEMPT 2023-08-24 22:33:17 +10:00
fsl_uli1575.c powerpc/fsl_uli1575: Mark uli_exclude_device() as static 2023-04-20 10:20:50 +10:00
Kconfig powerpc/82xx: Remove CONFIG_8260 and CONFIG_8272 2023-08-18 17:03:14 +10:00
Kconfig.cputype powerpc/64: vmlinux support building with PCREL addresing 2023-04-20 12:59:21 +10:00
Makefile powerpc: Add Microwatt platform 2021-06-21 21:15:26 +10:00