LINUX.ORG.RU

История изменений

Исправление u5er, (текущая версия) :

Покажу на примере сетёвки. С юсб всё аналогично.

Сначала с помощью lspci -nnk узнаёшь подробности об устройстве.

00:19.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I218-V [8086:15a1] (rev 05)
	DeviceName:  Onboard LAN
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:e000]
	Kernel driver in use: e1000e

Сначала отвязываешь устройство, используя цифры в самом начале и имя драйвера.
echo 0000:00:19.0 > /sys/bus/pci/drivers/e1000e/unbind
Далее привязываешь его к драйверу vfio-pci используя значения из квадратных скобок
echo "8086 15a1" > /sys/bus/pci/drivers/vfio-pci/new_id

После этого можно использовать это устройство в команде запуска виртуалки следующим образом:

qemu-system-x86_64 \
-name "Win10-min" \
-smp 12,cores=6,threads=2,sockets=1 -cpu host,kvm=off \
-machine accel=kvm \
-boot menu=on \
-rtc base=localtime \
-nic none \
-device virtio-gpu-pci \
-device vfio-pci,host=00:19.0 \
-device vfio-pci,host=00:1f.2 \
$*

-device vfio-pci,host=00:19.0 - это вот как раз проброс.

Но учитывать надо вот что. В выхлопе dmesg хоста должен быть похожий участок:

[    6.535634] pci 0000:ff:0b.0: Adding to iommu group 0
[    6.535707] pci 0000:ff:0b.1: Adding to iommu group 0
[    6.535780] pci 0000:ff:0b.2: Adding to iommu group 0
[    6.535930] pci 0000:ff:0c.0: Adding to iommu group 1
[    6.536002] pci 0000:ff:0c.1: Adding to iommu group 1
[    6.536074] pci 0000:ff:0c.2: Adding to iommu group 1
[    6.536151] pci 0000:ff:0c.3: Adding to iommu group 1
[    6.536224] pci 0000:ff:0c.4: Adding to iommu group 1
[    6.536297] pci 0000:ff:0c.5: Adding to iommu group 1
[    6.536432] pci 0000:ff:0f.0: Adding to iommu group 2
[    6.536505] pci 0000:ff:0f.1: Adding to iommu group 2
[    6.536577] pci 0000:ff:0f.4: Adding to iommu group 2
[    6.536650] pci 0000:ff:0f.5: Adding to iommu group 2
[    6.536723] pci 0000:ff:0f.6: Adding to iommu group 2
[    6.536860] pci 0000:ff:10.0: Adding to iommu group 3
[    6.536933] pci 0000:ff:10.1: Adding to iommu group 3
[    6.537006] pci 0000:ff:10.5: Adding to iommu group 3
[    6.537079] pci 0000:ff:10.6: Adding to iommu group 3
[    6.537155] pci 0000:ff:10.7: Adding to iommu group 3
[    6.537252] pci 0000:ff:12.0: Adding to iommu group 4
[    6.537328] pci 0000:ff:12.1: Adding to iommu group 4
[    6.537502] pci 0000:ff:13.0: Adding to iommu group 5
[    6.537577] pci 0000:ff:13.1: Adding to iommu group 5
[    6.537650] pci 0000:ff:13.2: Adding to iommu group 5
[    6.537724] pci 0000:ff:13.3: Adding to iommu group 5
[    6.537798] pci 0000:ff:13.4: Adding to iommu group 5
[    6.537871] pci 0000:ff:13.5: Adding to iommu group 5
[    6.537946] pci 0000:ff:13.6: Adding to iommu group 5
[    6.538021] pci 0000:ff:13.7: Adding to iommu group 5
[    6.538198] pci 0000:ff:14.0: Adding to iommu group 6
[    6.538276] pci 0000:ff:14.1: Adding to iommu group 6
[    6.538351] pci 0000:ff:14.2: Adding to iommu group 6
[    6.538425] pci 0000:ff:14.3: Adding to iommu group 6
[    6.538501] pci 0000:ff:14.4: Adding to iommu group 6
[    6.538576] pci 0000:ff:14.5: Adding to iommu group 6
[    6.538651] pci 0000:ff:14.6: Adding to iommu group 6
[    6.538726] pci 0000:ff:14.7: Adding to iommu group 6
[    6.538847] pci 0000:ff:15.0: Adding to iommu group 7
[    6.538923] pci 0000:ff:15.1: Adding to iommu group 7
[    6.538999] pci 0000:ff:15.2: Adding to iommu group 7
[    6.539075] pci 0000:ff:15.3: Adding to iommu group 7
[    6.539190] pci 0000:ff:16.0: Adding to iommu group 8
[    6.539268] pci 0000:ff:16.6: Adding to iommu group 8
[    6.539345] pci 0000:ff:16.7: Adding to iommu group 8
[    6.539477] pci 0000:ff:17.0: Adding to iommu group 9
[    6.539556] pci 0000:ff:17.4: Adding to iommu group 9
[    6.539633] pci 0000:ff:17.5: Adding to iommu group 9
[    6.539710] pci 0000:ff:17.6: Adding to iommu group 9
[    6.539787] pci 0000:ff:17.7: Adding to iommu group 9
[    6.539920] pci 0000:ff:1e.0: Adding to iommu group 10
[    6.539999] pci 0000:ff:1e.1: Adding to iommu group 10
[    6.540077] pci 0000:ff:1e.2: Adding to iommu group 10
[    6.540159] pci 0000:ff:1e.3: Adding to iommu group 10
[    6.540236] pci 0000:ff:1e.4: Adding to iommu group 10
[    6.540332] pci 0000:ff:1f.0: Adding to iommu group 11
[    6.540412] pci 0000:ff:1f.2: Adding to iommu group 11
[    6.540485] pci 0000:00:00.0: Adding to iommu group 12
[    6.540560] pci 0000:00:01.0: Adding to iommu group 13
[    6.540634] pci 0000:00:01.1: Adding to iommu group 14
[    6.540707] pci 0000:00:02.0: Adding to iommu group 15
[    6.540781] pci 0000:00:02.3: Adding to iommu group 16
[    6.540854] pci 0000:00:03.0: Adding to iommu group 17
[    6.540928] pci 0000:00:05.0: Adding to iommu group 18
[    6.541000] pci 0000:00:05.1: Adding to iommu group 19
[    6.541089] pci 0000:00:05.2: Adding to iommu group 20
[    6.541166] pci 0000:00:11.0: Adding to iommu group 21
[    6.541252] pci 0000:00:11.4: Adding to iommu group 22
[    6.541324] pci 0000:00:14.0: Adding to iommu group 23
[    6.541409] pci 0000:00:16.0: Adding to iommu group 24
[    6.541481] pci 0000:00:19.0: Adding to iommu group 25
[    6.541554] pci 0000:00:1c.0: Adding to iommu group 26
[    6.541627] pci 0000:00:1c.3: Adding to iommu group 27
[    6.541700] pci 0000:00:1c.4: Adding to iommu group 28
[    6.541776] pci 0000:00:1c.7: Adding to iommu group 29
[    6.541886] pci 0000:00:1f.0: Adding to iommu group 30
[    6.541968] pci 0000:00:1f.2: Adding to iommu group 30
[    6.542049] pci 0000:00:1f.3: Adding to iommu group 30
[    6.542137] pci 0000:02:00.0: Adding to iommu group 31
[    6.542210] pci 0000:05:00.0: Adding to iommu group 32
[    6.542283] pci 0000:06:00.0: Adding to iommu group 33
[    6.542360] pci 0000:07:00.0: Adding to iommu group 34
[    6.543201] pci 0000:07:00.1: Adding to iommu group 35
[    6.543273] pci 0000:09:00.0: Adding to iommu group 36
[    6.543346] pci 0000:0a:00.0: Adding to iommu group 37
[    6.543420] pci 0000:0b:00.0: Adding to iommu group 38
[    6.543477] pci 0000:0c:00.0: Adding to iommu group 38

Обрати внимание, что в одну группу может попасть несколько устройств. Фишка в том, что их все следует как минимум отвязать от их хостовых драйверов перед пробросом, иначе проброс не заработает.

Исходная версия u5er, :

Покажу на примере сетёвки. С юсб всё аналогично.

Сначала с помощью lspci -nnk узнаёшь подробности об устройстве.

00:19.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I218-V [8086:15a1] (rev 05)
	DeviceName:  Onboard LAN
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:e000]
	Kernel driver in use: e1000e

Сначала отвязываешь устройство, используя цифры в самом начале и имя драйвера.
echo 0000:00:19.0 > /sys/bus/pci/drivers/e1000e/unbind
Далее привязываешь его к драйверу vfio-pci используя значения из квадратных скобок
echo "8086 15a1" > /sys/bus/pci/drivers/vfio-pci/new_id

После этого можно использовать это устройство в команде запуска виртуалки следующим образом:

qemu-system-x86_64 \
-name "Win10-min" \
-smp 12,cores=6,threads=2,sockets=1 -cpu host,kvm=off \
-machine accel=kvm \
-boot menu=on \
-rtc base=localtime \
-nic none \
-device virtio-gpu-pci \
-device vfio-pci,host=00:19.0 \
-device vfio-pci,host=00:1f.2 \
$*

-device vfio-pci,host=00:19.0 - это вот как раз проброс.

Но учитывать надо вот что. В выхлопе dmesg хоста должен быть похожий участок:

[    6.535634] pci 0000:ff:0b.0: Adding to iommu group 0
[    6.535707] pci 0000:ff:0b.1: Adding to iommu group 0
[    6.535780] pci 0000:ff:0b.2: Adding to iommu group 0
[    6.535930] pci 0000:ff:0c.0: Adding to iommu group 1
[    6.536002] pci 0000:ff:0c.1: Adding to iommu group 1
[    6.536074] pci 0000:ff:0c.2: Adding to iommu group 1
[    6.536151] pci 0000:ff:0c.3: Adding to iommu group 1
[    6.536224] pci 0000:ff:0c.4: Adding to iommu group 1
[    6.536297] pci 0000:ff:0c.5: Adding to iommu group 1
[    6.536432] pci 0000:ff:0f.0: Adding to iommu group 2
[    6.536505] pci 0000:ff:0f.1: Adding to iommu group 2
[    6.536577] pci 0000:ff:0f.4: Adding to iommu group 2
[    6.536650] pci 0000:ff:0f.5: Adding to iommu group 2
[    6.536723] pci 0000:ff:0f.6: Adding to iommu group 2
[    6.536860] pci 0000:ff:10.0: Adding to iommu group 3
[    6.536933] pci 0000:ff:10.1: Adding to iommu group 3
[    6.537006] pci 0000:ff:10.5: Adding to iommu group 3
[    6.537079] pci 0000:ff:10.6: Adding to iommu group 3
[    6.537155] pci 0000:ff:10.7: Adding to iommu group 3
[    6.537252] pci 0000:ff:12.0: Adding to iommu group 4
[    6.537328] pci 0000:ff:12.1: Adding to iommu group 4
[    6.537502] pci 0000:ff:13.0: Adding to iommu group 5
[    6.537577] pci 0000:ff:13.1: Adding to iommu group 5
[    6.537650] pci 0000:ff:13.2: Adding to iommu group 5
[    6.537724] pci 0000:ff:13.3: Adding to iommu group 5
[    6.537798] pci 0000:ff:13.4: Adding to iommu group 5
[    6.537871] pci 0000:ff:13.5: Adding to iommu group 5
[    6.537946] pci 0000:ff:13.6: Adding to iommu group 5
[    6.538021] pci 0000:ff:13.7: Adding to iommu group 5
[    6.538198] pci 0000:ff:14.0: Adding to iommu group 6
[    6.538276] pci 0000:ff:14.1: Adding to iommu group 6
[    6.538351] pci 0000:ff:14.2: Adding to iommu group 6
[    6.538425] pci 0000:ff:14.3: Adding to iommu group 6
[    6.538501] pci 0000:ff:14.4: Adding to iommu group 6
[    6.538576] pci 0000:ff:14.5: Adding to iommu group 6
[    6.538651] pci 0000:ff:14.6: Adding to iommu group 6
[    6.538726] pci 0000:ff:14.7: Adding to iommu group 6
[    6.538847] pci 0000:ff:15.0: Adding to iommu group 7
[    6.538923] pci 0000:ff:15.1: Adding to iommu group 7
[    6.538999] pci 0000:ff:15.2: Adding to iommu group 7
[    6.539075] pci 0000:ff:15.3: Adding to iommu group 7
[    6.539190] pci 0000:ff:16.0: Adding to iommu group 8
[    6.539268] pci 0000:ff:16.6: Adding to iommu group 8
[    6.539345] pci 0000:ff:16.7: Adding to iommu group 8
[    6.539477] pci 0000:ff:17.0: Adding to iommu group 9
[    6.539556] pci 0000:ff:17.4: Adding to iommu group 9
[    6.539633] pci 0000:ff:17.5: Adding to iommu group 9
[    6.539710] pci 0000:ff:17.6: Adding to iommu group 9
[    6.539787] pci 0000:ff:17.7: Adding to iommu group 9
[    6.539920] pci 0000:ff:1e.0: Adding to iommu group 10
[    6.539999] pci 0000:ff:1e.1: Adding to iommu group 10
[    6.540077] pci 0000:ff:1e.2: Adding to iommu group 10
[    6.540159] pci 0000:ff:1e.3: Adding to iommu group 10
[    6.540236] pci 0000:ff:1e.4: Adding to iommu group 10
[    6.540332] pci 0000:ff:1f.0: Adding to iommu group 11
[    6.540412] pci 0000:ff:1f.2: Adding to iommu group 11
[    6.540485] pci 0000:00:00.0: Adding to iommu group 12
[    6.540560] pci 0000:00:01.0: Adding to iommu group 13
[    6.540634] pci 0000:00:01.1: Adding to iommu group 14
[    6.540707] pci 0000:00:02.0: Adding to iommu group 15
[    6.540781] pci 0000:00:02.3: Adding to iommu group 16
[    6.540854] pci 0000:00:03.0: Adding to iommu group 17
[    6.540928] pci 0000:00:05.0: Adding to iommu group 18
[    6.541000] pci 0000:00:05.1: Adding to iommu group 19
[    6.541089] pci 0000:00:05.2: Adding to iommu group 20
[    6.541166] pci 0000:00:11.0: Adding to iommu group 21
[    6.541252] pci 0000:00:11.4: Adding to iommu group 22
[    6.541324] pci 0000:00:14.0: Adding to iommu group 23
[    6.541409] pci 0000:00:16.0: Adding to iommu group 24
[    6.541481] pci 0000:00:19.0: Adding to iommu group 25
[    6.541554] pci 0000:00:1c.0: Adding to iommu group 26
[    6.541627] pci 0000:00:1c.3: Adding to iommu group 27
[    6.541700] pci 0000:00:1c.4: Adding to iommu group 28
[    6.541776] pci 0000:00:1c.7: Adding to iommu group 29
[    6.541886] pci 0000:00:1f.0: Adding to iommu group 30
[    6.541968] pci 0000:00:1f.2: Adding to iommu group 30
[    6.542049] pci 0000:00:1f.3: Adding to iommu group 30
[    6.542137] pci 0000:02:00.0: Adding to iommu group 31
[    6.542210] pci 0000:05:00.0: Adding to iommu group 32
[    6.542283] pci 0000:06:00.0: Adding to iommu group 33
[    6.542360] pci 0000:07:00.0: Adding to iommu group 34
[    6.543201] pci 0000:07:00.1: Adding to iommu group 35
[    6.543273] pci 0000:09:00.0: Adding to iommu group 36
[    6.543346] pci 0000:0a:00.0: Adding to iommu group 37
[    6.543420] pci 0000:0b:00.0: Adding to iommu group 38
[    6.543477] pci 0000:0c:00.0: Adding to iommu group 38

Обрати внимание, что в одну группу может попасть несколько устройств. Фишка в том, что их все нажно как минимум отвязать от их хостовых драйверов перед пробросом, иначе проброс не заработает.