LINUX.ORG.RU
решено ФорумAdmin

Проблема с VFIO

 , ,


0

1

Итак, есть материнка ASRock Z87 Extreme4, проц Intel core i7 4771, Видеокарта AMD 6450 (в последвии будет замена на нормальную), SAS адаптер Adaptec 7805h, встроенное видео. ОС Arch linux, ядро стоковое (3.19.2-1). Видео карта была подключена к pci-stub и после этого подключена к модулю vfio. Но попытка включить VM с этой карточкой заканчивается ошибкой «vfio: error, group 1 is not viable, please ensure all devices within the iommu_group are bound to their vfio bus driver.»

Вывод lspci:

00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06)
00:01.1 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x8 Controller (rev 06)
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 04)
00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)
00:19.0 Ethernet controller: Intel Corporation Ethernet Connection I217-V (rev 04)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d4)
00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 (rev d4)
00:1c.6 PCI bridge: Intel Corporation 82801 PCI Bridge (rev d4)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation Z87 Express LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 04)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM]
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Caicos HDMI Audio [Radeon HD 6400 Series]
02:00.0 Serial Attached SCSI controller: Adaptec PMC-Sierra PM8018 SAS HBA [Series 7H] (rev 06)
04:00.0 Ethernet controller: Intel Corporation I211 Gigabit Network Connection (rev 03)
05:00.0 PCI bridge: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge (rev 03)

Вывод lspci -n:

00:00.0 0600: 8086:0c00 (rev 06)
00:01.0 0604: 8086:0c01 (rev 06)
00:01.1 0604: 8086:0c05 (rev 06)
00:02.0 0300: 8086:0412 (rev 06)
00:03.0 0403: 8086:0c0c (rev 06)
00:14.0 0c03: 8086:8c31 (rev 04)
00:16.0 0780: 8086:8c3a (rev 04)
00:19.0 0200: 8086:153b (rev 04)
00:1a.0 0c03: 8086:8c2d (rev 04)
00:1b.0 0403: 8086:8c20 (rev 04)
00:1c.0 0604: 8086:8c10 (rev d4)
00:1c.3 0604: 8086:8c16 (rev d4)
00:1c.6 0604: 8086:244e (rev d4)
00:1d.0 0c03: 8086:8c26 (rev 04)
00:1f.0 0601: 8086:8c44 (rev 04)
00:1f.2 0106: 8086:8c02 (rev 04)
00:1f.3 0c05: 8086:8c22 (rev 04)
01:00.0 0300: 1002:6779
01:00.1 0403: 1002:aa98
02:00.0 0107: 9005:8088 (rev 06)
04:00.0 0200: 8086:1539 (rev 03)
05:00.0 0604: 1b21:1080 (rev 03)

cmdline:

initrd=\intel-ucode.img initrd=\initramfs-linux.img root=/dev/sda2 rw intel_iommu=on iommu=on elevator=noop pci-stub.ids=1002:6779,1002:aa98

Вывод ll /sys/bus/pci/devices/*/iommu_group:

lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:00.0/iommu_group -> ../../../kernel/iommu_groups/0/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:01.0/iommu_group -> ../../../kernel/iommu_groups/1/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:01.1/iommu_group -> ../../../kernel/iommu_groups/1/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:02.0/iommu_group -> ../../../kernel/iommu_groups/2/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:03.0/iommu_group -> ../../../kernel/iommu_groups/3/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:14.0/iommu_group -> ../../../kernel/iommu_groups/4/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:16.0/iommu_group -> ../../../kernel/iommu_groups/5/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:19.0/iommu_group -> ../../../kernel/iommu_groups/6/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:1a.0/iommu_group -> ../../../kernel/iommu_groups/7/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:1b.0/iommu_group -> ../../../kernel/iommu_groups/8/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:1c.0/iommu_group -> ../../../kernel/iommu_groups/9/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:1c.3/iommu_group -> ../../../kernel/iommu_groups/10/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:1c.6/iommu_group -> ../../../kernel/iommu_groups/11/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:1d.0/iommu_group -> ../../../kernel/iommu_groups/12/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:1f.0/iommu_group -> ../../../kernel/iommu_groups/13/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:1f.2/iommu_group -> ../../../kernel/iommu_groups/13/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:00:1f.3/iommu_group -> ../../../kernel/iommu_groups/13/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:01:00.0/iommu_group -> ../../../../kernel/iommu_groups/1/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:01:00.1/iommu_group -> ../../../../kernel/iommu_groups/1/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:02:00.0/iommu_group -> ../../../../kernel/iommu_groups/1/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:04:00.0/iommu_group -> ../../../../kernel/iommu_groups/14/
lrwxrwxrwx 1 root root 0 апр  3 10:57 /sys/bus/pci/devices/0000:05:00.0/iommu_group -> ../../../../kernel/iommu_groups/11/

Как я понимаю проблема в том, что у меня видеокарта и SAS адаптер оказываются в одной IOMMU группе (в первой) и при попытке запуска VM qemu ругается на это и предлагает подключить к VFIO еще и SAS (что естественно недопустимо).

Пробовал использовать ядро с ACS override patch- не помогает, пробовал добавлять опцию vfio_iommu_type1 allow_unsafe_interrupts=1- не помогает и появляются зависания. Как раскидать видео и SAS в разные iommu группы, или как по другому пофиксить ошибку? Спасибо.



Последнее исправление: larrabee (всего исправлений: 1)

Попробуйте поиграться с перестановками в другие слоты PCIe.

Infra_HDC ★★★★★
()
Последнее исправление: Infra_HDC (всего исправлений: 1)

эти попали в одну группу класс 0604

00:01.0 0604: 8086:0c01 (rev 06)
00:01.1 0604: 8086:0c05 (rev 06)

эти попали в разные группы, класс тот же самый

00:1c.0 0604: 8086:8c10 (rev d4)
00:1c.3 0604: 8086:8c16 (rev d4)
00:1c.6 0604: 8086:244e (rev d4)

надо смотреть, что за ACS override patch у тебя и почему он не разбивает 01.0 и 01.1 на разные группы.

dimon555 ★★★★★
()
Ответ на: комментарий от dimon555

Решено

Всем спасибо, проблему решил. Да, перестановка в другие слоты не помогала, по умолчанию все три pci-e x16 слота в одной группе. Помогла установка правильного парраматра для ACS override patch (pcie_acs_override=downstream). После этого SAS и видео раскидались по разным группам.

larrabee
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.