Portál AbcLinuxu, 5. května 2025 21:33
VFIO .. Způsob zpřístupnění fyzického HW v GuestOSu (QEMU/KVM) s využitím IOMMU/VT-d.
https://www.kernel.org/doc/Documentation/vfio.txt
https://bbs.archlinux.org/viewtopic.php?id=162768
Vycházeje z tohoto návodu, podařilo se mi GuestOSu (sorry za Windows) zpřístupnit jak 2.GK(PCIe ATI), tak například SCSI řadič (PCI Adaptec). Použita distribuce Kubuntu 14.04x64 s vanilla jádrem 3.14.4.
http://www.monitos.cz/tmp/x3430_vfio_pci_scsi.png
PCI strom (lspci -k) vypadá takto: -+-[0000:ff]-+-00.0 | +-00.1 | +-02.0 | +-02.1 | +-03.0 | +-03.1 | +-03.2 | +-03.4 | +-04.0 | +-04.1 | +-04.2 | +-04.3 | +-05.0 | +-05.1 | +-05.2 | \-05.3 \-[0000:00]-+-00.0 +-03.0-[01-05]----00.0-[02-05]--+-00.0-[03]----00.0 | +-02.0-[04]--+-00.0 | | \-00.1 | \-03.0-[05]----00.0 +-08.0 +-08.1 +-08.2 +-08.3 +-10.0 +-10.1 +-1a.0 +-1b.0 +-1c.0-[06]----00.0 +-1c.1-[07]----00.0 +-1c.2-[08]----00.0 +-1c.3-[09]--+-00.0 | \-00.1 +-1c.6-[0a]--+-00.0 | \-00.1 +-1d.0 +-1e.0-[0b]-- +-1f.0 +-1f.2 \-1f.3
Kombinované SATA/IDE řadiče JMicron jsou připojeny na 09:00.0,09:00.1 (druhý 0a:00.0,0a:00.1). Při snaze o zpřístupnění v GuestOSu jednoho z integrovaných SATA/IDE řadičů JMicron JB36x na MB, základní deska MSI Big Bang Trinergy MSI-7580 (MB:P55/NF200-based + CPU:X3430 jich obsahuje několik, se mi objevilo hlášení.
group 6 is not viable, please ensure all devices within the iommu_group
Problém asi spočívá v omezené granulaci IOMMU, takže bylo nutné přiřadit všechny členy iommu groupy 1c.0 až 1c.6 (pravděpodobně jde o sdílení společných zdrojů .. IRQ?). Po tomto opatření již většina zařízení byla v GuestOSu dostupná. Vzhledem k tomu, že celkem šlo o 2xNIC,1xFireWire,1xSATA/IDE JMB36x (druhy radic ovladač neinicializoval), nezbylo slovy klasika: "Již nikoho kdo by se na živý obraz díval.". HostOSu jsem musel přidat USB WLAN, aby měl aspoň nějakou síťovou konektivitu.
http://www.monitos.cz/tmp/x3430_vfio_group.png
Neberte založené téma prosím jako problém/dotaz, ale spíše jako snahu o oživení debaty k této zajímavé problematice.
09:00.0 SATA controller [0106]: JMicron Technology Corp. JMB363 SATA/IDE Controller [197b:2363] (rev 03) 09:00.1 IDE interface [0101]: JMicron Technology Corp. JMB363 SATA/IDE Controller [197b:2363] (rev 03) 0a:00.0 SATA controller [0106]: JMicron Technology Corp. JMB363 SATA/IDE Controller [197b:2363] (rev 03) 0a:00.1 IDE interface [0101]: JMicron Technology Corp. JMB363 SATA/IDE Controller [197b:2363] (rev 03)Lspci vzhledem k shodným vendor:device hodnotám v identifikaci moc nepomůže. Nakonec se podařilo v GuestOSu fyzicky zpřístupnit: samostatný HDD na eSATA, samostatný HDD na jednom z RAID řadičů, RAID1 na druhém RAID řadiči, DVD IDE byla si v GuestOS viditelná, ale nefungovala (ovladač IDE řadiče chybu nehlásil). http://www.monitos.cz/tmp/x3430_vfio_group_attach_hdds.png Z v úvodu zmíněného návodu zbývá k dořešení rest s propagací/využitím BIOSu VGA pro přidelenou GK, tj. zpřístupnění obrazu již po zapnutí virtuálního stroje.
echo -n "10ec 8168" > /sys/bus/pci/drivers/pci-stub/new_id echo -n 0000:0a:00.0 > /sys/bus/pci/drivers/pci-stub/unbind modprobe r8169 .... root@kubuntu:~# lspci -k |grep 8111 -A 2 06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 03) Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7580 Kernel driver in use: pci-stub 07:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 03) Subsystem: Micro-Star International Co., Ltd. [MSI] Device 7580 Kernel driver in use: pci-stub -- 0a:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06) Subsystem: Realtek Semiconductor Co., Ltd. Device 0123 Kernel driver in use: r8169
root@kubuntu:~# ls -la /sys/kernel/iommu_groups/*/devices/ /sys/kernel/iommu_groups/0/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:00.0 -> ../../../../devices/pci0000:00/0000:00:00.0 /sys/kernel/iommu_groups/10/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:01:00.0 -> ../../../../devices/pci0000:00/0000:00:03.0/0000:01:00.0 /sys/kernel/iommu_groups/11/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:02:00.0 -> ../../../../devices/pci0000:00/0000:00:03.0/0000:01:00.0/0000:02:00.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:03:00.0 -> ../../../../devices/pci0000:00/0000:00:03.0/0000:01:00.0/0000:02:00.0/0000:03:00.0 /sys/kernel/iommu_groups/12/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:02:02.0 -> ../../../../devices/pci0000:00/0000:00:03.0/0000:01:00.0/0000:02:02.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:04:00.0 -> ../../../../devices/pci0000:00/0000:00:03.0/0000:01:00.0/0000:02:02.0/0000:04:00.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:04:00.1 -> ../../../../devices/pci0000:00/0000:00:03.0/0000:01:00.0/0000:02:02.0/0000:04:00.1 /sys/kernel/iommu_groups/13/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:02:03.0 -> ../../../../devices/pci0000:00/0000:00:03.0/0000:01:00.0/0000:02:03.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:05:00.0 -> ../../../../devices/pci0000:00/0000:00:03.0/0000:01:00.0/0000:02:03.0/0000:05:00.0 /sys/kernel/iommu_groups/14/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:00.0 -> ../../../../devices/pci0000:ff/0000:ff:00.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:00.1 -> ../../../../devices/pci0000:ff/0000:ff:00.1 /sys/kernel/iommu_groups/15/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:02.0 -> ../../../../devices/pci0000:ff/0000:ff:02.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:02.1 -> ../../../../devices/pci0000:ff/0000:ff:02.1 /sys/kernel/iommu_groups/16/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:03.0 -> ../../../../devices/pci0000:ff/0000:ff:03.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:03.1 -> ../../../../devices/pci0000:ff/0000:ff:03.1 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:03.2 -> ../../../../devices/pci0000:ff/0000:ff:03.2 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:03.4 -> ../../../../devices/pci0000:ff/0000:ff:03.4 /sys/kernel/iommu_groups/17/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:04.0 -> ../../../../devices/pci0000:ff/0000:ff:04.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:04.1 -> ../../../../devices/pci0000:ff/0000:ff:04.1 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:04.2 -> ../../../../devices/pci0000:ff/0000:ff:04.2 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:04.3 -> ../../../../devices/pci0000:ff/0000:ff:04.3 /sys/kernel/iommu_groups/18/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:05.0 -> ../../../../devices/pci0000:ff/0000:ff:05.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:05.1 -> ../../../../devices/pci0000:ff/0000:ff:05.1 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:05.2 -> ../../../../devices/pci0000:ff/0000:ff:05.2 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:ff:05.3 -> ../../../../devices/pci0000:ff/0000:ff:05.3 /sys/kernel/iommu_groups/1/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:03.0 -> ../../../../devices/pci0000:00/0000:00:03.0 /sys/kernel/iommu_groups/2/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:08.0 -> ../../../../devices/pci0000:00/0000:00:08.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:08.1 -> ../../../../devices/pci0000:00/0000:00:08.1 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:08.2 -> ../../../../devices/pci0000:00/0000:00:08.2 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:08.3 -> ../../../../devices/pci0000:00/0000:00:08.3 /sys/kernel/iommu_groups/3/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:10.0 -> ../../../../devices/pci0000:00/0000:00:10.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:10.1 -> ../../../../devices/pci0000:00/0000:00:10.1 /sys/kernel/iommu_groups/4/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:1a.0 -> ../../../../devices/pci0000:00/0000:00:1a.0 /sys/kernel/iommu_groups/5/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:1b.0 -> ../../../../devices/pci0000:00/0000:00:1b.0 /sys/kernel/iommu_groups/6/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:1c.0 -> ../../../../devices/pci0000:00/0000:00:1c.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:1c.1 -> ../../../../devices/pci0000:00/0000:00:1c.1 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:1c.2 -> ../../../../devices/pci0000:00/0000:00:1c.2 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:1c.3 -> ../../../../devices/pci0000:00/0000:00:1c.3 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:1c.5 -> ../../../../devices/pci0000:00/0000:00:1c.5 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:1c.6 -> ../../../../devices/pci0000:00/0000:00:1c.6 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:06:00.0 -> ../../../../devices/pci0000:00/0000:00:1c.0/0000:06:00.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:07:00.0 -> ../../../../devices/pci0000:00/0000:00:1c.1/0000:07:00.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:08:00.0 -> ../../../../devices/pci0000:00/0000:00:1c.2/0000:08:00.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:09:00.0 -> ../../../../devices/pci0000:00/0000:00:1c.3/0000:09:00.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:09:00.1 -> ../../../../devices/pci0000:00/0000:00:1c.3/0000:09:00.1 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:0a:00.0 -> ../../../../devices/pci0000:00/0000:00:1c.5/0000:0a:00.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:0b:00.0 -> ../../../../devices/pci0000:00/0000:00:1c.6/0000:0b:00.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:0b:00.1 -> ../../../../devices/pci0000:00/0000:00:1c.6/0000:0b:00.1 /sys/kernel/iommu_groups/7/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:1d.0 -> ../../../../devices/pci0000:00/0000:00:1d.0 /sys/kernel/iommu_groups/8/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:1e.0 -> ../../../../devices/pci0000:00/0000:00:1e.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:0c:01.0 -> ../../../../devices/pci0000:00/0000:00:1e.0/0000:0c:01.0 /sys/kernel/iommu_groups/9/devices/: total 0 drwxr-xr-x 2 root root 0 čen 16 22:12 . drwxr-xr-x 3 root root 0 čen 16 22:12 .. lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:1f.0 -> ../../../../devices/pci0000:00/0000:00:1f.0 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:1f.2 -> ../../../../devices/pci0000:00/0000:00:1f.2 lrwxrwxrwx 1 root root 0 čen 16 22:12 0000:00:1f.3 -> ../../../../devices/pci0000:00/0000:00:1f.3
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.