背景:
我给自己买了一个雷电 eGPU 机箱 (Razer Core),我想在 Linux 上将它与我的 AMD GPU (Rx480) 一起使用。我使用内核 5.0。在 PC 运行时插入 eGPU 似乎可以工作。
> DRI_PRIME=1 glxinfo | grep "OpenGL renderer"
OpenGL renderer string: AMD Radeon (TM) RX 480 Graphics (POLARIS10, DRM 3.27.0, 5.0.16-050016-generic, LLVM 7.0.0)
但是,拔掉 GPU 会冻结系统。使用以下命令禁用 PCI 设备也会导致冻结:
> sudo sh -c 'echo 1 > /sys/bus/pci/devices/0000:06:04.0/remove'
显然,原因是图形驱动程序 (amdgpu) 仍在使用该设备。所以我试图结束图形驱动程序:
> sudo modprobe -r amdgpu
modprobe: FATAL: Module amdgpu is in use
使用驱动模块的应用程序是显示管理器(lightdm 1.26.0)。
有效的是切换到 Ctrl-Alt-F1 控制台之一并执行:
> sudo service lightdm stop
> sudo modprobe -r amdgpu
> sudo sh -c 'echo 1 > /sys/bus/pci/devices/0000:06:04.0/remove'
[Unpluging the eGPU]
> sudo service lightdm start
然后切换回桌面 (Ctrl-Alt-F7)。但是,所有桌面应用程序都会以这种方式丢失。
问题:
我可以在不关闭 lightdm 的情况下以某种方式删除 amdgpu 驱动程序吗?或者我可以在不丢失所有桌面应用程序的情况下重新启动 lightdm 吗?
从技术上讲是可能的。但是,AMD 没有为 Linux 实现它。
来源:https ://cgit.freedesktop.org/~agd5f/linux/tree/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c?h=drm-next-5.7
也许你会幸运地解绑 GPU:
echo -n "0000:06:04.0" > /sys/bus/pci/drivers/amdgpu/unbind
然后删除。
根据这个错误: https: //bugs.freedesktop.org/show_bug.cgi?id=111229 在内核 4.19 上可以取消绑定,并在内核 5.3 上修复。