Проходная карта PCI-туннеля на KVM
Я искал везде последние несколько дней и, похоже, нигде не нашел ответа. У меня есть материнская плата Asus P5E VM DO с процессором Xeon, так что оба поддерживают визуализацию. Я пытаюсь выяснить, как настроить пропуск PCI для моих карт тюнера. И хост, и гостевая система являются Ubuntu 14.04 LTS. Я создал виртуальные машины, используя это руководство, используя [script][2]. Может ли кто-нибудь помочь с пошаговым процессом добавления карт PCI? Я пытался следовать этому руководству, но оно не работает для Ubuntu.
1 ответ
Это закончилось тем, что было ответом с 2 частями, и вот в случае, если это поможет кому-то еще:
- Чтобы ответить на первоначальный вопрос, чтобы добавить проход PCI, лучше всего использовать Virtual Machine Manager. Выберите вашу виртуальную машину и нажмите Открыть. Перейдите в View-Details и нажмите кнопку "Добавить оборудование". Вы также можете выполнить то же самое с помощью командной строки:
server$ virsh edit VM_name
и добавьте эти строки в файл XML.
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x01' function='0x2'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</hostdev>
Вы можете найти имя домена, шины, слота и функции, используя
lspci -t
lspci -n
- Теперь, чтобы описанный выше процесс работал, сначала необходимо отсоединить текущий драйвер от карты PCI и связать его с драйвером виртуальной машины. В моем случае это была выдержка из команды lspci --v
server$ lspci -nnv
01:01.0 Multimedia video controller [0400]: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [14f1:8800] (rev 05)
Subsystem: DViCO Corporation FusionHDTV 5 Gold [18ac:d500]
Flags: bus master, medium devsel, latency 64, IRQ 17
Memory at fb000000 (32-bit, non-prefetchable) [size=16M]
Capabilities: <access denied>
Kernel driver in use: cx8800
Инструкции по отмене привязки на сайте проекта KVM не помогают, потому что они ссылаются на pci-заглушку, которая устарела (насколько я понимаю). Вместо этого выполните следующие действия, чтобы отсоединить драйвер и связать его с драйвером VFIO:
server$ sudo modprobe kvm_intel
server$ sudo modprobe kvm
server$ kvm-ok
server$ modprobe vfio-pci
server$ sudo chmod 222 /sys/bus/pci/drivers/vfio-pci/new_id
server$ sudo chmod 222 /sys/bus/pci/devices/0000\:01\:01.2/driver/unbind
server$ echo 0000:01:01.2 > /sys/bus/pci/devices/0000\:01\:01.2/driver/unbind
server$ echo "14f1 8802" > /sys/bus/pci/drivers/vfio-pci/new_id
Вы заметите, что мне пришлось использовать chmod, чтобы получить разрешение на отсоединение / привязку драйвера. Опять же, вам нужно сделать шаг 2, прежде чем вы сможете сделать шаг 1.
Если при добавлении прохода PCI он жалуется на разрешения, выполните следующие действия.
сервер $ modprobe -r vfio_iommu_type1 сервер $ modprobe vfio_iommu_type1 allow_unsafe_interrupts = 1
Я нашел этот трюк здесь.