CommandLionInterface Posted November 28, 2016 Share Posted November 28, 2016 So I'm passing through my system's built in USB and sound devices to my Windows 10 VM. It's worked for the longest time, but all of the sudden USB does not work (but confusingly enough audio does?!). Here's the error from my logs: 2016-11-28T05:26:53.587398Z qemu-system-x86_64: vfio: Cannot reset device 0000:00:14.0, no available reset mechanism. 2016-11-28T05:26:53.587451Z qemu-system-x86_64: vfio: Cannot reset device 0000:00:1f.3, no available reset mechanism. 2016-11-28T05:26:55.595408Z qemu-system-x86_64: vfio: Cannot reset device 0000:00:14.0, no available reset mechanism. 2016-11-28T05:26:55.595505Z qemu-system-x86_64: vfio: Cannot reset device 0000:00:1f.3, no available reset mechanism. Device 14 is my USB controller, 1f.3 is my sound card. The weirdest thing is that the reset mechanism errors have happened before without impeding my ability to use my USB devices. Perhaps it's a change in something to do with the linux kernel upgrade? I only recently upgraded from 6.2 to 6.2.4 Any ideas? I'm at my wits end; I've been googling for several hours and I kinda need my kb and mouse to do homework Here's my XML if it helps <domain type='kvm' id='4'> <name>Windows 10</name> <uuid>fbaf2590-f88d-466b-a4a3-e381d683f558</uuid> <metadata> <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/> </metadata> <memory unit='KiB'>8388608</memory> <currentMemory unit='KiB'>8388608</currentMemory> <memoryBacking> <nosharepages/> <locked/> </memoryBacking> <vcpu placement='static'>6</vcpu> <cputune> <vcpupin vcpu='0' cpuset='0'/> <vcpupin vcpu='1' cpuset='1'/> <vcpupin vcpu='2' cpuset='2'/> <vcpupin vcpu='3' cpuset='4'/> <vcpupin vcpu='4' cpuset='5'/> <vcpupin vcpu='5' cpuset='6'/> </cputune> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader> <nvram>/etc/libvirt/qemu/nvram/fbaf2590-f88d-466b-a4a3-e381d683f558_VARS-pure-efi.fd</nvram> </os> <features> <acpi/> <apic/> <hyperv> <relaxed state='on'/> <vapic state='on'/> <spinlocks state='on' retries='8191'/> <vendor id='none'/> </hyperv> </features> <cpu mode='host-passthrough'> <topology sockets='1' cores='3' threads='2'/> </cpu> <clock offset='localtime'> <timer name='hypervclock' present='yes'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/local/sbin/qemu</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='writeback'/> <source file='/mnt/user/vdisks/Windows 10/vdisk1.img'/> <backingStore/> <target dev='hdc' bus='virtio'/> <boot order='1'/> <alias name='virtio-disk2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='writeback'/> <source file='/mnt/user/vdisks2/Windows 10/Windows 10/vdisk2.img'/> <backingStore/> <target dev='hdd' bus='virtio'/> <alias name='virtio-disk3'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/mnt/user/install/isos/virtio-win-0.1.118.iso'/> <backingStore/> <target dev='hda' bus='ide'/> <readonly/> <boot order='2'/> <alias name='ide0-0-0'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <controller type='usb' index='0' model='nec-xhci'> <alias name='usb'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </controller> <controller type='pci' index='0' model='pci-root'> <alias name='pci.0'/> </controller> <controller type='ide' index='0'> <alias name='ide'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='virtio-serial' index='0'> <alias name='virtio-serial0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </controller> <interface type='bridge'> <mac address='52:54:00:45:34:46'/> <source bridge='br0'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </interface> <serial type='pty'> <source path='/dev/pts/0'/> <target port='0'/> <alias name='serial0'/> </serial> <console type='pty' tty='/dev/pts/0'> <source path='/dev/pts/0'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-Windows 10/org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0' state='disconnected'/> <alias name='channel0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </source> <alias name='hostdev0'/> <rom file='/mnt/user/install/drivers/vbios.dump'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/> </source> <alias name='hostdev1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x00' slot='0x1f' function='0x3'/> </source> <alias name='hostdev2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x00' slot='0x14' function='0x0'/> </source> <alias name='hostdev3'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> </source> <alias name='hostdev4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/> </hostdev> <memballoon model='virtio'> <alias name='balloon0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/> </memballoon> </devices> </domain> And here's my lspci output 00:00.0 Host bridge [0600]: Intel Corporation Skylake Host Bridge/DRAM Registers [8086:1918] (rev 07) 00:01.0 PCI bridge [0604]: Intel Corporation Skylake PCIe Controller (x16) [8086:1901] (rev 07) 00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31) 00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31) 00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA controller [AHCI mode] [8086:a102] (rev 31) 00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #5 [8086:a114] (rev f1) 00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1) 00:1d.2 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #11 [8086:a11a] (rev f1) 00:1d.3 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #12 [8086:a11b] (rev f1) 00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a14a] (rev 31) 00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31) 00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31) 00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31) 00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I219-LM [8086:15b7] (rev 31) 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104 [GeForce GTX 1070] [10de:1b81] (rev a1) 01:00.1 Audio device [0403]: NVIDIA Corporation GP104 High Definition Audio Controller [10de:10f0] (rev a1) 02:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller [1b21:1242] 03:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD Controller [144d:a802] (rev 01) 04:00.0 PCI bridge [0604]: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge [1b21:1080] (rev 04) 05:01.0 USB controller [0c03]: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller [1106:3038] (rev 62) 05:01.1 USB controller [0c03]: VIA Technologies, Inc. VT82xx/62xx UHCI USB 1.1 Controller [1106:3038] (rev 62) 05:01.2 USB controller [0c03]: VIA Technologies, Inc. USB 2.0 [1106:3104] (rev 65) 05:01.3 FireWire (IEEE 1394) [0c00]: VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller [1106:3044] (rev 46) 06:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller [1b21:1242] Link to comment
CommandLionInterface Posted November 28, 2016 Author Share Posted November 28, 2016 Well I don't know why it worked before, but I found a fix. I'm posting it here for future people who are sure to have this problem again! I added the code below to my syslinux configuration on the flash drive on the append line to tell the system not to initialize the keyboard and mouse and reserve them for VM use. vfio-pci.ids=8086:a12f 8086:a12f of course being the vendor ID of my onboard USB ports. Yours may be different, check your tools>system devices to find yours. I have several other modifications to my syslinux file, but here it is in full: default /syslinux/menu.c32 menu title Lime Technology, Inc. prompt 0 timeout 50 label unRAID OS menu default kernel /bzimage append vfio-pci.ids=1b21:1242,8086:a12f initrd=/bzroot modprobe.blacklist=i2c_i801,i2c_smbus label unRAID OS GUI Mode kernel /bzimage append initrd=/bzroot,/bzroot-gui label unRAID OS Safe Mode (no plugins, no GUI) kernel /bzimage append initrd=/bzroot unraidsafemode label Memtest86+ kernel /memtest You'll notice that I also use vfio-pci on 1b21:1242. This is my primary GPU. The modprobe.blacklist thing stubs my smbus so I can pass through my onboard sound card. Cheers, future people! I know I'm not the only one using a skylake CPU for an unraid gaming setup. Link to comment
torgeha Posted March 11, 2018 Share Posted March 11, 2018 The future people salute you! Link to comment
UnraidUser_2020 Posted March 12, 2018 Share Posted March 12, 2018 So i implemented this suggestion, and now i can pass-through GPU and USB port to my VMs(macOS and WIN10) but when i shut down the VM, the GPU stays initiated or locked, and if i try to launch the VM again it hangs. If i reboot unRAID issue goes away untill i shut downt he VM and try another one. Any thoughts? Link to comment
steve1977 Posted July 21, 2018 Share Posted July 21, 2018 On 11/28/2016 at 2:21 PM, CommandLionInterface said: Well I don't know why it worked before, but I found a fix. I'm posting it here for future people who are sure to have this problem again! I added the code below to my syslinux configuration on the flash drive on the append line to tell the system not to initialize the keyboard and mouse and reserve them for VM use. vfio-pci.ids=8086:a12f 8086:a12f of course being the vendor ID of my onboard USB ports. Yours may be different, check your tools>system devices to find yours. I have several other modifications to my syslinux file, but here it is in full: default /syslinux/menu.c32 menu title Lime Technology, Inc. prompt 0 timeout 50 label unRAID OS menu default kernel /bzimage append vfio-pci.ids=1b21:1242,8086:a12f initrd=/bzroot modprobe.blacklist=i2c_i801,i2c_smbus label unRAID OS GUI Mode kernel /bzimage append initrd=/bzroot,/bzroot-gui label unRAID OS Safe Mode (no plugins, no GUI) kernel /bzimage append initrd=/bzroot unraidsafemode label Memtest86+ kernel /memtest You'll notice that I also use vfio-pci on 1b21:1242. This is my primary GPU. The modprobe.blacklist thing stubs my smbus so I can pass through my onboard sound card. Cheers, future people! I know I'm not the only one using a skylake CPU for an unraid gaming setup. Same issue with me. I want to pass through my on-board audio. My syxlinux addition: append pcie_acs_override=downstream vfio-pci.ids=8086:a2f0 modprobe.blacklist=i2c_i801,i2c_smbus initrd=/bzroot My VM error message Domain id=35 is tainted: custom-argv qemu-system-x86_64: vfio: Cannot reset device 0000:00:1f.3, no available reset mechanism. Both numbers refer to my audio card and as a result my audio in my Mac KVM is not working. Help hugely appreciated! @matthope Link to comment
steve1977 Posted July 21, 2018 Share Posted July 21, 2018 Could the issue be that the audio device is not alone in an IOMMU group? If so, any thoughts how I can isolate the audio device within the IOMMU group? IOMMU group 13: [8086:a2d2] 00:1f.0 ISA bridge: Intel Corporation Device a2d2 [8086:a2a1] 00:1f.2 Memory controller: Intel Corporation 200 Series PCH PMC [8086:a2f0] 00:1f.3 Audio device: Intel Corporation 200 Series PCH HD Audio [8086:a2a3] 00:1f.4 SMBus: Intel Corporation 200 Series PCH SMBus Controller Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.