Я пытаюсь передать через PCI Express (PCIe) карту USB 3.0 на виртуальную машину. Тем не менее, XHCI_HCD компилируется в ядро и, таким образом, захватывает устройство перед VFIO.
Если я отсоединяю устройство от XHCI_HCD, устройство не работает в Windows.
Я попытался скомпилировать собственное Ядро, используя конфигурацию Ubuntu, изменив только xhci на модуль, однако это вылетает при запуске.
Посоветуйте, пожалуйста, как подключить физическое USB-устройство к виртуальной машине Windows. Обратите внимание, я пробовал с XEN, который работал нормально, но затем у NVIDIA GPU есть «код 43», который я не смог найти.
обычно libvirt будет делать отсоединение правильно при запуске гостя из-за managed
атрибут, используемый в определение hostdev . Но если Вы хотите/нуждаетесь отладить эту фазу отсоединения от хоста, можно определить libvirt название устройства через
$ virsh nodedev-list --tree
, После того как Вы знаете, что можно отсоединить его от хоста и обязать его с vfio быть готов к передаче, здесь пример:
$ virsh nodedev-detach pci_0005_01_00_0 --driver vfio
все еще необходимо следовать за другими ограничениями включения IOMMU/DMAR правильно и иметь переданное будущим образом устройство в его собственной группе IOMMU (или передать все устройства группы).
можно добавить hostdev к гостевому определению и если Вы не уверены, что добавить там, что можно использовать virsh nodedev-dumpxml
для получения необходимых идентификаторов.
Я имел к в конце, перекомпилировали ядро, также должен был скомпилировать тупик PCI в таблицу ядра xhci_hcd из ядра
И сделать дополнительные шаги для получения хорошего маленького Initrd.img на 43 м вместо 450 м