Radeon GPU 在 18.04 下锁定;TTY1 中出现“ring 0 停止”垃圾邮件

use*_*267 5 hardware radeon drivers amd-graphics 18.04

我的radeon驱动程序无法在glxgears100% 的时间内运行(大部分时间它都可以工作,但有时会挂起),并且在尝试运行其他任何东西时会立即或几秒钟后挂起。

当它挂起时,游戏窗口或整个桌面都会冻结。使用 Ctrl+Alt+F1 切换到 TTY1 会显示很多类似这样的错误消息不断被打印(通常它只是针对环 0,有时是针对环 0 和 3,一​​两次是针对 0、3 和 4):

[  129.372362] radeon 0000:0a:00.0: ring 0 stalled for more than 11228msec
[  129.820391] radeon 0000:0a:00.0: ring 3 stalled for more than 11676msec
Run Code Online (Sandbox Code Playgroud)

有时,甚至无法切换到 TTY1,我必须使用 Alt+SysRq+REISUB 强制重启系统。

软件:

  • 内核 4.15.0-39-通用
  • Xubuntu 18.04.1(安装有 UEFI 启动、禁用安全启动和磁盘加密)
  • 使用 Windows 10 进行双启动,其中 GPU 一直运行良好
  • 在 BIOS 中启用了可切换显卡

硬件:

  • 联想E50-80笔记本电脑
  • Intel i5-5200U CPU 搭配 Intel 5500 显卡
  • AMD R5 M330 GPU(我认为这是与8670A、8670M、8690M和R5 M430相同的芯片,代号为HAINAN。我注意到互联网上有很多其他Linux用户对此卡有问题,但它应该得到支持radeon。)

输出glxinfolshw -c video:看https://paste.ubuntu.com/p/RvnN4Prcjm/

的输出sudo avivotool regs all

error: cannot map ctrl region: Operation not permitted
fatal error: unable to see card
Run Code Online (Sandbox Code Playgroud)

冻结dmesg后的部分输出glxgears

[ 2785.769588] radeon 0000:0a:00.0: WB enabled
[ 2785.769590] radeon 0000:0a:00.0: fence driver on ring 0 use gpu addr 0x0000000080000c00 and cpu addr 0x00000000001bfff9
[ 2785.769592] radeon 0000:0a:00.0: fence driver on ring 1 use gpu addr 0x0000000080000c04 and cpu addr 0x00000000a1d8536e
[ 2785.769593] radeon 0000:0a:00.0: fence driver on ring 2 use gpu addr 0x0000000080000c08 and cpu addr 0x000000008ef3a8c5
[ 2785.769594] radeon 0000:0a:00.0: fence driver on ring 3 use gpu addr 0x0000000080000c0c and cpu addr 0x000000003f7ad0b8
[ 2785.769596] radeon 0000:0a:00.0: fence driver on ring 4 use gpu addr 0x0000000080000c10 and cpu addr 0x00000000b08ba6e8
[ 2786.006091] [drm] ring test on 0 succeeded in 1 usecs
[ 2786.006097] [drm] ring test on 1 succeeded in 1 usecs
[ 2786.006102] [drm] ring test on 2 succeeded in 1 usecs
[ 2786.006111] [drm] ring test on 3 succeeded in 4 usecs
[ 2786.006118] [drm] ring test on 4 succeeded in 4 usecs
[ 2786.006232] [drm] ib test on ring 0 succeeded in 0 usecs
[ 2786.006348] [drm] ib test on ring 1 succeeded in 0 usecs
[ 2786.006462] [drm] ib test on ring 2 succeeded in 0 usecs
[ 2786.006478] [drm] ib test on ring 3 succeeded in 0 usecs
[ 2786.006491] [drm] ib test on ring 4 succeeded in 0 usecs
[ 2805.115865] radeon 0000:0a:00.0: ring 3 stalled for more than 10108msec
[ 2805.115877] radeon 0000:0a:00.0: GPU lockup (current fence id 0x0000000000000880 last fence id 0x0000000000000885 on ring 3)
[ 2805.211969] radeon 0000:0a:00.0: ring 0 stalled for more than 10204msec
[ 2805.211982] radeon 0000:0a:00.0: GPU lockup (current fence id 0x00000000000003f1 last fence id 0x00000000000003f5 on ring 0)
[ 2805.243854] asynchronous wait on fence radeon:radeon.gfx:3f5 timed out
[ 2805.243861] asynchronous wait on fence radeon:radeon.gfx:3f3 timed out
[ 2805.566061] show_signal_msg: 13 callbacks suppressed
[ 2805.566064] panel-9-pulseau[2085]: segfault at 90 ip 00007f31cb797618 sp 00007ffd9fd4ae30 error 4 in libgdk-3.so.0.2200.30[7f31cb739000+eb000]
[ 2805.576047] panel-7-statusn[2082]: segfault at 90 ip 00007f47028e1618 sp 00007ffe56773fc0 error 4 in libgdk-3.so.0.2200.30[7f4702883000+eb000]
[ 2805.576647] panel-6-indicat[2080]: segfault at 90 ip 00007f19989cb618 sp 00007ffdf6b9a5a0 error 4 in libgdk-3.so.0.2200.30[7f199896d000+eb000]
[ 2805.578174] panel-5-notific[2079]: segfault at 90 ip 00007f5c37e7d618 sp 00007ffc41930d90 error 4 in libgdk-3.so.0.2200.30[7f5c37e1f000+eb000]
[ 2805.581612] panel-8-power-m[2083]: segfault at 90 ip 00007f5f9c8ce618 sp 00007ffd08911f50 error 4 in libgdk-3.so.0.2200.30[7f5f9c870000+eb000]
[ 2805.628005] radeon 0000:0a:00.0: ring 3 stalled for more than 10620msec
[ 2805.628110] radeon 0000:0a:00.0: GPU lockup (current fence id 0x0000000000000880 last fence id 0x0000000000000885 on ring 3)
[ 2805.641291] terminator[7124]: segfault at 90 ip 00007f8d2a637275 sp 00007fff197601e0 error 4 in libgdk-3.so.0.2200.30[7f8d2a5d9000+eb000]
[ 2805.723849] radeon 0000:0a:00.0: ring 0 stalled for more than 10716msec
[ 2805.723899] radeon 0000:0a:00.0: GPU lockup (current fence id 0x00000000000003f1 last fence id 0x00000000000003f5 on ring 0)
Run Code Online (Sandbox Code Playgroud)

输出sudo cat /sys/kernel/debug/vgaswitcheroo/switch(是的,这是使用 sudo):

 cat: /sys/kernel/debug/vgaswitcheroo/switch: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

直到最近,它才会输出 AMD 卡DynOff在它没有被使用时的状态,DynPwr如果是,并且只有IGD(英特尔)GPU+旁边有一个。echo DIS > /sys/kernel/debug/vgaswitcheroo/switch没有效果。我不知道我改变了什么,但它不再让我阅读文件。

我尝试过的事情:

  • radeontool —— error: cannot find Radeon device
  • 将 nomodeset 添加到启动选项 - 系统未检测到 Intel 和 AMD GPU,所有内容均使用 llvmpipe 渲染(导致帧率不佳)
  • xrandr --setprovideroffloadsink 1 0 - 无明显效果
  • sudo apt-get install xserver-xorg-video-ati - 包已经安装
  • sudo bash -c 'echo OFF > /sys/kernel/debug/vgaswitcheroo/switch'在每次调用之前和之后运行DRI_PRIME=1 glxgears- 没有明显的效果,有时仍然会发生冻结
  • ppa:oibaf/graphics-drivers - 更新的 Mesa 包安装但不修复任何东西
  • ppa:paulo-miguel-dias/pkppa - 更新的 Mesa 包安装但不修复任何东西
  • 安装amdgpu从AMD官方网站-驱动器安装,但X服务器我重新启动后无法启动; AMD 的网站上有一个警告,如果 X 服务器未在 AMD 卡上运行,则它们不会启动(因此它试图在英特尔集成 GPU 上运行)。从 TTY1 卸载驱动程序使 X 再次工作。
  • ./amdgpu-install --px - 安装失败 E: Unable to locate package xserver-xorg-video-modesetting-amdgpu-pro
  • 在 BIOS 中禁用可切换显卡 -xrandr或无法检测到 AMD 卡lshw
  • Xubuntu 18.10 - 没有解决这个问题 - 我最初试图在 18.10 上解决这个问题,但在amdgpu安装程序完全崩溃后降级到 18.04,因为 AMD 只支持 LTS 版本
  • 全新安装 - 不能解决问题
  • 切换安全启动 - 无效
  • 可能还有一些我已经忘记的事情

经测试的软件,带有DRI_PRIME=1命令前缀(所有这些在英特尔 GPU 上都可以正常工作):

  • minetest - 加载菜单正常但不可避免地在加载世界后几秒钟挂起 - 控件在这几秒钟内确实有效
  • 谷歌地球 - 几秒钟后冻结,但控制在前几秒钟工作
  • glxgears - 大部分时间运行,很少挂起
  • openttd, firefox, gimp- 运行良好,显然
  • steam- 到达 Steam 库窗口,该窗口立即冻结;最终随机彩色像素出现在窗口底部

还有什么我可以尝试让 Radeon 工作的吗?

Max*_*yne 2

几天前,我在我的 9 岁索尼 Vaio 上遇到了同样的问题,随机桌面冻结、伪像、关闭,它配备 AMD GPU(我使用 Ubuntu 20.10,有时使用 Windows 10)。几年前,我看到了一些临时的伪影(垂直线、点、糟糕的 3D 图形),但最近几天,它们开始无缘无故地不断出现。

垂直伪影

这些工件、随机块不依赖于操作系统(Windows 或 Linux)、驱动程序等(但是我注意到在 Linux 上更容易出现这些症状)。我还通过 HDMI 电缆连接了第二台显示器,并遇到了相同的症状。人们很容易将这些症状与驾驶员的过错混淆。就我而言,问题不在于软件级别,而在于硬件级别。简而言之,使用计算机一段时间(10-15 分钟)后,它会发热更多(这是正常的),但温度会使 GPU 芯片从主板上膨胀,导致其物理上失去连接。我看到了如下相同的驱动程序消息,因为与主板的连接不良:

[...]
asynchronous wait on fence radeon:radeon.gfx:3f5 timed out
[...]
ring 0 stalled for more than 10716msec
[...]
Run Code Online (Sandbox Code Playgroud)

尝试解决或推迟该问题的唯一方法是使用热风枪对 GPU 进行回流焊。如果您搜索“GPU 回流”,您将找到您需要了解的所有内容。对于遇到这种情况的人,我唯一要说的是不要将主板或 GPU 放入烤箱,这种愚蠢的自制方法被懒惰的人用来熔化焊料,同时烧毁所有东西或制作工作芯片/主板完全死机。只需回流即可真正帮助您的 GPU。祝你好运!

GPU回流

ps 根据我收集的信息,重新植球不会有帮助,因为 99% 的情况下问题出在芯片内部。或者更换芯片,或整个笔记本电脑。这就像一种“疾病”,但是是在电子层面。