Я пытаюсь передать свою видеокарту на виртуальную машину с помощью kvm и libvirt. Я получаю сообщение об ошибке, когда пытаюсь передать карту без привязки карты Ethernet, которая, похоже, находится в той же группе IOMMU, к драйверу vfio-pci.
Я хотел бы использовать этот порт Ethernet на хосте, поэтому мне интересно, могу ли я разделить группу IOMMU. Ссылка на эти вещи кажется это сообщение в блоге который упоминает внизу, что
Более новые ядра, чем использованные в этом примере, разделят эту группу IOMMU, поскольку была добавлена поддержка для демонстрации возможностей изоляции этого набора микросхем, даже если он не поддерживает ACS PCIe напрямую.
Но я использую ядро 4.10, и это сообщение в блоге от 2014 года, поэтому мне интересно, были ли какие-то новые разработки в этой области.
Мой основной вопрос: могу ли я узнать, что группа IOMMU может быть разделена, и если да, то как я могу ее разделить?
Мне не удалось найти какой-либо собственный метод разделения группы IOMMU: если он разделяется, он будет разделен при загрузке
Однако есть патч, который отменяет размещение IOMMU
эта тема приведет вас к этот патч который успешно сочетается с ядром 4.8, которое по умолчанию поставляется с Ubuntu 16.10.
После применения этого патча и сборки нового ядра мои группы IOMMU были разделены, и сквозная передача работает так, как я хочу. Обратите внимание, что теоретически возможна утечка DMA через устройства, но я никогда не слышал об этом, и у меня это работает безупречно.