linux/drivers/pci
Rafael J. Wysocki 769ba7212f PCI/PM: Fix fallback to PCI_D0 in pci_platform_power_transition()
Commit b51306c (PCI: Set device power state to PCI_D0 for device
without native PM support) modified pci_platform_power_transition()
by adding code causing dev->current_state for devices that don't
support native PCI PM but are power-manageable by the platform to be
changed to PCI_D0 regardless of the value returned by the preceding
platform_pci_set_power_state().  In particular, that also is done
if the platform_pci_set_power_state() has been successful, which
causes the correct power state of the device set by
pci_update_current_state() in that case to be overwritten by PCI_D0.

Fix that mistake by making the fallback to PCI_D0 only happen if
the platform_pci_set_power_state() has returned an error.

[bhelgaas: folded in Yinghai's simplification, added URL & stable info]
Reference: http://lkml.kernel.org/r/27806FC4E5928A408B78E88BBC67A2306F466BBA@ORSMSX101.amr.corp.intel.com
Reported-by: Chris J. Benenati <chris.j.benenati@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Yinghai Lu <yinghai@kernel.org>
Cc: <stable@vger.kernel.org>	# v3.2+
2013-04-15 14:15:43 -06:00
..
hotplug PCI changes for the v3.9 merge window: 2013-02-25 21:18:18 -08:00
pcie PCI changes for the v3.9 merge window: 2013-02-25 21:18:18 -08:00
access.c PCI: Fix PCI Express Capability accessors for PCI_EXP_FLAGS 2013-02-15 11:46:24 -07:00
ats.c
bus.c PCI: Put pci_dev in device tree as early as possible 2013-01-25 16:22:37 -07:00
host-bridge.c
hotplug-pci.c PCI: hotplug: remove pci_do_scan_bus() 2012-06-13 15:42:27 -06:00
htirq.c
ioapic.c PCI changes for the v3.8 merge window: 2012-12-13 12:14:47 -08:00
iov.c PCI changes for the v3.9 merge window: 2013-02-25 21:18:18 -08:00
irq.c PCI: Convert dev_printk(KERN_<LEVEL> to dev_<level>( 2012-11-07 15:24:18 -07:00
Kconfig PCI: Drop bogus default from ARCH_SUPPORTS_MSI 2012-09-10 16:49:52 -06:00
Makefile PCI: Always build setup-bus when PCI is enabled 2012-11-28 13:00:58 -08:00
msi.c PCI/MSI: Enable multiple MSIs with pci_enable_msi_block_auto() 2013-01-24 17:25:13 +01:00
msi.h
of.c
pci-acpi.c ACPI / glue: Add .match() callback to struct acpi_bus_type 2013-03-04 14:23:40 +01:00
pci-driver.c Merge branch 'pci/konstantin-runtime-pm' into next 2013-02-12 13:42:36 -07:00
pci-label.c
pci-stub.c PCI: Convert dev_printk(KERN_<LEVEL> to dev_<level>( 2012-11-07 15:24:18 -07:00
pci-sysfs.c PCI: Remove spurious error for sriov_numvfs store and simplify flow 2012-12-26 10:39:22 -07:00
pci.c PCI/PM: Fix fallback to PCI_D0 in pci_platform_power_transition() 2013-04-15 14:15:43 -06:00
pci.h Merge branch 'pci/yinghai-root-bus-hotplug' into next 2013-01-26 17:35:58 -07:00
probe.c Merge branch 'pci/yinghai-root-bus-hotplug' into next 2013-01-26 17:35:58 -07:00
proc.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
quirks.c PCI: Reduce Ricoh 0xe822 SD card reader base clock frequency to 50MHz 2012-12-26 10:43:06 -07:00
remove.c PCI changes for the v3.9 merge window: 2013-02-25 21:18:18 -08:00
rom.c PCI: Use phys_addr_t for physical ROM address 2012-12-10 11:24:42 -07:00
search.c PCI: Fix reference count leak in pci_dev_present() 2013-01-25 13:49:27 -07:00
setup-bus.c PCI: Add root bus children dev's res to fail list 2013-01-25 13:45:00 -07:00
setup-irq.c PCI: Provide a default pcibios_update_irq() 2012-09-18 17:28:21 -06:00
setup-res.c Merge branch 'pci/nikhil-big-bar-fixes' into next 2012-07-18 14:06:20 -06:00
slot.c
syscall.c
vpd.c
xen-pcifront.c PCI changes for the v3.8 merge window: 2012-12-13 12:14:47 -08:00