linux/drivers/pci/hotplug
Gavin Shan 1fb738a3dc pci/hotplug/pnv-php: Disable MSI and PCI device properly
commit 49f4b08e61 upstream.

pnv_php_disable_irq() can be called in two paths: Bailing path in
pnv_php_enable_irq() or releasing slot. The MSI (or MSIx) interrupts
is disabled unconditionally in pnv_php_disable_irq(). It's wrong
because that might be enabled by drivers other than pnv-php.

This disables MSI (or MSIx) interrupts and the PCI device only if
it was enabled by pnv-php. In the error path of pnv_php_enable_irq(),
we rely on the newly added parameter @disable_device. In the path
of releasing slot, @pnv_php->irq is checked.

Fixes: 360aebd85a ("drivers/pci/hotplug: Support surprise hotplug in powernv driver")
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2017-03-12 06:41:47 +01:00
..
acpi_pcihp.c PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
acpiphp.h PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
acpiphp_core.c PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
acpiphp_glue.c ACPI / hotplug / PCI: Runtime resume bridges before bus rescans 2016-08-04 21:33:58 -04:00
acpiphp_ibm.c PCI: acpiphp_ibm: Avoid uninitialized variable reference 2016-04-15 10:17:03 -05:00
cpci_hotplug.h PCI: hotplug: Make core explicitly non-modular 2016-08-24 17:20:14 -05:00
cpci_hotplug_core.c PCI: hotplug: Make core explicitly non-modular 2016-08-24 17:20:14 -05:00
cpci_hotplug_pci.c PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
cpcihp_generic.c PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
cpcihp_zt5550.c PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
cpcihp_zt5550.h PCI: Fix whitespace, capitalization, and spelling errors 2013-11-14 11:28:18 -07:00
cpqphp.h PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
cpqphp_core.c PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
cpqphp_ctrl.c PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
cpqphp_nvram.c PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
cpqphp_nvram.h PCI: Remove "extern" from function declarations 2013-04-17 10:21:17 -06:00
cpqphp_pci.c PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
cpqphp_sysfs.c PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
ibmphp.h PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
ibmphp_core.c Merge branch 'pci/trivial' into next 2016-01-20 11:48:25 -06:00
ibmphp_ebda.c Merge branch 'pci/trivial' into next 2016-01-20 11:48:25 -06:00
ibmphp_hpc.c Merge branch 'pci/trivial' into next 2016-01-20 11:48:25 -06:00
ibmphp_pci.c Merge branch 'pci/trivial' into next 2016-01-20 11:48:25 -06:00
ibmphp_res.c Merge branch 'pci/trivial' into next 2016-01-20 11:48:25 -06:00
Kconfig PCI/hotplug: PowerPC PowerNV PCI hotplug driver 2016-06-21 15:30:58 +10:00
Makefile PCI/hotplug: PowerPC PowerNV PCI hotplug driver 2016-06-21 15:30:58 +10:00
pci_hotplug_core.c PCI: hotplug: Make core explicitly non-modular 2016-08-24 17:20:14 -05:00
pciehp.h PCI: pciehp: Allow exclusive userspace control of indicators 2016-09-22 18:20:11 -05:00
pciehp_core.c Merge branch 'pci/hotplug' into next 2016-10-03 09:43:19 -05:00
pciehp_ctrl.c PCI: pciehp: Remove useless pciehp_get_latch_status() calls 2016-09-14 14:25:05 -05:00
pciehp_hpc.c PCI: pciehp: Allow exclusive userspace control of indicators 2016-09-22 18:20:11 -05:00
pciehp_pci.c PCI: pciehp: Remove pci_configure_slot() usage 2014-09-12 20:09:47 -06:00
pcihp_skeleton.c Merge branch 'pci/trivial' into next 2016-01-20 11:48:25 -06:00
pnv_php.c pci/hotplug/pnv-php: Disable MSI and PCI device properly 2017-03-12 06:41:47 +01:00
rpadlpar.h PCI: Remove "extern" from function declarations 2013-04-17 10:21:17 -06:00
rpadlpar_core.c powerpc/pci/rpadlpar: Fix device reference leaks 2017-01-12 11:39:37 +01:00
rpadlpar_sysfs.c PCI: introduce pci_slot 2008-06-10 14:37:03 -07:00
rpaphp.h PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
rpaphp_core.c powerpc/pci: Rename pcibios_{add, remove}_pci_devices() 2016-05-11 21:54:23 +10:00
rpaphp_pci.c powerpc/pci: Rename pcibios_find_pci_bus() 2016-05-11 21:54:24 +10:00
rpaphp_slot.c PCI: rpaphp: Fix slot registration for multiple slots under a PHB 2016-07-20 11:54:55 +10:00
s390_pci_hpc.c s390/pci: remove pdev pointer from arch data 2016-02-23 08:56:16 +01:00
sgi_hotplug.c PCI: Fix all whitespace issues 2016-01-08 10:35:24 -06:00
shpchp.h PCI: shpchp: Constify hpc_ops structure 2016-01-08 12:10:00 -06:00
shpchp_core.c Merge branch 'pci/trivial' into next 2016-01-20 11:48:25 -06:00
shpchp_ctrl.c PCI: Remove assignment from "if" conditions 2014-09-24 07:50:53 -06:00
shpchp_hpc.c PCI: shpchp: Constify hpc_ops structure 2016-01-08 12:10:00 -06:00
shpchp_pci.c PCI: shpchp: Remove pci_configure_slot() usage 2014-09-12 20:09:49 -06:00
shpchp_sysfs.c PCI: Use to_pci_dev() instead of open-coding it 2016-01-08 12:05:39 -06:00