tmp_suning_uos_patched/drivers/pci
Rafael J. Wysocki b3bad72e49 PCI PM: Fix initialization and kexec breakage for some devices
Recent PCI PM changes introduced a bug that causes some devices to be
mishandled after kexec and during early initialization.  The failure
scenario in the kexec case is the following:

* Assume a PCI device is not power-manageable by the platform and has
  PCI_PM_CTRL_NO_SOFT_RESET set in PMCSR.
* The device is put into D3 before kexec (using the native PCI PM).
* After kexec, pci_setup_device() sets the device's power state to
  PCI_UNKNOWN.
* pci_set_power_state(dev, PCI_D0) is called by the device's driver.
* __pci_start_power_transition(dev, PCI_D0) is called and since the
  device is not power-manageable by the platform, it causes
  pci_update_current_state(dev, PCI_D0) to be called.  As a result
  the device's current_state field is updated to PCI_D3, in
  accordance with the contents of its PCI PM registers.
* pci_raw_set_power_state() is called and it changes the device power
  state to D0.  *However*, it should also call pci_restore_bars() to
  reinitialize the device, but it doesn't, because the device's
  current_state field has been modified earlier.

To prevent this from happening, modify pci_platform_power_transition()
so that it doesn't use pci_update_current_state() to update the
current_state field for devices that aren't power-manageable by the
platform.  Instead, this field should be updated directly for devices
that don't support the native PCI PM.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2009-05-19 15:26:07 -07:00
..
hotplug
pcie PCI: Fix pci-e port driver slot_reset bad default return value 2009-05-05 12:20:57 -07:00
.gitignore
access.c docbooks: add/fix PCI kernel-doc 2009-04-22 14:49:33 -07:00
bus.c
dmar.c
hotplug-pci.c
hotplug.c
htirq.c docbooks: add/fix PCI kernel-doc 2009-04-22 14:49:33 -07:00
intel-iommu.c intel-iommu: PAE memory corruption fix 2009-05-11 07:51:01 -07:00
intr_remapping.c
intr_remapping.h
iov.c
iova.c
irq.c
Kconfig
Makefile
msi.c PCI MSI: Fix MSI-X with NIU cards 2009-05-11 17:02:27 -07:00
msi.h
pci-acpi.c
pci-driver.c
pci-stub.c
pci-sysfs.c docbooks: add/fix PCI kernel-doc 2009-04-22 14:49:33 -07:00
pci.c PCI PM: Fix initialization and kexec breakage for some devices 2009-05-19 15:26:07 -07:00
pci.h
probe.c x86/PCI: Move set_pci_bus_resources_arch_default into arch/x86 2009-04-22 13:57:36 -07:00
proc.c
quirks.c
remove.c
rom.c
search.c
setup-bus.c PCI: cleanup debug output resources 2009-04-22 14:49:25 -07:00
setup-irq.c
setup-res.c
slot.c docbooks: add/fix PCI kernel-doc 2009-04-22 14:49:33 -07:00
syscall.c