LINUX.ORG.RU
решено ФорумAdmin

Как заставить vfio загружаться раньше чем драйвер устройства?

 , , ,


1

1

Есть сетевая карта и два NVME. Вроде всё настроил, но при загрузке NVME опережают VFIO, которые мне нужны для QEMU.

ОС Gentoo.

Если потом делать вручную:

echo "0000:06:00.0" > /sys/bus/pci/drivers/nvme/unbind
echo "0000:02:00.0" > /sys/bus/pci/drivers/nvme/unbind
echo "0000:06:00.0" > /sys/bus/pci/drivers/vfio-pci/bind
echo "0000:02:00.0" > /sys/bus/pci/drivers/vfio-pci/bind

То всё работает.

При этом сетевая карта грузится без проблем. Скорее всего проблема в том, что драйвер сетевой карты собран как модуль, а NVME вкомпилирован в ядро. Но вытащить его не получится так как система тоже установлена на третий NVME.

В общем надо как-то сказать, что при загрузке для двух конкретных устройств, вкомпилированный в ядро драйвер загружался позже чем VFIO.

★★★★
Ответ на: комментарий от sehellion

Видел, похожая ситуация, но он исправил это собрав vfio в ядро, а не модулем. У меня же уже всё изначально собрано в ядро.

keeper_b ★★★★
() автор топика
Последнее исправление: keeper_b (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Ага, написал правило и всё заработало как надо.

ACTION=="add", KERNELS=="0000:06:00.0", SUBSYSTEMS=="pci", DRIVERS=="nvme", \
RUN+="/bin/bash -c 'echo $id > /sys/bus/pci/drivers/$driver/unbind'", \
RUN+="/bin/bash -c 'echo $id > /sys/bus/pci/drivers/vfio-pci/bind'" 


ACTION=="add", KERNELS=="0000:02:00.0", SUBSYSTEMS=="pci", DRIVERS=="nvme", \
RUN+="/bin/bash -c 'echo $id > /sys/bus/pci/drivers/$driver/unbind'", \
RUN+="/bin/bash -c 'echo $id > /sys/bus/pci/drivers/vfio-pci/bind'"

Спасибо!

keeper_b ★★★★
() автор топика