kernel-ark/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_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
acpiphp.h
cpci_hotplug_core.c
cpci_hotplug_pci.c PCI: cpci_hotplug: use generic pci_hp_add_bridge() 2012-06-13 15:42:26 -06:00
cpci_hotplug.h
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_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
cpqphp.h
fakephp.c PCI: Rename pci_remove_bus_device to pci_stop_and_remove_bus_device 2012-02-27 12:12:18 -08:00
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
ibmphp_pci.c
ibmphp_res.c
ibmphp.h
Kconfig
Makefile
pci_hotplug_core.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pciehp_acpi.c
pciehp_core.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pciehp_ctrl.c
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
pciehp.h module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pcihp_skeleton.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pcihp_slot.c
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
rpadlpar.h
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
rpaphp.h module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
sgi_hotplug.c PCI: sgihp: use generic pci_hp_add_bridge() 2012-06-13 15:42:27 -06:00
shpchp_core.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
shpchp_ctrl.c
shpchp_hpc.c
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
shpchp.h module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30