linux/arch/powerpc/platforms
Alexey Kardashevskiy 8f5b27347e powerpc/powernv/sriov: Register IOMMU groups for VFs
The compound IOMMU group rework moved iommu_register_group() together
in pnv_pci_ioda_setup_iommu_api() (which is a part of
ppc_md.pcibios_fixup). As the result, pnv_ioda_setup_bus_iommu_group()
does not create groups any more, it only adds devices to groups.

This works fine for boot time devices. However IOMMU groups for
SRIOV's VFs were added by pnv_ioda_setup_bus_iommu_group() so this got
broken: pnv_tce_iommu_bus_notifier() expects a group to be registered
for VF and it is not.

This adds missing group registration and adds a NULL pointer check
into the bus notifier so we won't crash if there is no group, although
it is not expected to happen now because of the change above.

Example oops seen prior to this patch:

  $ echo 1 > /sys/bus/pci/devices/0000\:01\:00.0/sriov_numvfs
  Unable to handle kernel paging request for data at address 0x00000030
  Faulting instruction address: 0xc0000000004a6018
  Oops: Kernel access of bad area, sig: 11 [#1]
  LE SMP NR_CPUS=2048 NUMA PowerNV
  CPU: 46 PID: 7006 Comm: bash Not tainted 4.15-ish
  NIP:  c0000000004a6018 LR: c0000000004a6014 CTR: 0000000000000000
  REGS: c000008fc876b400 TRAP: 0300   Not tainted  (4.15-ish)
  MSR:  900000000280b033 <SF,HV,VEC,VSX,EE,FP,ME,IR,DR,RI,LE>
  CFAR: c000000000d0be20 DAR: 0000000000000030 DSISR: 40000000 SOFTE: 1
  ...
  NIP sysfs_do_create_link_sd.isra.0+0x68/0x150
  LR  sysfs_do_create_link_sd.isra.0+0x64/0x150
  Call Trace:
    pci_dev_type+0x0/0x30 (unreliable)
    iommu_group_add_device+0x8c/0x600
    iommu_add_device+0xe8/0x180
    pnv_tce_iommu_bus_notifier+0xb0/0xf0
    notifier_call_chain+0x9c/0x110
    blocking_notifier_call_chain+0x64/0xa0
    device_add+0x524/0x7d0
    pci_device_add+0x248/0x450
    pci_iov_add_virtfn+0x294/0x3e0
    pci_enable_sriov+0x43c/0x580
    mlx5_core_sriov_configure+0x15c/0x2f0 [mlx5_core]
    sriov_numvfs_store+0x180/0x240
    dev_attr_store+0x3c/0x60
    sysfs_kf_write+0x64/0x90
    kernfs_fop_write+0x1ac/0x240
    __vfs_write+0x3c/0x70
    vfs_write+0xd8/0x220
    SyS_write+0x6c/0x110
    system_call+0x58/0x6c

Fixes: 0bd971676e ("powerpc/powernv/npu: Add compound IOMMU groups")
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Reported-by: Santwana Samantray <santwana.samantray@in.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2019-02-19 11:51:18 +11:00
..
4xx powerpc/4xx/ocm: Fix fix for phys_addr_t printf warnings 2019-01-11 23:57:20 +11:00
8xx powerpc updates for 4.20 2018-10-26 14:36:21 -07:00
40x PCI: consolidate PCI config entry in drivers/pci 2018-11-23 11:45:34 +09:00
44x Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
52xx Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
82xx powerpc/kconfig: remove CONFIG_6xx 2018-11-26 22:33:37 +11:00
83xx Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
85xx Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
86xx Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
512x Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
amigaone Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
cell Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
chrp Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
embedded6xx Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
maple Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
pasemi Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
powermac Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
powernv powerpc/powernv/sriov: Register IOMMU groups for VFs 2019-02-19 11:51:18 +11:00
ps3 PCI: consolidate PCI config entry in drivers/pci 2018-11-23 11:45:34 +09:00
pseries powerpc/papr_scm: Use the correct bind address 2019-02-01 10:13:51 +11:00
fsl_uli1575.c of/irq: Refactor interrupt-map parsing 2013-10-24 11:43:04 +01:00
Kconfig Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
Kconfig.cputype Kconfig file consolidation for v4.21 2018-12-29 13:40:29 -08:00
Makefile powerpc: Add -Werror at arch/powerpc level 2018-10-19 00:56:17 +11:00