我正在尝试为 VFIO Passthrough 设置我的双 GPU 系统(这样我的第二个 GPU 就可以被虚拟机充分利用)。为了做到这一点,我需要确保第二个 GPU 不会被驱动程序抓取,而是由或amdgpu
抓取。pci-stub
xen-pciback
不幸的是,我的系统内核为 4.13.4(来自 Ukuu),导致amdgpu
模块加载过早,占用了两个 GPU。我尝试将模块列入黑名单amdgpu
,这种方法可行,但登录后需要我手动modprobe amdgpu
加载amdgpu
驱动程序,这样我才能使用第一个 GPU。
我发现自动加载的唯一方法amdgpu
是添加 modprobe 命令,/etc/rc.local
但是该命令通常在我出现 X 登录提示后 10-20 秒才会执行(如果我忘记等到 modprobe 完成,就导致我必须登录两次)。
有没有什么方法可以可靠地使amdgpu
驱动程序在其他模块之后加载?
编辑:看来我可以做到这一点,如果我将amdgpu
模块列入黑名单,重建initramfs
,然后删除amdgpu
黑名单而不更新initramfs
。这会导致模块按指定的顺序加载,并且一切正常。不幸的是,这只是一个临时解决方案 :-/。
答案1
您可以使用modprobe 的 softdep 命令确保 vfio-pci 在 amdgpu 之前加载。参见以下示例:
# /etc/modprobe.d/vfio-pci.conf
options vfio-pci ids=1002:xxxx
softdep amdgpu pre: vfio-pci
为此,有必要pci-stub.ids
在 grub 命令行中/etc/default/grub