linux/arch/powerpc/platforms/powernv
Frederic Barrat 6bca515917 powerpc/powernv/npu: Fix oops in pnv_try_setup_npu_table_group()
With a recent change around IOMMU group, a system with an opencapi
adapter is no longer booting and we get a kernel oops:

  BUG: Kernel NULL pointer dereference at 0x00000028
  Faulting instruction address: 0xc0000000000aa38c
  ...
  NIP pnv_try_setup_npu_table_group+0x1c/0x1a0
  LR  pnv_pci_ioda_fixup+0x1f8/0x660
  Call Trace:
    pnv_try_setup_npu_table_group+0x60/0x
    pnv_pci_ioda_fixup+0x20c/0x660
    pcibios_resource_survey+0x2c8/0x31c
    pcibios_init+0xb0/0xe4
    do_one_initcall+0x64/0x264
    kernel_init_freeable+0x36c/0x468
    kernel_init+0x2c/0x148
    ret_from_kernel_thread+0x5c/0x68

An opencapi device is using a device PE, so the current code breaks
because pe->pbus is not defined.

More generally, there's no need to define an IOMMU group for opencapi,
as the device sends real addresses directly (admittedly, the
virtualization story is yet to be written). So let's fix it by
skipping the IOMMU group setup for opencapi PHBs.

Fixes: 0bd971676e ("powerpc/powernv/npu: Add compound IOMMU groups")
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2019-01-11 23:45:00 +11:00
..
Kconfig PCI: consolidate PCI config entry in drivers/pci 2018-11-23 11:45:34 +09:00
Makefile powerpc/powernv: Move TCE manupulation code to its own file 2018-07-16 22:53:07 +10:00
copy-paste.h powerpc/powernv: copy/paste - Mask SO bit in CR 2018-06-04 22:58:41 +10:00
eeh-powernv.c powerpc/powernv/eeh/npu: Fix uninitialized variables in opal_pci_eeh_freeze_status 2018-12-20 22:59:03 +11:00
idle.c powerpc/powernv/idle: Fix build error 2018-08-10 22:12:39 +10:00
memtrace.c powerpc/powernv: hold device_hotplug_lock when calling memtrace_offline_pages() 2018-10-31 08:54:17 -07:00
npu-dma.c powerpc/powernv/npu: Allocate enough memory in pnv_try_setup_npu_table_group() 2019-01-11 23:44:54 +11:00
ocxl.c ocxl: Rename pnv_ocxl_spa_remove_pe to clarify it's action 2018-06-03 20:40:32 +10:00
opal-async.c powerpc/opal: Add opal_async_wait_response_interruptible() to opal-async 2017-11-06 20:39:28 +11:00
opal-dump.c powerpc/powernv/opal-dump : Use IRQ_HANDLED instead of numbers in interrupt handler 2018-07-24 22:03:24 +10:00
opal-elog.c powerpc: Use octal numbers for file permissions 2018-01-22 05:48:33 +11:00
opal-flash.c powerpc/powernv: Always stop secondaries before reboot/shutdown 2018-04-03 22:59:57 +10:00
opal-hmi.c powerpc-opal: fix spelling mistake "Uniterrupted" -> "Uninterrupted" 2018-06-05 11:33:47 +10:00
opal-imc.c powerpc/perf: Unregister thread-imc if core-imc not supported 2018-06-03 20:43:37 +10:00
opal-irqchip.c powerpc/powernv/opal: Use standard interrupts property when available 2018-08-08 00:32:38 +10:00
opal-kmsg.c powerpc/powernv: Implement and use opal_flush_console 2018-07-24 22:09:56 +10:00
opal-lpc.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
opal-memory-errors.c powerpc: Use sizeof(*foo) rather than sizeof(struct foo) 2018-03-20 16:47:53 +11:00
opal-msglog.c locking/atomics: COCCINELLE/treewide: Convert trivial ACCESS_ONCE() patterns to READ_ONCE()/WRITE_ONCE() 2017-10-25 11:01:08 +02:00
opal-nvram.c powerpc/powernv: Fix NVRAM sleep in invalid context when crashing 2018-05-18 00:23:07 +10:00
opal-power.c powerpc/powernv: Move opal_power_control_init() call in opal_init(). 2018-12-21 11:32:49 +11:00
opal-powercap.c powerpc: Convert to using %pOFn instead of device_node.name 2018-10-03 15:40:01 +10:00
opal-prd.c vfs: do bulk POLL* -> EPOLL* replacement 2018-02-11 14:34:03 -08:00
opal-psr.c powerpc: Use sizeof(*foo) rather than sizeof(struct foo) 2018-03-20 16:47:53 +11:00
opal-rtc.c powerpc: use time64_t in read_persistent_clock 2018-06-03 20:43:33 +10:00
opal-sensor-groups.c powerpc: Convert to using %pOFn instead of device_node.name 2018-10-03 15:40:01 +10:00
opal-sensor.c powernv: opal-sensor: Add support to read 64bit sensor values 2018-05-21 14:48:02 +10:00
opal-sysparam.c powerpc: Convert to using %pOFn instead of device_node.name 2018-10-03 15:40:01 +10:00
opal-tracepoints.c jump_label: move 'asm goto' support test to Kconfig 2019-01-06 09:46:51 +09:00
opal-wrappers.S jump_label: move 'asm goto' support test to Kconfig 2019-01-06 09:46:51 +09:00
opal-xscom.c powerpc: Use sizeof(*foo) rather than sizeof(struct foo) 2018-03-20 16:47:53 +11:00
opal.c powerpc: Use of_node_name_eq for node name comparisons 2018-12-22 21:29:50 +11:00
pci-cxl.c Revert "powerpc/powernv: Add support for the cxl kernel api on the real phb" 2018-07-02 23:54:32 +10:00
pci-ioda-tce.c powerpc/powernv: Reference iommu_table while it is linked to a group 2018-12-21 16:20:46 +11:00
pci-ioda.c powerpc/powernv/npu: Fix oops in pnv_try_setup_npu_table_group() 2019-01-11 23:45:00 +11:00
pci.c powerpc/powernv/pseries: Rework device adding to IOMMU groups 2018-12-21 16:20:46 +11:00
pci.h powerpc/powernv/npu: Add compound IOMMU groups 2018-12-21 16:20:46 +11:00
powernv.h powerpc/powernv: process all OPAL event interrupts with kopald 2018-06-03 20:40:30 +10:00
rng.c powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
setup.c powerpc/powernv: Make possible for user to force a full ipl cec reboot 2018-10-03 15:39:45 +10:00
smp.c powerpc/64s: Remove POWER9 DD1 support 2018-07-16 11:37:21 +10:00
subcore-asm.S powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00
subcore.c powerpc/64: Use array of paca pointers and allocate pacas individually 2018-03-30 23:34:23 +11:00
subcore.h powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
vas-debug.c powerpc/powernv/vas: Use DEFINE_SHOW_ATTRIBUTE macro 2018-11-25 17:11:22 +11:00
vas-trace.h powerpc/vas: Add a couple of trace points 2018-03-14 20:13:58 +11:00
vas-window.c ppc: Convert vas ID allocation to new IDA API 2018-08-21 23:54:19 -04:00
vas.c powerpc/vas: Fix cleanup when VAS is not configured 2018-03-14 20:11:37 +11:00
vas.h powerpc: clean the inclusion of stringify.h 2018-07-30 22:48:17 +10:00