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

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

我的radeon驱动程序无法glxgears100% 地运行(大多数时候它能工作,但有时会挂起),并且在尝试运行其他任何东西时会立即挂起或几秒后挂起。

当它挂起时,游戏窗口或整个桌面都会冻结。使用 Ctrl+Alt+F1 切换到 TTY1 会显示大量错误消息,例如不断打印的这些消息(通常只针对 ring 0,有时针对 ring 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

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

软件:

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

硬件:

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

glxinfo和的输出lshw -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

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)

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

 cat: /sys/kernel/debug/vgaswitcheroo/switch: Operation not permitted

DynOff直到最近,当 AMD 卡未被使用时,它会输出 AMD 卡的状态,DynPwr如果被使用,并且只有IGD(Intel) GPU 在+其旁边。echo DIS > /sys/kernel/debug/vgaswitcheroo/switch没有效果。我不知道我做了什么更改,但它不再允许我读取文件。

我尝试过的事情:

  • radeontool-error: cannot find Radeon device
  • 在启动选项中添加 nomodeset - 系统无法检测到英特尔或 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 软件包,但没有修复任何问题
  • 从 AMD 网站安装amdgpu- 驱动程序已安装,但重启后 X 服务器未启动;AMD 网站有一条警告,如果 X 服务器未在 AMD 卡上运行,则不会启动(因此它尝试在 Intel 集成 GPU 上运行)。从 TTY1 卸载驱动程序可使 X 再次工作。
  • ./amdgpu-install --px- 安装失败,E: Unable to locate package xserver-xorg-video-modesetting-amdgpu-pro
  • 在 BIOS 中禁用可切换显卡 - 无法检测到 AMD 卡xrandrlshw
  • Xubuntu 18.10 - 无法解决问题 - 我原本想在 18.10 上修复此问题,但amdgpu由于 AMD 仅支持 LTS 版本,安装程序完全破坏了 apt,因此降级到 18.04
  • 全新安装 - 无法解决问题
  • 切换安全启动 - 无效果
  • 可能还有一些我忘记的事情

经过测试的软件,带有DRI_PRIME=1命令前缀(所有这些在英特尔 GPU 上运行良好):

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

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

答案1

几天前,我遇到了同样的问题,我的 9 年历史的 Sony 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
[...]

尝试修复或推迟问题的唯一方法是使用热风枪重新焊接 GPU。如果您搜索“GPU 重新焊接”,您将找到您需要了解的一切。对于遇到这种情况的人,我唯一要说的是请勿将主板或 GPU 放入烤箱,这种愚蠢的自制方法是懒人用来熔化焊料并同时烧毁所有东西或使正常工作的芯片/主板完全失效。只需重新焊接它就可以真正帮助您的 GPU。祝你好运!

gpu 重排

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

相关内容