我如何强制 amdgpu 模块在其他模块之后加载?

我如何强制 amdgpu 模块在其他模块之后加载?

我正在尝试为 VFIO Passthrough 设置我的双 GPU 系统(这样我的第二个 GPU 就可以被虚拟机充分利用)。为了做到这一点,我需要确保第二个 GPU 不会被驱动程序抓取,而是由或amdgpu抓取。pci-stubxen-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

相关内容