|
Centre Mont-Royal
Montreal, Canada July 13-17, 2009 |
|||||
|
Keynotes
Venue
|
Fixing PCI suspend and resumeRafael J. Wysocki (rjw@sisk.pl)Interrupt handlers implemented by some PCI device drivers can misbehave if the device they are supposed to handle is not in the state they expect it to be in. If this happens, interrupt storm is possible and the system may lock up as a result. Unfortunately, if the device in question uses shared interrupts, it can easily happen during suspend to RAM, after the device has been put into a low power state, and even more likely during resume, before the device is brought back to the state it was in before the suspend. On some machines this leads to intermittent resume failures that are very difficult to diagnose in the majority of cases. In Linux kernels prior to 2.6.29-rc3 the power management core did not do anything to prevent such failures from happening, but during the 2.6.29 development cycle we started to address the issue. Still, the solution finally implemented in the 2.6.29 kernel is partial, because it only covers the devices that support the native PCI power management and it only affects the resume part of the code. The complete solution, which is now scheduled for inclusion into 2.6.30 and which is described in the present paper, required us to make some radical changes, including a rearrangement of the major steps performed by the kernel during suspend and resume. However, not only should it make suspend and resume much more reliable on a number of systems, but it should also allow the writers of PCI device drivers to simplify their code, because some standard PCI device power management operations will now be carried out by the core. |
| |||||||||||||||||
|
Copyright © 2009 Linux Symposium Inc. All rights reserved. |
|||||||||||||||||||