Skip to content

Fix hibernation regression on Toshiba Portege R500

Rafael J. Wysocki linux-pm lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest3 patches 82 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/3PCI: Rework default handling of suspend and resumedrivers/pci/pci-driver.c+59 -3154 replies
1/3PCI: Rework default handling of suspend and resume (rebased)drivers/pci/pci-driver.c+63 -310 replies
1/3PCI: Rework default handling of suspend and resume (rebased)drivers/pci/pci-driver.c+63 -310 replies
2/3PCI: Suspend and resume PCI Express ports with interrupts disableddrivers/pci/pcie/portdrv_pci.c+6 -60 replies
2/3PCI: Suspend and resume PCI Express ports with interrupts disableddrivers/pci/pcie/portdrv_pci.c+6 -612 replies
3/3Sound (HDA Intel): Restore PCI configuration space with interrupts offsound/pci/hda/hda_intel.c+6 -20 replies
3/3Sound (HDA Intel): Restore PCI configuration space with interrupts offsound/pci/hda/hda_intel.c+6 -214 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/3] Fix hibernation regression on Toshiba Portege R500

Hi,

The following three patches address the hibernation/suspend issue described in
http://bugzilla.kernel.org/show_bug.cgi?id=12121 and in the very long thread at
http://lkml.org/lkml/2008/12/1/382.

In short, the problem is that resume (from hibernation and/or suspend-to-RAM) occasionally fails (approximately 20-25% of attempts) in the middle of resuming PCI devices. We were able to find a specific layout of devices within the memory address space in which the failure appeared to be extremely unlikely, but this layout was no really valid for other reasons. We also found out that using the NMI watchdog decreased the probablitily of failure which indicated that the problem could be timing-related.

Next, we started to look at the PCI resume code and we generally agreed that it would be a good idea to restore the standard PCI configuration registers with interrupts disabled. Also, we thought we could move the saving of those registers for some devices into functions executed with interrupts disabled.

I have followed these observations and created the three following patches. With all of these patches applied, I'm not able to reproduce the problem.

Thanks,
Rafael