PCIe-Passthrough w/ Ryzen5-1600, 'host doesn't support requested feature'

Hi,

I installed Fedora 26 and started tinkering with pci-passthrough on R5-1600 + Asus Prime x370 pro. Everything went fine until I tried to create VM and got following error:

Unable to complete install: ‘internal error: process exited while connecting to monitor: 2017-08-12T21:31:10.634564Z qemu-system-x86_64: -chardev pty,id=charserial0: char device redirected to /dev/pts/2 (label charserial0)
warning: host doesn’t support requested feature: CPUID.01H:EDX.ht [bit 28]
warning: host doesn’t support requested feature: CPUID.01H:ECX.monitor [bit 3]
warning: host doesn’t support requested feature: CPUID.01H:ECX.osxsave [bit 27]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.extapic [bit 3]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.skinit [bit 12]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.wdt [bit 13]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.tce [bit 17]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.topoext [bit 22]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.perfctr-core [bit 23]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.perfctr-nb [bit 24]
warning: h’

Traceback (most recent call last):
File “/usr/share/virt-manager/virtManager/asyncjob.py”, line 88, in cb_wrapper
callback(asyncjob, *args, **kwargs)
File “/usr/share/virt-manager/virtManager/create.py”, line 2288, in _do_async_install
guest.start_install(meter=meter)
File “/usr/share/virt-manager/virtinst/guest.py”, line 477, in start_install
doboot, transient)
File “/usr/share/virt-manager/virtinst/guest.py”, line 405, in _create_guest
self.domain.create()
File “/usr/lib64/python2.7/site-packages/libvirt.py”, line 1039, in create
if ret == -1: raise libvirtError (‘virDomainCreate() failed’, dom=self)
libvirtError: internal error: process exited while connecting to monitor: 2017-08-12T21:31:10.634564Z qemu-system-x86_64: -chardev pty,id=charserial0: char device redirected to /dev/pts/2 (label charserial0)
warning: host doesn’t support requested feature: CPUID.01H:EDX.ht [bit 28]
warning: host doesn’t support requested feature: CPUID.01H:ECX.monitor [bit 3]
warning: host doesn’t support requested feature: CPUID.01H:ECX.osxsave [bit 27]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.extapic [bit 3]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.skinit [bit 12]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.wdt [bit 13]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.tce [bit 17]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.topoext [bit 22]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.perfctr-core [bit 23]
warning: host doesn’t support requested feature: CPUID.80000001H:ECX.perfctr-nb [bit 24]
warning: h

Any suggestions how to continue.

Output of fpaste can be found here: https://paste.fedoraproject.org/paste/-lBBmZqRR6AltXcM6XMqyg

Did you enable the virtualization stuff in motherboard bios?

output of lscpu?

lscpu:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 12
On-line CPU(s) list: 0-11
Thread(s) per core: 2
Core(s) per socket: 6
Socket(s): 1
NUMA node(s): 1
Vendor ID: AuthenticAMD
CPU family: 23
Model: 1
Model name: AMD Ryzen 5 1600 Six-Core Processor
Stepping: 1
CPU MHz: 1550.000
CPU max MHz: 3200.0000
CPU min MHz: 1550.0000
BogoMIPS: 6387.74
Virtualization: AMD-V
L1d cache: 32K
L1i cache: 64K
L2 cache: 512K
L3 cache: 8192K
NUMA node0 CPU(s): 0-11
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 mwaitx hw_pstate vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic overflow_recov succor smca

Yeah, SVM is enabled.
Problem seems to be “copy host cpu configuration” -setting, if I set virtual-cpu to KVM64 error is gone, but then I got next one. Does that KVM64 vs copy host cpu configuration affect performance?

Error which I got next was:

Error starting domain: internal error: qemu unexpectedly closed the monitor: 2017-08-13T08:56:11.402518Z qemu-system-x86_64: -chardev pty,id=charserial0: char device redirected to /dev/pts/1 (label charserial0)
2017-08-13T08:56:11.437602Z qemu-system-x86_64: -device vfio-pci,host=29:00.0,id=hostdev0,bus=pci.0,addr=0x7: vfio error: 0000:29:00.0: group 2 is not viable
Please ensure all devices within the iommu_group are bound to their vfio bus driver.
Traceback (most recent call last):
File “/usr/share/virt-manager/virtManager/asyncjob.py”, line 88, in cb_wrapper
callback(asyncjob, *args, **kwargs)
File “/usr/share/virt-manager/virtManager/asyncjob.py”, line 124, in tmpcb
callback(*args, **kwargs)
File “/usr/share/virt-manager/virtManager/libvirtobject.py”, line 83, in newfn
ret = fn(self, *args, **kwargs)
File “/usr/share/virt-manager/virtManager/domain.py”, line 1479, in startup
self._backend.create()
File “/usr/lib64/python2.7/site-packages/libvirt.py”, line 1039, in create
if ret == -1: raise libvirtError (‘virDomainCreate() failed’, dom=self)
libvirtError: internal error: qemu unexpectedly closed the monitor: 2017-08-13T08:56:11.402518Z qemu-system-x86_64: -chardev pty,id=charserial0: char device redirected to /dev/pts/1 (label charserial0)
2017-08-13T08:56:11.437602Z qemu-system-x86_64: -device vfio-pci,host=29:00.0,id=hostdev0,bus=pci.0,addr=0x7: vfio error: 0000:29:00.0: group 2 is not viable
Please ensure all devices within the iommu_group are bound to their vfio bus driver.

Seems like bosth my GPUs are on same IOMMU group. I tought that wouldn’t be problem because I’m running kernel 4.11.11?

IOMMU Group 2 00:03.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1452]
IOMMU Group 2 00:03.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:1453]
IOMMU Group 2 00:03.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:1453]
IOMMU Group 2 28:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050] [10de:1c81] (rev a1)
IOMMU Group 2 28:00.1 Audio device [0403]: NVIDIA Corporation GP107GL High Definition Audio Controller [10de:0fb9] (rev a1)
IOMMU Group 2 29:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1)
IOMMU Group 2 29:00.1 Audio device [0403]: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)

Thats not kernel dependent. IOMMU groups are how the motherboard groups them.

I see, Fedoras kernel doesn’t include ACS-patch.

yeah, so you’re gonna need to get the patch and recompile your kernel.

And each time there is an update to your kernel you will need to recompile.

That is bad. Seems like compiling custom kernel with propietary Nvidia driver is awful.

[[email protected] linux-4.12.7]# make install
sh ./arch/x86/boot/install.sh 4.12.7-acs-iltanet arch/x86/boot/bzImage
System.map "/boot"
Error! Bad return status for module build on kernel: 4.12.7-acs-iltanet (x86_64)
Consult /var/lib/dkms/nvidia/384.59/build/make.log for more information.
[[email protected] linux-4.12.7]# cat /var/lib/dkms/nvidia/384.59/
4.11.11-300.fc26.x86_64/ build/ source/
[[email protected] linux-4.12.7]# cat /var/lib/dkms/nvidia/384.59/build/make.log
DKMS make.log for nvidia-384.59 for kernel 4.12.7-acs-iltanet (x86_64)
Sun Aug 13 15:07:06 EEST 2017
make[2]: *** No rule to make target ‘modules’. Stop.

Tinkering with this pci-passthrough isn’t fun and easy as I though after watching Youtube videos and reading few guides from the forum. :smiley:

they make it seem easy because they are very skilled individuals at what they do. Its okay if you want to tinker, but doing this stuff is actually one of the most difficult things for newbs to do, compared to most users of other operating systems.

Yea, I see. :smiley: All try-fail-retry -parts cut out. But yeah, managed to compile kernel with ACS and even Nvidia driver is working. Tried start vm with kvm64 cpu config and it seems working. Original problem is still left, I can’t copy host cpu configuration.

Have you tried setting the cpu model to host-passthrough?

It may not appear in libvirt’s dropdown menu, but you can manually enter it in the text box.

Thanks! This worked, I now have windows running on vm.
Thanks everyone. B)

1 Like

Glad it worked out for you.
I presume you were simply using an old guide that used the old method.