S3 恢复时的视频问题¶
2003-2006, Pavel Machek
在 S3 恢复期间,硬件需要重新初始化。对于大多数设备来说,这很容易,内核驱动程序知道如何做到这一点。不幸的是,有一个例外:显卡。这些显卡通常由 BIOS 初始化,而内核没有足够的信息来启动显卡。(内核通常甚至不包含显卡驱动程序 -- 广泛使用的是 vesafb 和 vgacon)。
这对于 swsusp 来说不是问题,因为在 swsusp 恢复期间,BIOS 正常运行,因此显卡会被正常初始化。对于 S1 待机来说,这应该也不是问题,因为硬件应该会保持其状态。
我们要么需要在早期恢复期间运行显卡 BIOS,要么稍后使用 vbetool 解释它,或者在特定的系统上可能不需要任何操作,因为视频状态会被保留。不幸的是,不同的方法在不同的系统上起作用,并且没有已知的方法适用于所有系统。
已经开发了一个名为 s2ram 的用户空间应用程序;它包含一个很长的系统白名单,并自动为给定的系统选择工作方法。它可以从 www.sf.net/projects/suspend 的 CVS 下载。如果您遇到不在白名单中的系统,请尝试找到可行的解决方案,并提交白名单条目,这样就不需要重复工作。
目前,VBE_SAVE 方法(下面的第 6 点)在大多数系统上都有效。不幸的是,vbetool 仅在用户空间恢复后运行,因此使早期恢复问题的调试变得困难/不可能。不依赖于用户空间的方法是更可取的。
细节¶
有几种类型的系统在 S3 恢复后视频可以正常工作
视频状态在 S3 中保持的系统。
在 S3 恢复期间可以调用显卡 BIOS 的系统。不幸的是,在那个时候调用显卡 BIOS 是不正确的,但它碰巧在某些机器上工作。使用 acpi_sleep=s3_bios。
将显卡初始化为 vga 文本模式并且 BIOS 工作良好足以设置视频模式的系统。在这些系统上使用 acpi_sleep=s3_mode。
在某些系统上,s3_bios 会将视频启动到文本模式,因此需要 acpi_sleep=s3_bios,s3_mode。
radeon 系统,其中 X 可以软启动您的显卡。您需要足够新的 X,和一个纯文本控制台(没有 vesafb 或 radeonfb)。有关更多信息,请参阅 http://www.doesi.gmxhome.de/linux/tm800s3/s3.html。或者,您应该使用 vbetool (6) 代替。
其他 radeon 系统,其中 vbetool 足以使系统恢复正常。它需要文本控制台才能工作。执行 vbetool vbestate save > /tmp/delme; echo 3 > /proc/acpi/sleep; vbetool post; vbetool vbestate restore < /tmp/delme; setfont <whatever>,您的视频应该可以工作。
在某些系统上,可以启动大多数内核,然后 POSTing bios 可以工作。Ole Rohne 有一个补丁可以在 http://dev.gentoo.org/~marineam/patch-radeonfb-2.6.11-rc2-mm2 中执行此操作。
在某些系统上,您可以使用 video_post 实用程序或执行 echo 3 > /sys/power/state && /usr/sbin/video_post - 这将在控制台模式下初始化显示。如果您在 X 中,您可以使用 CTRL+ALT+F1 - CTRL+ALT+F7 切换到虚拟终端并返回 X,以使显示再次在图形模式下工作。
现在,如果您传递 acpi_sleep=something,并且它不适用于您的 bios,您将在恢复期间遇到硬崩溃。请小心。此外,最好使用普通的 VGA 控制台进行实验。vesafb 和 radeonfb (等) 驱动程序在恢复期间很容易导致机器崩溃。
您可能有一个上述方法都不起作用的系统。此时,您要么发明另一个可以使用的丑陋黑客,要么为您的显卡编写合适的驱动程序(祝您好运找到文档 :-()。也许从 X 中挂起(合适的 X,了解您的硬件,而不是 XF68_FBcon)可能有更好的工作机会。
已知可工作的笔记本电脑列表
型号 |
黑客方法(或“如何做”) |
---|---|
Acer Aspire 1406LC |
ole 的后期 BIOS 初始化 (7), 关闭 DRI |
Acer TM 230 |
s3_bios (2) |
Acer TM 242FX |
vbetool (6) |
Acer TM C110 |
video_post (8) |
Acer TM C300 |
vga=normal (仅在控制台上挂起,而不是在 X 中), vbetool (6) 或 video_post (8) |
Acer TM 4052LCi |
s3_bios (2) |
Acer TM 636Lci |
s3_bios,s3_mode (4) |
Acer TM 650 (Radeon M7) |
vga=normal 加 boot-radeon (5) 可以恢复文本控制台 |
Acer TM 660 |
??? [1] |
Acer TM 800 |
vga=normal, X 补丁, 请参阅网页 (5) 或 vbetool (6) |
Acer TM 803 |
vga=normal, X 补丁, 请参阅网页 (5) 或 vbetool (6) |
Acer TM 803LCi |
vga=normal, vbetool (6) |
Arima W730a |
需要 vbetool (6) |
Asus L2400D |
s3_mode (3) [2] (S1 也工作正常) |
Asus L3350M (SiS 740) |
|
Asus L3800C (Radeon M7) |
s3_bios (2) (S1 也工作正常) |
Asus M6887Ne |
vga=normal, s3_bios (2), 在 x.org 中使用 radeon 驱动程序而不是 fglrx |
Athlon64 台式机原型 |
s3_bios (2) |
Compal CL-50 |
??? [1] |
Compaq Armada E500 - P3-700 |
无 (1) (S1 也工作正常) |
Compaq Evo N620c |
vga=normal, s3_bios (2) |
Dell 600m, ATI R250 Lf |
无 (1), 但需要 xorg-x11-6.8.1.902-1 |
Dell D600, ATI RV250 |
vga=normal 和 X, 或尝试 vbestate (6) |
Dell D610 |
vga=normal 和 X (也可能 vbestate (6), 但未测试) |
Dell Inspiron 4000 |
??? [1] |
Dell Inspiron 500m |
??? [1] |
Dell Inspiron 510m |
??? |
Dell Inspiron 5150 |
需要 vbetool (6) |
Dell Inspiron 600m |
??? [1] |
Dell Inspiron 8200 |
??? [1] |
Dell Inspiron 8500 |
??? [1] |
Dell Inspiron 8600 |
??? [1] |
eMachines athlon64 机器 |
需要 vbetool (6) (请有人给我型号 #s) |
HP NC6000 |
s3_bios, 可能不使用 radeonfb (2); 或 vbetool (6) |
HP NX7000 |
??? [1] |
HP Pavilion ZD7000 |
需要 vbetool post, X 需要开源 nv 驱动程序 |
HP Omnibook XE3 athlon 版本 |
无 (1) |
HP Omnibook XE3GC |
无 (1), 视频是 S3 Savage/IX-MV |
HP Omnibook XE3L-GF |
vbetool (6) |
HP Omnibook 5150 |
无 (1), (S1 也工作正常) |
IBM TP T20, 型号 2647-44G |
无 (1), 视频是 S3 Inc. 86C270-294 Savage/IX-MV, vesafb 会变得“有趣”,但 X 可以工作。 |
IBM TP A31 / 类型 2652-M5G |
s3_mode (3) [使用 BIOS 1.04 2002-08-23 工作正常,但使用 BIOS 1.11 2004-11-05 完全不工作 :-(] |
IBM TP R32 / 类型 2658-MMG |
无 (1) |
IBM TP R40 2722B3G |
??? [1] |
IBM TP R50p / 类型 1832-22U |
s3_bios (2) |
IBM TP R51 |
无 (1) |
IBM TP T30 236681A |
??? [1] |
IBM TP T40 / 类型 2373-MU4 |
无 (1) |
IBM TP T40p |
无 (1) |
IBM TP R40p |
s3_bios (2) |
IBM TP T41p |
s3_bios (2), 恢复后切换到 X |
IBM TP T42 |
s3_bios (2) |
IBM ThinkPad T42p (2373-GTG) |
s3_bios (2) |
IBM TP X20 |
??? [1] |
IBM TP X30 |
s3_bios, s3_mode (4) |
IBM TP X31 / 类型 2672-XXH |
无 (1), 使用 radeontool (http://fdd.com/software/radeon/) 关闭背光。 |
IBM TP X32 |
无 (1), 但背光灯亮起,并且长时间挂起后视频损坏。s3_bios, s3_mode (4) 也有效。也许这会得到更好的结果? |
IBM Thinkpad X40 类型 2371-7JG |
s3_bios,s3_mode (4) |
IBM TP 600e |
无(1),但需要切换到控制台并返回 X |
Medion MD4220 |
??? [1] |
Samsung P35 |
需要 vbetool (6) |
Sharp PC-AR10 (ATI rage) |
无 (1), 背光灯不关闭 |
Sony Vaio PCG-C1VRX/K |
s3_bios (2) |
Sony Vaio PCG-F403 |
??? [1] |
Sony Vaio PCG-GRT995MP |
无 (1), 使用 'nv' X 驱动程序工作 |
Sony Vaio PCG-GR7/K |
无 (1), 但需要 radeonfb, 使用 radeontool (http://fdd.com/software/radeon/) 关闭背光。 |
Sony Vaio PCG-N505SN |
??? [1] |
Sony Vaio vgn-s260 |
X 或 boot-radeon 可以初始化它 (5) |
Sony Vaio vgn-S580BH |
vga=normal, 但从 X 挂起。除非您返回 X,否则控制台将为空白。 |
Sony Vaio vgn-FS115B |
s3_bios (2),s3_mode (4) |
Toshiba Libretto L5 |
无 (1) |
Toshiba Libretto 100CT/110CT |
vbetool (6) |
Toshiba Portege 3020CT |
s3_mode (3) |
Toshiba Satellite 4030CDT |
s3_mode (3) (S1 也工作正常) |
Toshiba Satellite 4080XCDT |
s3_mode (3) (S1 也工作正常) |
Toshiba Satellite 4090XCDT |
??? [1] |
Toshiba Satellite P10-554 |
s3_bios,s3_mode (4)[#f3]_ |
Toshiba M30 |
|
Uniwill 244IIO |
??? [1] |
已知可工作的台式机系统¶
主板 |
显卡 |
黑客方法(或“如何做”) |
---|---|---|
Asus A7V8X |
nVidia RIVA TNT2 型号 64 |
s3_bios,s3_mode (4) |