mirror_ubuntu-kernels/arch/powerpc/platforms/pseries
Michael Ellerman a66de5283e powerpc/pseries: Fix plpks crash on non-pseries
As reported[1] by Nathan, the recently added plpks driver will crash if
it's built into the kernel and booted on a non-pseries machine, eg
powernv:

  kernel BUG at arch/powerpc/kernel/syscall.c:39!
  Oops: Exception in kernel mode, sig: 5 [#1]
  LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=2048 NUMA PowerNV
  ...
  NIP system_call_exception+0x90/0x3d0
  LR  system_call_common+0xec/0x250
  Call Trace:
    0xc0000000035c3e10 (unreliable)
    system_call_common+0xec/0x250
  --- interrupt: c00 at plpar_hcall+0x38/0x60
  NIP:  c0000000000e4300 LR: c00000000202945c CTR: 0000000000000000
  REGS: c0000000035c3e80 TRAP: 0c00   Not tainted  (6.0.0-rc4)
  MSR:  9000000002009033 <SF,HV,VEC,EE,ME,IR,DR,RI,LE>  CR: 28000284  XER: 00000000
  ...
  NIP plpar_hcall+0x38/0x60
  LR  pseries_plpks_init+0x64/0x23c
  --- interrupt: c00

On powernv Linux is the hypervisor, so a hypercall just ends up going to
the syscall path, which BUGs if the syscall (hypercall) didn't come from
userspace.

The fix is simply to not probe the plpks driver on non-pseries machines.

[1] https://lore.kernel.org/linuxppc-dev/Yxe06fbq18Wv9y3W@dev-arch.thelio-3990X/

Fixes: 2454a7af0f ("powerpc/pseries: define driver for Platform KeyStore")
Reported-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Tested-by: Dan Horák <dan@danny.cz>
Reviewed-by: Dan Horák <dan@danny.cz>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20220907065038.1604504-1-mpe@ellerman.id.au
2022-09-08 10:45:57 +10:00
..
cc_platform.c powerpc/pseries/svm: Add a powerpc version of cc_platform_has() 2021-10-04 11:46:33 +02:00
cmm.c mm: Convert all PageMovable users to movable_operations 2022-08-02 12:34:03 -04:00
dlpar.c powerpc: Remove asm/prom.h from all files that don't need it 2022-05-08 22:15:04 +10:00
dtl.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
eeh_pseries.c powerpc: Fix all occurences of duplicate words 2022-07-25 12:05:15 +10:00
event_sources.c powerpc/pseries: Add __init attribute to eligible functions 2021-12-23 22:33:15 +11:00
firmware.c powerpc/pseries: add FW_FEATURE_WATCHDOG flag 2022-07-20 21:57:39 +10:00
hotplug-cpu.c powerpc/numa: Associate numa node to its cpu earlier 2022-05-22 15:58:30 +10:00
hotplug-memory.c powerpc: Remove asm/prom.h from all files that don't need it 2022-05-08 22:15:04 +10:00
hvCall_inst.c powerpc/pseries: Make symbol '__pcpu_scope_hcall_stats' static 2021-04-14 23:04:17 +10:00
hvCall.S powerpc/64s: avoid reloading (H)SRR registers if they are still valid 2021-06-25 00:06:55 +10:00
hvconsole.c powerpc updates for 5.3 2019-07-13 16:08:36 -07:00
hvcserver.c powerpc: Use fallthrough pseudo-keyword 2020-07-29 21:09:37 +10:00
ibmebus.c bus: Make remove callback return void 2021-07-21 11:53:42 +02:00
io_event_irq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
iommu.c pseries/iommu/ddw: Fix kdump to work in absence of ibm,dma-window 2022-07-28 16:22:13 +10:00
Kconfig powerpc updates for 6.0 2022-08-06 16:38:17 -07:00
kexec.c powerpc: Don't include asm/setup.h in asm/machdep.h 2022-06-20 11:29:49 +10:00
lpar.c powerpc: Don't include asm/setup.h in asm/machdep.h 2022-06-20 11:29:49 +10:00
lparcfg.c powerpc: Remove asm/prom.h from all files that don't need it 2022-05-08 22:15:04 +10:00
Makefile powerpc/pseries: define driver for Platform KeyStore 2022-07-28 16:22:13 +10:00
mobility.c powerpc/pseries/mobility: set NMI watchdog factor during an LPM 2022-07-27 21:36:03 +10:00
msi.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
nvram.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
of_helpers.c powerpc/pseries: Fix of_read_drc_info_cell() to point at next record 2020-03-25 12:06:43 +11:00
of_helpers.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
papr_platform_attributes.c powerpc: Include asm/firmware.h in all users of firmware_has_feature() 2022-06-29 16:45:05 +10:00
papr_scm.c powerpc/papr_scm: Ensure rc is always initialized in papr_scm_pmu_register() 2022-09-02 18:55:11 +10:00
pci_dlpar.c powerpc/pseries: Fix use after free in remove_phb_dynamic() 2022-03-21 13:17:47 +11:00
pci.c powerpc: Remove asm/prom.h from all files that don't need it 2022-05-08 22:15:04 +10:00
plpks.c powerpc/pseries: Fix plpks crash on non-pseries 2022-09-08 10:45:57 +10:00
plpks.h powerpc/pseries: define driver for Platform KeyStore 2022-07-28 16:22:13 +10:00
pmem.c powerpc: Remove asm/prom.h from all files that don't need it 2022-05-08 22:15:04 +10:00
power.c powerpc: declare unmodified attribute_group usages const 2022-03-08 22:15:32 +11:00
pseries_energy.c powerpc/pseries: Fix drc-info mappings of logical cpus to drc-index 2019-11-13 16:57:57 +11:00
pseries.h powerpc/pseries: wire up rng during setup_arch() 2022-06-18 10:19:10 +10:00
ras.c powerpc/mce: Avoid using irq_work_queue() in realmode 2022-03-08 00:05:00 +11:00
reconfig.c powerpc: Remove asm/prom.h from all files that don't need it 2022-05-08 22:15:04 +10:00
rng.c powerpc/pseries: wire up rng during setup_arch() 2022-06-18 10:19:10 +10:00
rtas-fadump.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
rtas-fadump.h powerpc/fadump: support holes in kernel boot memory area 2019-09-14 00:04:46 +10:00
setup.c powerpc/pseries: register pseries-wdt device with platform bus 2022-07-20 21:57:39 +10:00
smp.c powerpc: Remove asm/prom.h from all files that don't need it 2022-05-08 22:15:04 +10:00
suspend.c powerpc/pseries/hibernation: remove prepare_late() callback 2020-12-08 21:41:02 +11:00
svm.c swiotlb: add a SWIOTLB_ANY flag to lift the low memory restriction 2022-04-18 07:21:12 +02:00
vas-sysfs.c powerpc/pseries/vas: Call misc_deregister if sysfs init fails 2022-05-22 15:58:31 +10:00
vas.c powerpc/pseries/vas: Fix comment typo 2022-07-28 16:22:14 +10:00
vas.h powerpc/pseries/vas: Use QoS credits from the userspace 2022-05-04 22:00:47 +10:00
vio.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
vphn.c powerpc/vphn: Check for error from hcall_vphn 2020-03-04 22:44:30 +11:00