summary refs log tree commit diff
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2011-05-11 17:00:32 +0100
committerJesse Barnes <jbarnes@virtuousgeek.org>2011-05-11 09:13:14 -0700
commit69643e4829c5cd13bafe44a6b9f3eb2086e0f618 (patch)
tree037eada00fbb3ca86196a736c289fa31d8c58ac7
parente522a7126c7c144a1dd14c6f217ac31e71082b1d (diff)
downloadlinux-69643e4829c5cd13bafe44a6b9f3eb2086e0f618.tar.gz
PCI hotplug: acpiphp: assume device is in state D0 after powering on a slot.
Devices which do not support PCI configuration space based power
management may not otherwise be enabled.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
-rw-r--r--drivers/pci/hotplug/acpiphp_glue.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index 2f67e9bc2f96..a70fa89f76fd 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@ -827,6 +827,13 @@ static int __ref enable_device(struct acpiphp_slot *slot)
 	acpiphp_set_hpp_values(bus);
 	acpiphp_set_acpi_region(slot);
 	pci_enable_bridges(bus);
+
+	list_for_each_entry(dev, &bus->devices, bus_list) {
+		/* Assume that newly added devices are powered on already. */
+		if (!dev->is_added)
+			dev->current_state = PCI_D0;
+	}
+
 	pci_bus_add_devices(bus);
 
 	list_for_each_entry(func, &slot->funcs, sibling) {