linux/arch/powerpc/kernel
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
..
vdso32 powerpc: 32 bit getcpu VDSO function uses 64 bit instructions 2014-11-27 09:42:12 +11:00
vdso64
.gitignore
align.c powerpc: Remove double braces in alignment code. 2014-11-10 09:59:32 +11:00
asm-offsets.c powerpc/kvm: Create proper names for the kvm_host_state PMU fields 2014-12-29 15:45:55 +11:00
audit.c
btext.c
cacheinfo.c powerpc: use %*pb[l] to print bitmaps including cpumasks and nodemasks 2015-02-13 21:21:36 -08:00
cacheinfo.h
compat_audit.c
cpu_setup_6xx.S
cpu_setup_44x.S
cpu_setup_fsl_booke.S
cpu_setup_pa6t.S
cpu_setup_power.S
cpu_setup_ppc970.S
cputable.c powerpc: Add machine_check cpu function for e300c3 cpus 2015-01-29 22:57:40 -06:00
crash_dump.c powerpc: Remove superfluous bootmem includes 2014-11-10 09:59:26 +11:00
crash.c
dbell.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
dma-iommu.c powerpc/iommu: Rename iommu_[un]map_sg functions 2014-11-18 11:30:01 +01:00
dma-swiotlb.c
dma.c powerpc: Only do dynamic DMA zone limits on platforms that need it 2014-10-17 09:21:44 +11:00
eeh_cache.c
eeh_dev.c
eeh_driver.c powerpc/eeh: Allow to set maximal frozen times 2015-01-23 14:02:54 +11:00
eeh_event.c
eeh_pe.c powerpc/eeh: Introduce flag EEH_PE_REMOVED 2015-01-23 14:02:53 +11:00
eeh_sysfs.c powerpc/eeh: Fix PE state format 2014-11-27 09:32:58 +11:00
eeh.c powerpc/eeh: Allow to set maximal frozen times 2015-01-23 14:02:54 +11:00
entry_32.S powerpc: Remove old compile time disabled syscall tracing code 2015-02-02 14:51:32 +11:00
entry_64.S powerpc: Remove old compile time disabled syscall tracing code 2015-02-02 14:51:32 +11:00
epapr_hcalls.S
epapr_paravirt.c
exceptions-64e.S
exceptions-64s.S powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
fadump.c powerpc/fadump: Fix endianess issues in firmware assisted dump handling 2014-10-30 16:52:46 +11:00
firmware.c
fpu.S
fsl_booke_entry_mapping.S
ftrace.c powerpc updates for 3.19 2014-12-11 17:48:14 -08:00
head_8xx.S powerpc/8xx: Remove duplicated code in set_context() 2015-01-29 21:59:02 -06:00
head_32.S
head_40x.S
head_44x.S
head_64.S
head_booke.h
head_fsl_booke.S
hw_breakpoint.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
ibmebus.c
idle_6xx.S
idle_book3e.S
idle_e500.S
idle_power4.S
idle_power7.S powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
idle.c
io-workarounds.c
io.c
iomap.c
iommu.c powerpc/iommu: Remove IOMMU device references via bus notifier 2015-03-04 13:19:33 +11:00
irq.c powerpc: Remove superfluous bootmem includes 2014-11-10 09:59:26 +11:00
isa-bridge.c
jump_label.c
kgdb.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
kprobes.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
kvm_emul.S
kvm.c
l2cr_6xx.S
legacy_serial.c
machine_kexec_32.c
machine_kexec_64.c kexec: add IND_FLAGS macro 2015-02-17 14:34:51 -08:00
machine_kexec.c
Makefile
mce_power.c powerpc/book3s: Fix partial invalidation of TLBs in MCE code. 2014-12-05 16:26:21 +11:00
mce.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
misc_32.S
misc_64.S
misc.S powerpc: Rename __get_SP() to current_stack_pointer() 2014-10-15 11:23:20 +11:00
module_32.c powerpc: Use pr_fmt in module loader code 2014-10-02 17:33:54 +10:00
module_64.c powerpc: Use pr_fmt in module loader code 2014-10-02 17:33:54 +10:00
module.c
msi.c PCI/MSI/PPC: Remove arch_msi_check_device() 2014-10-01 12:21:14 -06:00
nvram_64.c
of_platform.c powerpc: kernel: drop owner assignment from platform_drivers 2014-10-20 16:20:10 +02:00
paca.c powerpc/kernel: Avoid memory corruption at early stage 2015-01-23 14:02:52 +11:00
pci_32.c powerpc: Remove more traces of bootmem 2014-11-19 21:41:51 +11:00
pci_64.c powerpc updates for 3.19 2014-12-11 17:48:14 -08:00
pci_dn.c powerpc/pci: remove the multi-init for pci_dn->phb 2015-01-23 14:02:48 +11:00
pci_of_scan.c
pci-common.c powerpc/PCI: Clip bridge windows to fit in upstream windows 2015-01-16 10:04:43 -06:00
pci-hotplug.c
pmc.c
ppc32.h
ppc_ksyms_32.c
ppc_ksyms.c powerpc: Rename __get_SP() to current_stack_pointer() 2014-10-15 11:23:20 +11:00
ppc_save_regs.S
proc_powerpc.c
process.c powerpc: Use generic PIE randomization 2014-11-17 17:55:11 +11:00
prom_init_check.sh
prom_init.c
prom_parse.c
prom.c powerpc/kernel: Avoid initializing device-tree pointer twice 2015-02-02 14:51:32 +11:00
ptrace32.c
ptrace.c Merge git://git.infradead.org/users/eparis/audit 2014-10-19 16:25:56 -07:00
reloc_32.S
reloc_64.S
rtas_flash.c
rtas_pci.c powerpc: Remove superfluous bootmem includes 2014-11-10 09:59:26 +11:00
rtas-proc.c powerpc: LLVM complains about forward declaration of struct rtas_sensors 2014-11-10 09:59:32 +11:00
rtas-rtc.c
rtas.c powerpc/pseries: Fix endian problems with LE migration 2015-01-27 14:03:53 +11:00
rtasd.c
setup_32.c powerpc: Remove unused vgacon_remap_base & fix build break 2014-11-10 09:59:31 +11:00
setup_64.c powerpc: Remove more traces of bootmem 2014-11-19 21:41:51 +11:00
setup-common.c powerpc: Convert power off logic to pm_power_off 2014-11-03 12:12:51 +11:00
signal_32.c all arches, signal: move restart_block to struct task_struct 2015-02-12 18:54:12 -08:00
signal_64.c all arches, signal: move restart_block to struct task_struct 2015-02-12 18:54:12 -08:00
signal.c
signal.h
smp-tbsync.c
smp.c powerpc/smp: Wait until secondaries are active & online 2015-03-04 13:19:33 +11:00
stacktrace.c powerpc: Rename __get_SP() to current_stack_pointer() 2014-10-15 11:23:20 +11:00
suspend.c nosave: consolidate __nosave_{begin,end} in <asm/sections.h> 2014-10-09 22:26:04 -04:00
swsusp_32.S
swsusp_64.c
swsusp_asm64.S
swsusp_booke.S
swsusp.c
sys_ppc32.c
syscalls.c powerpc: Remove old compile time disabled syscall tracing code 2015-02-02 14:51:32 +11:00
sysfs.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
systbl_chk.c
systbl_chk.sh
systbl.S
tau_6xx.c
time.c The clock framework changes for 3.20 contain the usual driver additions, 2015-02-21 12:30:30 -08:00
tm.S
traps.c powerpc: Remove some unused functions 2015-01-28 15:00:24 +11:00
udbg_16550.c powerpc: Fix bad NULL pointer check in udbg_uart_getc_poll() 2014-11-12 13:47:20 +11:00
udbg.c
uprobes.c
vdso.c powerpc: Remove superfluous bootmem includes 2014-11-10 09:59:26 +11:00
vecemu.c
vector.S
vio.c
vmlinux.lds.S