Back to home page

OSCL-LXR

 
 

    


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.