此问题发生在配备 AMD e-350 APU 和内置 radeon HD 6310 显卡的笔记本电脑上。它运行 Slackware64 版本 14.0。在控制台 (VT) 上,KMS 与 radeon 驱动程序一起使用。
使用 3.10.* 系列内核时会出现此问题。如果启用了控制台屏幕消隐(例如,setterm -blank
或内核参数consoleblank=
),那么当屏幕消隐时,它会立即变为黑色,但在一秒钟或更短的时间内变成完全白色,并保持这种状态,直到它取消消隐。我已经尝试并在网上搜索过,但没有成功解决这个问题。
我要补充的是,如果 (a) KMS 被禁用并且控制台视频配置为vga=
,或者 (b) 3.2.* 系列内核与 KMS 一起使用,则屏幕会正常空白。由于各种原因,这些可能性不太适合我的使用。我想让它与 3.10.* 内核一起正常工作。
我欢迎任何建议。如果需要的话我也可以提供更多信息。
答案1
我又搜索了一些,发现这个线程,这表明可以使用 radeon 参数来修复该问题backlight=0
,该参数在 3.18.* 内核及更高版本上可用。
我碰巧有 3.18.7 可以尝试,它与backlight0
.然而,出现了一个新问题:这个内核破坏了我的防火墙,需要重新配置和重新编译才能修复。鉴于需要重新编译,我将源码更新到最新的3.18.28后再重新编译。这样,防火墙就修复了,但控制台消隐修复不再起作用。现在,backlight=0
当 radeon 加载时,整个控制台将永久变暗。除了重启没有办法恢复。如果我尝试backlight=1
改为,控制台第一次会显示空白,但随后会显示为白色(如上面链接的线程中所述)。
因此,这已经演变成一个需要更多调查的相关问题。
答案2
我又做了一些调查。首先,我查看了从 3.18.7(消隐工作正常backlight=0
)到 3.18.28(损坏)的所有增量补丁。最可疑的变化是从 0.22 到 0.23 的补丁。
所以我编译了 3.18.22 并且它可以与backlight=0
.然后转到 3.18.23,它确实被破坏了:backlight=0
再次导致永久黑屏。然后我从 3.18.23 的代码中删除了两行可疑的行。它们出现在文件中drivers/gpu/drm/radeon/atombios_encoders.c
并且是相同的调用:
atombios_set_backlight_level(radeon_encoder, dig->backlight_level);
如果我评论这些调用并重新编译,它就可以正常工作。我怀疑在任何有此问题的给定硬件上可能只需要删除其中一个调用。
最后,我想指出的是,我尝试了来自 Slackware64 的较新内核,版本 4.4.5 -current。这与 配合得很好backlight=0
,不需要破解任何东西。