linux-stable/drivers/pci/hotplug
Amos Kong ce29ca3ea4 PCI: acpiphp: remove all functions in slot, even without ACPI _EJx
When we add a device with acpiphp, we enumerate all functions in the
slot with pci_scan_slot(), regardless of whether they have associated
ACPI methods such as _EJ0.

When removing the device, we previously removed only the functions
with those ACPI methods.  This patch makes the remove symmetric with the
add: we remove all functions in the slot, whether they have associated
ACPI methods or not.

With qemu-kvm and SeaBIOS, we can build a multi-function device where
only function 0 has _EJ0 and _ADR (see bugzilla below).  Removing and
re-adding that slot (including all functions of the device) works correctly
with Windows guests.  This patch makes it also work in Linux guests.

[bhelgaas: restructure loop iteration, pull out of slot->funcs loop]
Reference: https://bugzilla.kernel.org/show_bug.cgi?id=43219
Signed-off-by: Amos Kong <kongjianjun@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
2012-06-13 16:38:10 -06:00
..
acpi_pcihp.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
acpiphp.h headers: kobject.h redux 2011-01-10 08:51:44 -08:00
acpiphp_core.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
acpiphp_glue.c PCI: acpiphp: remove all functions in slot, even without ACPI _EJx 2012-06-13 16:38:10 -06:00
acpiphp_ibm.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
cpci_hotplug.h
cpci_hotplug_core.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
cpci_hotplug_pci.c PCI: cpci_hotplug: use generic pci_hp_add_bridge() 2012-06-13 15:42:26 -06:00
cpcihp_generic.c PCI hotplug: cpcihp: fix debug module parameter to be bool 2012-02-14 08:45:03 -08:00
cpcihp_zt5550.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
cpcihp_zt5550.h
cpqphp.h
cpqphp_core.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
cpqphp_ctrl.c
cpqphp_nvram.c
cpqphp_nvram.h
cpqphp_pci.c PCI: cpqhp: use generic pci_hp_add_bridge() 2012-06-13 15:42:26 -06:00
cpqphp_sysfs.c drivers: autoconvert trivial BKL users to private mutex 2010-10-05 15:01:04 +02:00
fakephp.c PCI: Rename pci_remove_bus_device to pci_stop_and_remove_bus_device 2012-02-27 12:12:18 -08:00
ibmphp.h
ibmphp_core.c PCI: ibmhp: use generic pci_hp_add_bridge() 2012-06-13 15:42:26 -06:00
ibmphp_ebda.c PCI: drivers/pci/hotplug/ibmphp_ebda.c: add missing iounmap 2012-02-14 08:44:47 -08:00
ibmphp_hpc.c PCI hotplug: ibmphp-hpc: semaphore cleanup 2010-10-15 13:09:48 -07:00
ibmphp_pci.c
ibmphp_res.c
Kconfig
Makefile
pci_hotplug_core.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pciehp.h module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pciehp_acpi.c pci: add module.h to files implicitly relying on its presence. 2011-10-31 19:31:23 -04:00
pciehp_core.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pciehp_ctrl.c PCI: pciehp: Handle push button event asynchronously 2011-12-05 10:21:47 -08:00
pciehp_hpc.c PCI: pciehp: Disable/enable link during slot power off/on 2012-02-14 08:45:02 -08:00
pciehp_pci.c PCI: pciehp: use generic pci_hp_add_bridge() 2012-06-13 15:42:26 -06:00
pcihp_skeleton.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pcihp_slot.c pci: Fix files needing export.h for EXPORT_SYMBOL/THIS_MODULE 2011-10-31 19:31:22 -04:00
rpadlpar.h
rpadlpar_core.c PCI: Rename pci_remove_bus_device to pci_stop_and_remove_bus_device 2012-02-27 12:12:18 -08:00
rpadlpar_sysfs.c
rpaphp.h module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
rpaphp_core.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
rpaphp_pci.c
rpaphp_slot.c headers: kobject.h redux 2011-01-10 08:51:44 -08:00
sgi_hotplug.c PCI: sgihp: use generic pci_hp_add_bridge() 2012-06-13 15:42:27 -06:00
shpchp.h module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
shpchp_core.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
shpchp_ctrl.c shpchp: update workqueue usage 2010-10-18 08:33:02 +02:00
shpchp_hpc.c PCI hotplug: shpchp: don't blindly claim non-AMD 0x7450 device IDs 2011-11-14 09:43:14 -08:00
shpchp_pci.c PCI: shpchp: use generic pci_hp_add_bridge() 2012-06-13 15:42:26 -06:00
shpchp_sysfs.c PCI: replace struct pci_bus secondary/subordinate with busn_res 2012-06-13 15:42:22 -06:00