WSL2-Linux-Kernel/arch/powerpc/platforms/powernv
Vasant Hegde 7c8ad3fc64 powerpc/powernv/prd: Unregister OPAL_MSG_PRD2 notifier during module unload
commit 52862ab33c upstream.

Commit 587164cd, introduced new opal message type (OPAL_MSG_PRD2) and
added opal notifier. But I missed to unregister the notifier during
module unload path. This results in below call trace if you try to
unload and load opal_prd module.

Also add new notifier_block for OPAL_MSG_PRD2 message.

Sample calltrace (modprobe -r opal_prd; modprobe opal_prd)
  BUG: Unable to handle kernel data access on read at 0xc0080000192200e0
  Faulting instruction address: 0xc00000000018d1cc
  Oops: Kernel access of bad area, sig: 11 [#1]
  LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=2048 NUMA PowerNV
  CPU: 66 PID: 7446 Comm: modprobe Kdump: loaded Tainted: G            E     5.14.0prd #759
  NIP:  c00000000018d1cc LR: c00000000018d2a8 CTR: c0000000000cde10
  REGS: c0000003c4c0f0a0 TRAP: 0300   Tainted: G            E      (5.14.0prd)
  MSR:  9000000002009033 <SF,HV,VEC,EE,ME,IR,DR,RI,LE>  CR: 24224824  XER: 20040000
  CFAR: c00000000018d2a4 DAR: c0080000192200e0 DSISR: 40000000 IRQMASK: 1
  ...
  NIP notifier_chain_register+0x2c/0xc0
  LR  atomic_notifier_chain_register+0x48/0x80
  Call Trace:
    0xc000000002090610 (unreliable)
    atomic_notifier_chain_register+0x58/0x80
    opal_message_notifier_register+0x7c/0x1e0
    opal_prd_probe+0x84/0x150 [opal_prd]
    platform_probe+0x78/0x130
    really_probe+0x110/0x5d0
    __driver_probe_device+0x17c/0x230
    driver_probe_device+0x60/0x130
    __driver_attach+0xfc/0x220
    bus_for_each_dev+0xa8/0x130
    driver_attach+0x34/0x50
    bus_add_driver+0x1b0/0x300
    driver_register+0x98/0x1a0
    __platform_driver_register+0x38/0x50
    opal_prd_driver_init+0x34/0x50 [opal_prd]
    do_one_initcall+0x60/0x2d0
    do_init_module+0x7c/0x320
    load_module+0x3394/0x3650
    __do_sys_finit_module+0xd4/0x160
    system_call_exception+0x140/0x290
    system_call_common+0xf4/0x258

Fixes: 587164cd59 ("powerpc/powernv: Add new opal message type")
Cc: stable@vger.kernel.org # v5.4+
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20211028165716.41300-1-hegdevasant@linux.vnet.ibm.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-11-18 19:17:19 +01:00
..
Kconfig powerpc/vas: Move VAS API to book3s common platform 2021-06-20 21:58:55 +10:00
Makefile powerpc/vas: Move VAS API to book3s common platform 2021-06-20 21:58:55 +10:00
copy-paste.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
eeh-powernv.c powerpc/eeh: Clean up PE addressing 2020-10-06 23:22:25 +11:00
idle.c Merge branch 'topic/ppc-kvm' into next 2021-08-26 21:21:11 +10:00
memtrace.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
ocxl.c ocxl: Initiate a TLB invalidate command 2020-12-04 01:01:30 +11:00
opal-async.c powerpc: Use fallthrough pseudo-keyword 2020-07-29 21:09:37 +10:00
opal-call.c powerpc/64s: avoid reloading (H)SRR registers if they are still valid 2021-06-25 00:06:55 +10:00
opal-core.c powerpc/powernv: make symbol 'mpipl_kobj' static 2021-04-14 23:04:17 +10:00
opal-dump.c powerpc/powernv/dump: Handle multiple writes to ack attribute 2020-10-19 22:58:52 +11:00
opal-elog.c powerpc/powernv: Rate limit opal-elog read failure message 2020-12-15 22:53:27 +11:00
opal-fadump.c powerpc: Replace _ALIGN_DOWN() by ALIGN_DOWN() 2020-05-11 23:15:15 +10:00
opal-fadump.h powerpc/fadump: support holes in kernel boot memory area 2019-09-14 00:04:46 +10:00
opal-flash.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-hmi.c powerpc/64s/powernv: Ratelimit harmless HMI error printing 2020-12-04 01:01:23 +11:00
opal-imc.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
opal-irqchip.c powerpc: Bulk conversion to generic_handle_domain_irq() 2021-08-10 23:15:02 +10:00
opal-kmsg.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-lpc.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
opal-memory-errors.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
opal-msglog.c powerpc/powernv: Include asm/powernv.h from the local powernv.h 2020-08-25 01:31:33 +10:00
opal-nvram.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-power.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-powercap.c powerpc/powernv: Make some symbols static 2019-11-13 16:58:06 +11:00
opal-prd.c powerpc/powernv/prd: Unregister OPAL_MSG_PRD2 notifier during module unload 2021-11-18 19:17:19 +01:00
opal-psr.c powerpc/powernv: Make some symbols static 2019-11-13 16:58:06 +11:00
opal-rtc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-secvar.c powerpc/powernv: Add OPAL API interface to access secure variable 2019-11-13 00:33:22 +11:00
opal-sensor-groups.c powerpc/powernv: Make some symbols static 2019-11-13 16:58:06 +11:00
opal-sensor.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
opal-sysparam.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
opal-tracepoints.c jump_label: move 'asm goto' support test to Kconfig 2019-01-06 09:46:51 +09:00
opal-wrappers.S treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
opal-xscom.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
opal.c powerpc: Refactor verification of MSR_RI 2021-08-26 21:21:07 +10:00
pci-cxl.c powerpc/powernv: remove get_cxl_module 2021-02-08 12:20:17 +01:00
pci-ioda-tce.c powerpc/powernv/pci: fix a RCU-list lock 2021-01-31 22:35:49 +11:00
pci-ioda.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
pci-sriov.c powerpc/powernv/sriov: fix unsigned int win compared to less than zero 2020-11-19 16:56:54 +11:00
pci.c powerpc/powernv/pci: Drop unused MSI code 2021-08-10 23:15:00 +10:00
pci.h powerpc/powernv/pci: Drop unused MSI code 2021-08-10 23:15:00 +10:00
powernv.h powerpc/powernv: Include asm/powernv.h from the local powernv.h 2020-08-25 01:31:33 +10:00
rng.c powerpc/powernv: Staticify functions without prototypes 2020-08-25 01:31:33 +10:00
setup.c powerpc/64s: remove unneeded semicolon 2021-04-23 01:38:04 +10:00
smp.c powerpc/64s: Trim offlined CPUs from mm_cpumasks 2020-11-27 00:10:39 +11:00
subcore-asm.S treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
subcore.c powerpc: Move update_power8_hid0() into its only user 2021-06-17 00:09:11 +10:00
subcore.h powerpc: remove unneeded semicolons 2021-02-09 00:10:50 +11:00
ultravisor.c powerpc/powernv: Add ultravisor message log interface 2019-08-30 09:40:16 +10:00
vas-debug.c powerpc/vas: Define and use common vas_window struct 2021-06-20 21:58:56 +10:00
vas-fault.c powerpc/vas: Define and use common vas_window struct 2021-06-20 21:58:56 +10:00
vas-trace.h powerpc/vas: Define and use common vas_window struct 2021-06-20 21:58:56 +10:00
vas-window.c powerpc/vas: Define and use common vas_window struct 2021-06-20 21:58:56 +10:00
vas.c powerpc/vas: Fix IRQ name allocation 2021-01-30 11:39:31 +11:00
vas.h powerpc/vas: Define and use common vas_window struct 2021-06-20 21:58:56 +10:00