linux/arch/powerpc/platforms/powernv
Nishanth Aravamudan 4ad04e5987 powerpc/iommu: Remove IOMMU device references via bus notifier
After d905c5df9a ("PPC: POWERNV: move iommu_add_device earlier"), the
refcnt on the kobject backing the IOMMU group for a PCI device is
elevated by each call to pci_dma_dev_setup_pSeriesLP() (via
set_iommu_table_base_and_group). When we go to dlpar a multi-function
PCI device out:

        iommu_reconfig_notifier ->
                iommu_free_table ->
                        iommu_group_put
                        BUG_ON(tbl->it_group)

We trip this BUG_ON, because there are still references on the table, so
it is not freed. Fix this by moving the powernv bus notifier to common
code and calling it for both powernv and pseries.

Fixes: d905c5df9a ("PPC: POWERNV: move iommu_add_device earlier")
Signed-off-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
Tested-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2015-03-04 13:19:33 +11:00
..
Kconfig powerpc/powernv: Enable POWER8 doorbell IPIs 2014-06-11 17:05:12 +10:00
Makefile powerpc/powernv: Add OPAL soft-poweroff routine 2015-02-04 13:08:25 +11:00
eeh-ioda.c powerpc/eeh: Dump PHB diag-data early 2014-12-02 11:03:26 +11:00
eeh-powernv.c powerpc/eeh: Fix missed PE#0 on P7IOC 2015-01-23 14:02:52 +11:00
opal-async.c rtc/tpo: Driver to support rtc and wakeup on PowerNV platform 2014-11-17 18:04:01 +11:00
opal-dump.c powerpc/powernv: Check OPAL dump calls exist before using 2014-09-25 23:14:36 +10:00
opal-elog.c powerpc/powernv: Check OPAL elog calls exist before using 2014-09-25 23:14:36 +10:00
opal-flash.c powerpc/powernv: Pass buffer size to OPAL validate flash call 2014-06-05 14:54:04 +10:00
opal-hmi.c powerpc/powernv: Fix the hmi event version check. 2014-11-27 09:32:52 +11:00
opal-lpc.c powerpc/powernv: Properly fix LPC debugfs endianness 2014-10-31 17:09:04 +11:00
opal-memory-errors.c powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() 2014-07-28 14:11:26 +10:00
opal-msglog.c powerpc/powernv: Fix reading of OPAL msglog 2014-06-11 17:03:36 +10:00
opal-nvram.c powerpc: Add printk levels to powernv platform code 2014-10-02 17:33:55 +10:00
opal-power.c powerpc/powernv: Add OPAL soft-poweroff routine 2015-02-04 13:08:25 +11:00
opal-rtc.c rtc/tpo: Driver to support rtc and wakeup on PowerNV platform 2014-11-17 18:04:01 +11:00
opal-sensor.c hwmon: (ibmpowernv) Use platform 'id_table' to probe the device 2014-11-30 20:13:13 -08:00
opal-sysparam.c powernv: Fix permissions on sysparam sysfs entries 2014-06-11 17:03:15 +10:00
opal-tracepoints.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
opal-wrappers.S powernv: Fix OPAL tracepoint code 2015-01-12 16:40:02 +11:00
opal-xscom.c powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() 2014-07-28 14:11:26 +10:00
opal.c powerpc/powernv: Don't alloc IRQ map if necessary 2015-01-28 15:28:10 +11:00
pci-ioda.c cxl: Fix device_node reference counting 2015-02-02 14:51:31 +11:00
pci-p5ioc2.c powerpc: Remove more traces of bootmem 2014-11-19 21:41:51 +11:00
pci.c powerpc/iommu: Remove IOMMU device references via bus notifier 2015-03-04 13:19:33 +11:00
pci.h powerpc/powernv: Rename alloc_m64_pe() to reserve_m64_pe() 2014-11-14 17:24:23 +11:00
powernv.h powerpc/powernv: Enable Offline CPUs to enter deep idle states 2014-12-15 10:46:40 +11:00
rng.c powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() 2014-07-28 14:11:26 +10:00
setup.c powerpc/powernv: Restore LPCR with LPCR_PECE1 cleared 2015-01-22 17:22:57 +11:00
smp.c powerpc/powernv: Ignore smt-enabled on Power8 and later 2014-12-18 19:59:21 +11:00
subcore-asm.S powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00
subcore.c powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
subcore.h powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00