0001 ===========================
0002 Video issues with S3 resume
0003 ===========================
0004
0005 2003-2006, Pavel Machek
0006
0007 During S3 resume, hardware needs to be reinitialized. For most
0008 devices, this is easy, and kernel driver knows how to do
0009 it. Unfortunately there's one exception: video card. Those are usually
0010 initialized by BIOS, and kernel does not have enough information to
0011 boot video card. (Kernel usually does not even contain video card
0012 driver -- vesafb and vgacon are widely used).
0013
0014 This is not problem for swsusp, because during swsusp resume, BIOS is
0015 run normally so video card is normally initialized. It should not be
0016 problem for S1 standby, because hardware should retain its state over
0017 that.
0018
0019 We either have to run video BIOS during early resume, or interpret it
0020 using vbetool later, or maybe nothing is necessary on particular
0021 system because video state is preserved. Unfortunately different
0022 methods work on different systems, and no known method suits all of
0023 them.
0024
0025 Userland application called s2ram has been developed; it contains long
0026 whitelist of systems, and automatically selects working method for a
0027 given system. It can be downloaded from CVS at
0028 www.sf.net/projects/suspend . If you get a system that is not in the
0029 whitelist, please try to find a working solution, and submit whitelist
0030 entry so that work does not need to be repeated.
0031
0032 Currently, VBE_SAVE method (6 below) works on most
0033 systems. Unfortunately, vbetool only runs after userland is resumed,
0034 so it makes debugging of early resume problems
0035 hard/impossible. Methods that do not rely on userland are preferable.
0036
0037 Details
0038 ~~~~~~~
0039
0040 There are a few types of systems where video works after S3 resume:
0041
0042 (1) systems where video state is preserved over S3.
0043
0044 (2) systems where it is possible to call the video BIOS during S3
0045 resume. Unfortunately, it is not correct to call the video BIOS at
0046 that point, but it happens to work on some machines. Use
0047 acpi_sleep=s3_bios.
0048
0049 (3) systems that initialize video card into vga text mode and where
0050 the BIOS works well enough to be able to set video mode. Use
0051 acpi_sleep=s3_mode on these.
0052
0053 (4) on some systems s3_bios kicks video into text mode, and
0054 acpi_sleep=s3_bios,s3_mode is needed.
0055
0056 (5) radeon systems, where X can soft-boot your video card. You'll need
0057 a new enough X, and a plain text console (no vesafb or radeonfb). See
0058 http://www.doesi.gmxhome.de/linux/tm800s3/s3.html for more information.
0059 Alternatively, you should use vbetool (6) instead.
0060
0061 (6) other radeon systems, where vbetool is enough to bring system back
0062 to life. It needs text console to be working. Do vbetool vbestate
0063 save > /tmp/delme; echo 3 > /proc/acpi/sleep; vbetool post; vbetool
0064 vbestate restore < /tmp/delme; setfont <whatever>, and your video
0065 should work.
0066
0067 (7) on some systems, it is possible to boot most of kernel, and then
0068 POSTing bios works. Ole Rohne has patch to do just that at
0069 http://dev.gentoo.org/~marineam/patch-radeonfb-2.6.11-rc2-mm2.
0070
0071 (8) on some systems, you can use the video_post utility and or
0072 do echo 3 > /sys/power/state && /usr/sbin/video_post - which will
0073 initialize the display in console mode. If you are in X, you can switch
0074 to a virtual terminal and back to X using CTRL+ALT+F1 - CTRL+ALT+F7 to get
0075 the display working in graphical mode again.
0076
0077 Now, if you pass acpi_sleep=something, and it does not work with your
0078 bios, you'll get a hard crash during resume. Be careful. Also it is
0079 safest to do your experiments with plain old VGA console. The vesafb
0080 and radeonfb (etc) drivers have a tendency to crash the machine during
0081 resume.
0082
0083 You may have a system where none of above works. At that point you
0084 either invent another ugly hack that works, or write proper driver for
0085 your video card (good luck getting docs :-(). Maybe suspending from X
0086 (proper X, knowing your hardware, not XF68_FBcon) might have better
0087 chance of working.
0088
0089 Table of known working notebooks:
0090
0091
0092 =============================== ===============================================
0093 Model hack (or "how to do it")
0094 =============================== ===============================================
0095 Acer Aspire 1406LC ole's late BIOS init (7), turn off DRI
0096 Acer TM 230 s3_bios (2)
0097 Acer TM 242FX vbetool (6)
0098 Acer TM C110 video_post (8)
0099 Acer TM C300 vga=normal (only suspend on console, not in X),
0100 vbetool (6) or video_post (8)
0101 Acer TM 4052LCi s3_bios (2)
0102 Acer TM 636Lci s3_bios,s3_mode (4)
0103 Acer TM 650 (Radeon M7) vga=normal plus boot-radeon (5) gets text
0104 console back
0105 Acer TM 660 ??? [#f1]_
0106 Acer TM 800 vga=normal, X patches, see webpage (5)
0107 or vbetool (6)
0108 Acer TM 803 vga=normal, X patches, see webpage (5)
0109 or vbetool (6)
0110 Acer TM 803LCi vga=normal, vbetool (6)
0111 Arima W730a vbetool needed (6)
0112 Asus L2400D s3_mode (3) [#f2]_ (S1 also works OK)
0113 Asus L3350M (SiS 740) (6)
0114 Asus L3800C (Radeon M7) s3_bios (2) (S1 also works OK)
0115 Asus M6887Ne vga=normal, s3_bios (2), use radeon driver
0116 instead of fglrx in x.org
0117 Athlon64 desktop prototype s3_bios (2)
0118 Compal CL-50 ??? [#f1]_
0119 Compaq Armada E500 - P3-700 none (1) (S1 also works OK)
0120 Compaq Evo N620c vga=normal, s3_bios (2)
0121 Dell 600m, ATI R250 Lf none (1), but needs xorg-x11-6.8.1.902-1
0122 Dell D600, ATI RV250 vga=normal and X, or try vbestate (6)
0123 Dell D610 vga=normal and X (possibly vbestate (6) too,
0124 but not tested)
0125 Dell Inspiron 4000 ??? [#f1]_
0126 Dell Inspiron 500m ??? [#f1]_
0127 Dell Inspiron 510m ???
0128 Dell Inspiron 5150 vbetool needed (6)
0129 Dell Inspiron 600m ??? [#f1]_
0130 Dell Inspiron 8200 ??? [#f1]_
0131 Dell Inspiron 8500 ??? [#f1]_
0132 Dell Inspiron 8600 ??? [#f1]_
0133 eMachines athlon64 machines vbetool needed (6) (someone please get
0134 me model #s)
0135 HP NC6000 s3_bios, may not use radeonfb (2);
0136 or vbetool (6)
0137 HP NX7000 ??? [#f1]_
0138 HP Pavilion ZD7000 vbetool post needed, need open-source nv
0139 driver for X
0140 HP Omnibook XE3 athlon version none (1)
0141 HP Omnibook XE3GC none (1), video is S3 Savage/IX-MV
0142 HP Omnibook XE3L-GF vbetool (6)
0143 HP Omnibook 5150 none (1), (S1 also works OK)
0144 IBM TP T20, model 2647-44G none (1), video is S3 Inc. 86C270-294
0145 Savage/IX-MV, vesafb gets "interesting"
0146 but X work.
0147 IBM TP A31 / Type 2652-M5G s3_mode (3) [works ok with
0148 BIOS 1.04 2002-08-23, but not at all with
0149 BIOS 1.11 2004-11-05 :-(]
0150 IBM TP R32 / Type 2658-MMG none (1)
0151 IBM TP R40 2722B3G ??? [#f1]_
0152 IBM TP R50p / Type 1832-22U s3_bios (2)
0153 IBM TP R51 none (1)
0154 IBM TP T30 236681A ??? [#f1]_
0155 IBM TP T40 / Type 2373-MU4 none (1)
0156 IBM TP T40p none (1)
0157 IBM TP R40p s3_bios (2)
0158 IBM TP T41p s3_bios (2), switch to X after resume
0159 IBM TP T42 s3_bios (2)
0160 IBM ThinkPad T42p (2373-GTG) s3_bios (2)
0161 IBM TP X20 ??? [#f1]_
0162 IBM TP X30 s3_bios, s3_mode (4)
0163 IBM TP X31 / Type 2672-XXH none (1), use radeontool
0164 (http://fdd.com/software/radeon/) to
0165 turn off backlight.
0166 IBM TP X32 none (1), but backlight is on and video is
0167 trashed after long suspend. s3_bios,
0168 s3_mode (4) works too. Perhaps that gets
0169 better results?
0170 IBM Thinkpad X40 Type 2371-7JG s3_bios,s3_mode (4)
0171 IBM TP 600e none(1), but a switch to console and
0172 back to X is needed
0173 Medion MD4220 ??? [#f1]_
0174 Samsung P35 vbetool needed (6)
0175 Sharp PC-AR10 (ATI rage) none (1), backlight does not switch off
0176 Sony Vaio PCG-C1VRX/K s3_bios (2)
0177 Sony Vaio PCG-F403 ??? [#f1]_
0178 Sony Vaio PCG-GRT995MP none (1), works with 'nv' X driver
0179 Sony Vaio PCG-GR7/K none (1), but needs radeonfb, use
0180 radeontool (http://fdd.com/software/radeon/)
0181 to turn off backlight.
0182 Sony Vaio PCG-N505SN ??? [#f1]_
0183 Sony Vaio vgn-s260 X or boot-radeon can init it (5)
0184 Sony Vaio vgn-S580BH vga=normal, but suspend from X. Console will
0185 be blank unless you return to X.
0186 Sony Vaio vgn-FS115B s3_bios (2),s3_mode (4)
0187 Toshiba Libretto L5 none (1)
0188 Toshiba Libretto 100CT/110CT vbetool (6)
0189 Toshiba Portege 3020CT s3_mode (3)
0190 Toshiba Satellite 4030CDT s3_mode (3) (S1 also works OK)
0191 Toshiba Satellite 4080XCDT s3_mode (3) (S1 also works OK)
0192 Toshiba Satellite 4090XCDT ??? [#f1]_
0193 Toshiba Satellite P10-554 s3_bios,s3_mode (4)[#f3]_
0194 Toshiba M30 (2) xor X with nvidia driver using internal AGP
0195 Uniwill 244IIO ??? [#f1]_
0196 =============================== ===============================================
0197
0198 Known working desktop systems
0199 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0200
0201 =================== ============================= ========================
0202 Mainboard Graphics card hack (or "how to do it")
0203 =================== ============================= ========================
0204 Asus A7V8X nVidia RIVA TNT2 model 64 s3_bios,s3_mode (4)
0205 =================== ============================= ========================
0206
0207
0208 .. [#f1] from https://wiki.ubuntu.com/HoaryPMResults, not sure
0209 which options to use. If you know, please tell me.
0210
0211 .. [#f2] To be tested with a newer kernel.
0212
0213 .. [#f3] Not with SMP kernel, UP only.