Проходная карта PCI-туннеля на KVM

Я искал везде последние несколько дней и, похоже, нигде не нашел ответа. У меня есть материнская плата Asus P5E VM DO с процессором Xeon, так что оба поддерживают визуализацию. Я пытаюсь выяснить, как настроить пропуск PCI для моих карт тюнера. И хост, и гостевая система являются Ubuntu 14.04 LTS. Я создал виртуальные машины, используя это руководство, используя [script][2]. Может ли кто-нибудь помочь с пошаговым процессом добавления карт PCI? Я пытался следовать этому руководству, но оно не работает для Ubuntu.

1 ответ

Решение

Это закончилось тем, что было ответом с 2 частями, и вот в случае, если это поможет кому-то еще:


  1. Чтобы ответить на первоначальный вопрос, чтобы добавить проход 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

  1. Теперь, чтобы описанный выше процесс работал, сначала необходимо отсоединить текущий драйвер от карты 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.


  1. Если при добавлении прохода PCI он жалуется на разрешения, выполните следующие действия.

    сервер $ modprobe -r vfio_iommu_type1 сервер $ modprobe vfio_iommu_type1 allow_unsafe_interrupts = 1

Я нашел этот трюк здесь.

Другие вопросы по тегам