s2ram.txt 2.0 KB

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