QEMU Errors with PCIe Passthrough on Hades Canyon NUC8i7HVK

Hi,

I recently picked up a NUC8i7HVK with the plan of making it a part-server, part daily driver machine. A couple of VMs and containers. To do this, I followed this really helpful guide here (remove the spaces): https:// www.shutdown -s-t0.com/complete-pci-gpu-passthrough-setup-for-hades-canyon-nuc8i7hvk-owners/

I’m using Fedora Server 31 with an ACS patched kernel. My issue arises when I get to Step 14.4, starting up the VMs.

Error Message
[root@shaitan ~]# virsh start lanfear
error: Failed to start domain lanfear
error: internal error: qemu unexpectedly closed the monitor:
2019-11-09T02:08:38.818451Z qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.monitor [bit 3]
2019-11-09T02:08:38.818546Z qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.ds-cpl [bit 4]
2019-11-09T02:08:38.818640Z qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.est [bit 7]
2019-11-09T02:08:38.818735Z qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.tm2 [bit 8]
2019-11-09T02:08:38.818830Z qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.xtpr [bit 14]
2019-11-09T02:08:38.818926Z qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:ECX.pdcm [bit 15]
2019-11-09T02:08:40.022119Z qemu-system-x86_64: -device vfio-pci,host=00:1f.3,id=hostdev2,bus=pci.7,addr=0x1: vfio 0000:00:1f.3: group 15 is not viable
Please ensure all devices within the iommu_group are bound to their vfio bus driver

So, two issues:

  1. A number of features don’t appear to be supported by the host.
  2. The audio device split off in step 10.4 doesn’t appear to remain so after reboot. I presume this should be sorted out by the daemon hook, discussed in step 11.2, if everything before it starts correctly?

Here is additional information, based on what I’ve read in the other posts where people have been having issues.

lscpu Output
[root@shaitan ~]# lscpu
Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   39 bits physical, 48 bits virtual
CPU(s):                          8
On-line CPU(s) list:             0-7
Thread(s) per core:              2
Core(s) per socket:              4
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       GenuineIntel
CPU family:                      6
Model:                           158
Model name:                      Intel(R) Core(TM) i7-8809G CPU @ 3.10GHz
Stepping:                        9
Frequency boost:                 enabled
CPU MHz:                         1199.999
CPU max MHz:                     3101.0000
CPU min MHz:                     800.0000
BogoMIPS:                        6199.99
Virtualization:                  VT-x
L1d cache:                       128 KiB
L1i cache:                       128 KiB
L2 cache:                        1 MiB
L3 cache:                        8 MiB
NUMA node0 CPU(s):               0-7
Vulnerability L1tf:              Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT vulnerable
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, IBPB conditional, IBRS_FW, STIBP conditio
                             nal, RSB filling
Flags:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflu
                             sh dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm const
                             ant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid a
                             perfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16
                              xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsav
                             e avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pt
                             i ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase 
                             tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt in
                             tel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify 
                             hwp_act_window hwp_epp md_clear flush_l1d
IOMMU Groups
IOMMU Group 0:
00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:5910] (rev 05)
IOMMU Group 1:
00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) [8086:1901] (rev 05)
IOMMU Group 10:
00:1c.1 PCI bridge [0604]: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #2 [8086:a111] (rev f1)
IOMMU Group 11:
00:1c.2 PCI bridge [0604]: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #3 [8086:a112] (rev f1)
IOMMU Group 12:
00:1c.4 PCI bridge [0604]: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #5 [8086:a114] (rev f1)
IOMMU Group 13:
00:1d.0 PCI bridge [0604]: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #9 [8086:a118] (rev f1)
IOMMU Group 14:
00:1e.0 Signal processing controller [1180]: Intel Corporation 100 Series/C230 Series Chipset Family Serial IO UART #0 [8086:a127] (rev 31)
IOMMU Group 15:
00:1f.0 ISA bridge [0601]: Intel Corporation HM175 Chipset LPC/eSPI Controller [8086:a152] (rev 31)
00:1f.2 Memory controller [0580]: Intel Corporation 100 Series/C230 Series Chipset Family Power Management Controller [8086:a121] (rev 31)
00:1f.3 Audio device [0403]: Intel Corporation CM238 HD Audio Controller [8086:a171] (rev 31)
00:1f.4 SMBus [0c05]: Intel Corporation 100 Series/C230 Series Chipset Family SMBus [8086:a123] (rev 31)
IOMMU Group 16:
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I219-LM [8086:15b7] (rev 31)
IOMMU Group 17:
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Polaris 22 XT [Radeon RX Vega M GH] [1002:694c] (rev ff)
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Polaris 22 HDMI Audio [1002:ab08] (rev ff)
IOMMU Group 18:
02:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM2142 USB 3.1 Host Controller [1b21:2142]
IOMMU Group 19:
03:00.0 SD Host controller [0805]: O2 Micro, Inc. SD/MMC Card Reader Controller [1217:8621] (rev 01)
IOMMU Group 2:
00:01.1 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x8) [8086:1905] (rev 05)
IOMMU Group 20:
05:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:157b] (rev 03)
IOMMU Group 21:
06:00.0 Network controller [0280]: Intel Corporation Wireless 8265 / 8275 [8086:24fd] (rev 78)
IOMMU Group 22:
07:00.0 PCI bridge [0604]: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] [8086:15d3] (rev 02)
IOMMU Group 23:
08:00.0 PCI bridge [0604]: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] [8086:15d3] (rev 02)
IOMMU Group 24:
08:01.0 PCI bridge [0604]: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] [8086:15d3] (rev 02)
IOMMU Group 25:
08:02.0 PCI bridge [0604]: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] [8086:15d3] (rev 02)
IOMMU Group 26:
08:04.0 PCI bridge [0604]: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] [8086:15d3] (rev 02)
IOMMU Group 27:
3d:00.0 USB controller [0c03]: Intel Corporation JHL6540 Thunderbolt 3 USB Controller (C step) [Alpine Ridge 4C 2016] [8086:15d4] (rev 02)
IOMMU Group 28:
72:00.0 Non-Volatile memory controller [0108]: Phison Electronics Corporation E12 NVMe Controller [1987:5012] (rev 01)
IOMMU Group 3:
00:01.2 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x4) [8086:1909] (rev 05)
IOMMU Group 4:
00:02.0 Display controller [0380]: Intel Corporation HD Graphics 630 [8086:591b] (rev 04)
IOMMU Group 5:
00:08.0 System peripheral [0880]: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model [8086:1911]
IOMMU Group 6:
00:14.0 USB controller [0c03]: Intel Corporation 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller [8086:a12f] (rev 31)
00:14.2 Signal processing controller [1180]: Intel Corporation 100 Series/C230 Series Chipset Family Thermal Subsystem [8086:a131] (rev 31)
IOMMU Group 7:
00:15.0 Signal processing controller [1180]: Intel Corporation 100 Series/C230 Series Chipset Family Serial IO I2C Controller #0 [8086:a160] (rev 31)
00:15.1 Signal processing controller [1180]: Intel Corporation 100 Series/C230 Series Chipset Family Serial IO I2C Controller #1 [8086:a161] (rev 31)
00:15.2 Signal processing controller [1180]: Intel Corporation 100 Series/C230 Series Chipset Family Serial IO I2C Controller #2 [8086:a162] (rev 31)
IOMMU Group 8:
00:16.0 Communication controller [0780]: Intel Corporation 100 Series/C230 Series Chipset Family MEI Controller #1 [8086:a13a] (rev 31)
IOMMU Group 9:
00:1c.0 PCI bridge [0604]: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #1 [8086:a110] (rev f1)
lanfear virt-install Parameters
virt-install --name lanfear \
--boot uefi,loader=/usr/share/OVMF/OVMF_CODE.fd,loader_ro=yes,loader_type=pflash \
--description 'lanfear_windows' \
--ram=16384 \
--arch x86_64 \
--machine pc-q35-3.0 \
--memorybacking hugepages=yes \
--vcpus 4,placement=static,cores=4,sockets=1,threads=1 \
--cputune vcpupin0.vcpu=0,vcpupin0.cpuset=1,vcpupin1.vcpu=1,vcpupin1.cpuset=5,vcpupin2.vcpu=2,vcpupin2.cpuset=2,vcpupin3.vcpu=3,vcpupin3.cpuset=6 \
--cpu host-passthrough,cache.mode=passthrough,-hypervisor,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+dtes64,+monitor,+ds_cpl,+vmx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+arat,+tsc_adjust,+mpx,+clflushopt,+ssbd,+xsaveopt,+xsavec,+xgetbv1,+xsaves,+pdpe1gb,+abm,+invtsc,cache.mode=emulate,cache.level=3 \
--disk path=/choedankal/vms/lanfear.qcow2,size=256,bus=virtio \
--disk /choedankal/iso/Win10_1903_V2_EnglishInternational_x64.iso,device=cdrom,bus=sata \
--disk /choedankal/iso/virtio-win-0.1.171.iso,device=cdrom,bus=sata \
--check path_in_use=off \
--os-type windows \
--os-variant win10 \
--memballoon none \
--graphics vnc,listen=0.0.0.0,port=5901 --noautoconsole \
--host-device pci_0000_01_00_0 \
--host-device pci_0000_01_00_1 \
--host-device pci_0000_00_1f_3 \
--host-device pci_0000_05_00_0 \
--host-device pci_0000_02_00_0 \
--host-device pci_0000_00_02_0 --print-xml >> /choedankal/vms/xml/lanfear.xml

Any help on how I can fix this issue?

I got some help from the VFIO people on Reddit, and the following update, removing listing of the specific features to be included in the virt-install script fixed issue 1.

--cpu host-passthrough,cache.mode=passthrough
1 Like