Мне нужен к passtrough контроллер USB 3.0 для VM под qemu.
Мой lspci-nnk:
...
02:00.0 USB controller [0c03]: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller [1912:0014] (rev 03)
Kernel driver in use: xhci_hcd
03:00.0 USB controller [0c03]: VIA Technologies, Inc. VL805 USB 3.0 Host Controller [1106:3483] (rev 01)
Subsystem: Gigabyte Technology Co., Ltd VL805 USB 3.0 Host Controller [1458:5007]
Kernel driver in use: xhci_hcd
...
Тот, который я хочу к passtrough, является uPD720201, это одиноко в своей группе IOMMU.
Мой vfio.conf:
options vfio-pci ids=1002:68f9,1002:aa68,1912:0014 disable_vga=1
#Note : the 1002:68f9 and 1002:aa68 are the gpu card, which is correctly pass trough
Но теперь проблема, кажется, xhci_hcd переопределения драйвера vfio драйвер, потому что это, кажется, правильно загружается при начальной загрузке:
$ dmesg | grep "vfio"
[ 4.475492] vfio: unknown parameter 'vfio_iommu_type1' ignored
[ 4.476319] vfio: unknown parameter 'vfio_virqfd' ignored
[ 4.477177] vfio: unknown parameter 'vfio_pci' ignored
[ 4.478023] vfio: unknown parameter 'ids' ignored
[ 21.546903] vfio-pci 0000:05:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[ 21.568068] vfio_pci: add [1002:68f9[ffff:ffff]] class 0x000000/00000000
[ 21.588151] vfio_pci: add [1002:aa68[ffff:ffff]] class 0x000000/00000000
[ 21.588824] vfio_pci: add [1912:0014[ffff:ffff]] class 0x000000/00000000
[ 27.296307] vfio-pci 0000:05:00.0: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
Я уже пытаюсь поместить в черный список xhci_hcd в blacklist.conf и личинке:
/etc/modprobe.d/blacklist.conf
...
blacklist xhci_hcd
...
/etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="amd_iommu=on iommu=pt kvm_amd.npt=1 modprobe.blacklist=xhci_hcd"
...
Я имею, конечно, делают обновление-initramfs-u и обновление-grub2 после тех модификаций. Во всех случаях это не имеет никакого эффекта, у меня всегда есть "Используемый драйвер ядра: xhci_hcd" единственный способ, которым я нашел для отключения xhci_hcd, должен развязать мою карту:
$ echo '0000:02:00.0' | tee /sys/bus/pci/devices/0000:02:00.0/driver/unbind
но я не знаю, как выполнить его при начальной загрузке (вероятно, прежде vfio присвоение).
Таким образом, если Вы знаете решение отключить xhci_hcd (или другой метод) для получения его работа, я благодарю Вас усовершенствованием :)
Наконец я сделал выбор полностью перекомпилировать ядро из исходных кодов kernel.org и сделать xhci_hcd загруженным, а не встроенным модулем. Теперь я могу отключить xhci_hcd с помощью:
modprobe -r xhci_pci
modprobe -r xhci_hcd
, за которым следует:
modprobe vfio
modprobe vfio_pci
Теперь я могу подключить контроллер к виртуальной машине и получить:
lspci -nnk
...
02:00.0 USB controller [0c03]: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller [1912:0014] (rev 03)
Kernel driver in use: vfio-pci
Kernel modules: xhci_pci
03:00.0 USB controller [0c03]: VIA Technologies, Inc. VL805 USB 3.0 Host Controller [1106:3483] (rev 01)
Subsystem: Gigabyte Technology Co., Ltd VL805 USB 3.0 Host Controller [1458:5007]
Kernel modules: xhci_pci
...
Но, к сожалению, мой встроенный контроллер USB 3.0 (VL805) отключен, поэтому я просто сделать:
...
modprobe xhci_pci
modprobe xhci_hcd
...
Итак, теперь оба контроллера работают на хороших машинах, но это было немного сложно
Примечание: все конфигурации в grub и blacklist.conf бесполезны.
Вы можете поднять меню ботинка ЛИЧИНКИ и отредактировать параметры командной строки, подобные тому, что @matsuzaki сделал в этот пост ?
Если так, тогда Вы можете быть в состоянии добавить черный список, modprobe.blacklist=xhci_hcd
, в в качестве параметра.
Согласно этот пост Вы можете хотеть попробовать F1
, чтобы поднять меню ботинка: askubuntu.com/questions/1014626/how-to-access-grub-menu