1
linux/drivers/pci
Rafael J. Wysocki 734104292f PCI PM: Avoid touching devices behind bridges in unknown state
It generally is better to avoid accessing devices behind bridges that
may not be in the D0 power state, because in that case the bridges'
secondary buses may not be accessible.  For this reason, during the
early phase of resume (ie. with interrupts disabled), before
restoring the standard config registers of a device, check the power
state of the bridge the device is behind and postpone the restoration
of the device's config space, as well as any other operations that
would involve accessing the device, if that state is not D0.

In such cases the restoration of the device's config space will be
retried during the "normal" phase of resume (ie. with interrupts
enabled), so that the bridge can be put into D0 before that happens.

Also, save standard configuration registers of PCI devices during the
"normal" phase of suspend (ie. with interrupts enabled), so that the
bridges the devices are behind can be put into low power states (we
don't put bridges into low power states at the moment, but we may
want to do it in the future and it seems reasonable to design for
that).

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2009-01-07 11:16:05 -08:00
..
hotplug PCI hotplug: remove redundant test in cpq hotplug 2009-01-07 11:13:22 -08:00
pcie PCI: Use msleep instead of cpu_relax during ASPM link retraining 2009-01-07 11:13:28 -08:00
.gitignore
access.c PCI: add interface to set visible size of VPD 2009-01-07 11:13:18 -08:00
bus.c PCI: factor pci_bus_add_child() from pci_bus_add_devices() 2009-01-07 11:13:06 -08:00
dmar.c calculate agaw for each iommu 2009-01-03 14:02:18 +01:00
hotplug-pci.c PCI: fix section mismatch warning in pci_scan_child_bus 2008-03-04 15:07:03 -08:00
hotplug.c
htirq.c genirq: remove sparse irq code 2008-10-16 16:53:15 +02:00
intel-iommu.c intel-iommu: fix bit shift at DOMAIN_FLAG_P2P_MULTIPLE_DEVICES 2009-01-03 14:11:08 +01:00
intr_remapping.c sparseirq: fix !SMP building, #2 2008-12-17 00:15:55 +01:00
intr_remapping.h VT-d: Changes to support KVM 2008-10-15 14:24:08 +02:00
iova.c VT-d: Changes to support KVM 2008-10-15 14:24:08 +02:00
irq.c PCI: struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-07 11:12:23 -08:00
Kconfig PCI: pci-stub module to reserve pci device 2009-01-07 11:12:38 -08:00
Makefile PCI: pci-stub module to reserve pci device 2009-01-07 11:12:38 -08:00
msi.c ACPI/PCI: PCI MSI _OSC support capabilities called when root bridge added 2009-01-07 11:12:31 -08:00
msi.h
pci-acpi.c pci-acpi: Cleanup _OSC evaluation code 2009-01-07 11:12:35 -08:00
pci-driver.c PCI PM: Avoid touching devices behind bridges in unknown state 2009-01-07 11:16:05 -08:00
pci-stub.c PCI: pci-stub module to reserve pci device 2009-01-07 11:12:38 -08:00
pci-sysfs.c PCI: revise VPD access interface 2009-01-07 11:13:17 -08:00
pci.c PCI PM: Avoid touching devices behind bridges in unknown state 2009-01-07 11:16:05 -08:00
pci.h PCI PM: Avoid touching devices behind bridges in unknown state 2009-01-07 11:16:05 -08:00
probe.c PCI: set device wakeup capable flag if platform support is present 2009-01-07 11:13:07 -08:00
proc.c PCI: define PCI resource names in an 'enum' 2009-01-07 11:13:01 -08:00
quirks.c PCI quirks: piix3: warn softer about enabling passive release 2009-01-07 11:12:58 -08:00
remove.c PCI: fix sparse warning in pci_remove_behind_bridge 2008-10-20 10:54:25 -07:00
rom.c PCI: remove excess kernel-doc notation 2008-11-03 14:32:46 -08:00
search.c PCI: Fix reference counting bug 2008-10-22 16:42:35 -07:00
setup-bus.c PCI: use dev_printk for PCI bus resource mssages 2009-01-07 11:13:19 -08:00
setup-irq.c PCI: use dev_printk when possible 2008-06-25 16:05:13 -07:00
setup-res.c PCI: add a new function to map BAR offsets 2009-01-07 11:13:04 -08:00
slot.c PCI: stop leaking 'slot_name' in pci_create_slot 2008-12-09 14:36:03 -08:00
syscall.c PCI: remove unneeded lock_kernel() in drivers/pci/syscall.c. 2008-02-01 15:04:21 -08:00