1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- How to get s2ram working
- ~~~~~~~~~~~~~~~~~~~~~~~~
- 2006 Linus Torvalds
- 2006 Pavel Machek
- 1) Check suspend.sf.net, program s2ram there has long whitelist of
- "known ok" machines, along with tricks to use on each one.
- 2) If that does not help, try reading tricks.txt and
- video.txt. Perhaps problem is as simple as broken module, and
- simple module unload can fix it.
- 3) You can use Linus' TRACE_RESUME infrastructure, described below.
- Using TRACE_RESUME
- ~~~~~~~~~~~~~~~~~~
- I've been working at making the machines I have able to STR, and almost
- always it's a driver that is buggy. Thank God for the suspend/resume
- debugging - the thing that Chuck tried to disable. That's often the _only_
- way to debug these things, and it's actually pretty powerful (but
- time-consuming - having to insert TRACE_RESUME() markers into the device
- driver that doesn't resume and recompile and reboot).
- Anyway, the way to debug this for people who are interested (have a
- machine that doesn't boot) is:
- - enable PM_DEBUG, and PM_TRACE
- - use a script like this:
- #!/bin/sh
- sync
- echo 1 > /sys/power/pm_trace
- echo mem > /sys/power/state
- to suspend
- - if it doesn't come back up (which is usually the problem), reboot by
- holding the power button down, and look at the dmesg output for things
- like
- Magic number: 4:156:725
- hash matches drivers/base/power/resume.c:28
- hash matches device 0000:01:00.0
- which means that the last trace event was just before trying to resume
- device 0000:01:00.0. Then figure out what driver is controlling that
- device (lspci and /sys/devices/pci* is your friend), and see if you can
- fix it, disable it, or trace into its resume function.
- For example, the above happens to be the VGA device on my EVO, which I
- used to run with "radeonfb" (it's an ATI Radeon mobility). It turns out
- that "radeonfb" simply cannot resume that device - it tries to set the
- PLL's, and it just _hangs_. Using the regular VGA console and letting X
- resume it instead works fine.
|