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 恢复后视频可以正常工作的几种类型的系统

  1. 视频状态在 S3 期间被保留的系统。

  2. 可以在 S3 恢复期间调用视频 BIOS 的系统。 不幸的是,此时调用视频 BIOS 是不正确的,但它在某些机器上恰好有效。 使用 acpi_sleep=s3_bios。

  3. 将显卡初始化为 vga 文本模式,并且 BIOS 工作良好到足以设置视频模式的系统。 在这些系统上使用 acpi_sleep=s3_mode。

  4. 在某些系统上,s3_bios 将视频启动到文本模式,并且需要 acpi_sleep=s3_bios,s3_mode。

  5. radeon 系统,X 可以软启动您的显卡。 您需要足够新的 X 和纯文本控制台(没有 vesafb 或 radeonfb)。 有关更多信息,请参见 http://www.doesi.gmxhome.de/linux/tm800s3/s3.html。 或者,您应该使用 vbetool (6) 代替。

  6. 其他 radeon 系统,vbetool 足以使系统恢复运行。 它需要文本控制台才能工作。 执行 vbetool vbestate save > /tmp/delme; echo 3 > /proc/acpi/sleep; vbetool post; vbetool vbestate restore < /tmp/delme; setfont <whatever>,您的视频应该可以工作。

  7. 在某些系统上,可以启动大部分内核,然后 POSTing bios 才能工作。 Ole Rohne 在 http://dev.gentoo.org/~marineam/patch-radeonfb-2.6.11-rc2-mm2 有一个补丁来做到这一点。

  8. 在某些系统上,您可以使用 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(等等)驱动程序在恢复期间容易导致机器崩溃。

您可能有一个上述方法都不起作用的系统。 此时,您可以发明另一个有效的丑陋 hack,或者为您的显卡编写合适的驱动程序(祝您好运获得文档 :-()。 也许从 X 挂起(合适的 X,了解您的硬件,而不是 XF68_FBcon)可能更有可能工作。

已知可工作的笔记本电脑列表

型号

hack(或“如何做”)

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

none (1)(S1 也可以正常工作)

Compaq Evo N620c

vga=normal,s3_bios (2)

Dell 600m, ATI R250 Lf

none (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)(有人可以告诉我型号吗)

HP NC6000

s3_bios,可能不使用 radeonfb (2); 或 vbetool (6)

HP NX7000

??? [1]

HP Pavilion ZD7000

需要 vbetool post,X 需要开源 nv 驱动程序

HP Omnibook XE3 athlon 版本

none (1)

HP Omnibook XE3GC

none (1),视频是 S3 Savage/IX-MV

HP Omnibook XE3L-GF

vbetool (6)

HP Omnibook 5150

none (1),(S1 也可以正常工作)

IBM TP T20, 型号 2647-44G

none (1),视频是 S3 Inc. 86C270-294 Savage/IX-MV,vesafb 变得“有趣”,但 X 可以工作。

IBM TP A31 / Type 2652-M5G

s3_mode (3) [使用 BIOS 1.04 2002-08-23 工作正常,但使用 BIOS 1.11 2004-11-05 完全不工作 :-(]

IBM TP R32 / Type 2658-MMG

none (1)

IBM TP R40 2722B3G

??? [1]

IBM TP R50p / Type 1832-22U

s3_bios (2)

IBM TP R51

none (1)

IBM TP T30 236681A

??? [1]

IBM TP T40 / Type 2373-MU4

none (1)

IBM TP T40p

none (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 / Type 2672-XXH

none (1),使用 radeontool (http://fdd.com/software/radeon/) 关闭背光。

IBM TP X32

none (1),但长时间挂起后背光亮起且视频损坏。 s3_bios, s3_mode (4) 也有效。 也许这会得到更好的结果?

IBM Thinkpad X40 Type 2371-7JG

s3_bios,s3_mode (4)

IBM TP 600e

none(1),但需要切换到控制台并返回到 X

Medion MD4220

??? [1]

Samsung P35

需要 vbetool (6)

Sharp PC-AR10 (ATI rage)

none (1),背光不关闭

Sony Vaio PCG-C1VRX/K

s3_bios (2)

Sony Vaio PCG-F403

??? [1]

Sony Vaio PCG-GRT995MP

none (1),使用 ‘nv’ X 驱动程序

Sony Vaio PCG-GR7/K

none (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

none (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) [3]

Toshiba M30

  1. 使用内部 AGP 对 nvidia 驱动程序执行 xor X

Uniwill 244IIO

??? [1]

已知可工作的桌面系统

主板

显卡

hack(或“如何做”)

Asus A7V8X

nVidia RIVA TNT2 model 64

s3_bios,s3_mode (4)