Jump to content

Another USB controller passthrough thread...


Recommended Posts

Posted (edited)

Hi all,

 

Deepest apologies as I've searched the forum and read through a number of thee types of threads already but I need more of confirmation from the community at this point because my understanding of computer hardware architecture is very very limited. Basically, I have two playstation 4 controllers with two usb dongles for them that I've been passing through to a Windows 10 VM via bus and device ids. This method resulted in many problems with controller configuration on steam so I'm attempting to passthrough an entire usb controller at this point. Watched all the SpaceInvaderOne videos on it and faced many issues attempting the old "easy" way and the more recent vfio-pci config method. I currently have PCIe ACS override "Both" enabled this setting did the best job of breaking my groups up.

 

I can select the usb controller from my Other PCIe devices in the VM edit page but my VM won't when I have this selected and I'm forced to reboot my machine to regain functionality of the server. It looks like my vendor id is repeated across groups no matter what. I have the suspicion that my motherboard only has one usb controller and this is the cause. I don't have the VM logs in front of me but if I recall correctly the error message I was getting had to do with a tainted bus or something similar. Sorry, I can attempt running the VM again and edit this post if necessary. I just don't want to run this over and over because I'm afraid of the reboot and potential data corruption. Does anyone have any ideas? I included screenshots of my VM edit page but can provide more outputs or screenshots if required. Any help is greatly appreciated.

 

IOMMU groups (interested in 28, 29, and 37):

Group 0 00:01.01022:1482Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge

Group 1 00:01.11022:1483PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge

Group 2 00:01.21022:1483PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge

Group 3 00:02.01022:1482Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge

Group 4 00:03.01022:1482Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge

Group 5 00:03.11022:1483PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge

Group 6 00:04.01022:1482Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge

Group 7 00:05.01022:1482Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge

Group 8 00:07.01022:1482Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge

Group 9 00:07.11022:1484PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]

Group 10 00:08.01022:1482Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge

Group 11 00:08.11022:1484PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]

Group 12 00:08.21022:1484PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]

Group 13 00:08.31022:1484PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]

Group 14 00:14.01022:790bSMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 61)

00:14.31022:790eISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)

Group 15 00:18.01022:1440Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 0

00:18.11022:1441Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 1

00:18.21022:1442Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 2

00:18.31022:1443Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 3

00:18.41022:1444Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 4

00:18.51022:1445Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 5

00:18.61022:1446Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 6

00:18.71022:1447Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 7

Group 16 01:00.0144d:a808Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983

Group 17 02:00.01022:57adPCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse Switch Upstream

Group 18 03:01.01022:57a3PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge

Group 19 03:04.01022:57a3PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge

Group 20 03:05.01022:57a3PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge

Group 21 03:08.01022:57a4PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge

Group 22 03:09.01022:57a4PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge

Group 23 03:0a.01022:57a4PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge

Group 24 04:00.0144d:a808Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983

Group 25 05:00.08086:2526Network controller: Intel Corporation Wireless-AC 9260 (rev 29)

Group 26 06:00.010ec:8168Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 26)

Group 27 07:00.01022:1485Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP

Group 28 07:00.11022:149cUSB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller

USB devices attached to this controller:

Bus 001 Device 003: ID 046d:c05a Logitech, Inc. M90/M100 Optical Mouse

Bus 001 Device 002: ID 154b:005d PNY USB 2.0 FD

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Group 29 07:00.31022:149cUSB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller

USB devices attached to this controller:

Bus 003 Device 004: ID 0b05:18f3 ASUSTek Computer, Inc. AURA LED Controller

Bus 003 Device 003: ID 8087:0025 Intel Corp.

Bus 003 Device 002: ID 413c:2107 Dell Computer Corp. Dell USB Entry Keyboard

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Group 30 08:00.01022:7901SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)

Group 31 09:00.01022:7901SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)

Group 32 0a:00.010de:1401VGA compatible controller: NVIDIA Corporation GM206 [GeForce GTX 960] (rev a1)

Group 33 0a:00.110de:0fbaAudio device: NVIDIA Corporation GM206 High Definition Audio Controller (rev a1)

Group 34 0b:00.01022:148aNon-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function

Group 35 0c:00.01022:1485Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP

Group 36 0c:00.11022:1486Encryption controller: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Cryptographic Coprocessor PSPCPP

Group 37 0c:00.31022:149cUSB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller - passing through this controller

*USB devices attached to controllers bound to vfio are not visible to unRAID*

Group 38 0c:00.41022:1487Audio device: Advanced Micro Devices, Inc. [AMD] Starship/Matisse HD Audio Controller

Group 39 0d:00.01022:7901SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)

Group 40 0e:00.01022:7901SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)

Screen Shot 2020-07-09 at 12.40.34 PM.png

Screen Shot 2020-07-09 at 12.40.55 PM.png

Screen Shot 2020-07-09 at 12.43.38 PM.png

Screen Shot 2020-07-09 at 12.44.58 PM.png

Screen Shot 2020-07-09 at 12.45.21 PM.png

Edited by cambriancatalyst
Added screenshots
Posted

What release do you use. If you want to passthrough usb controler of ryzen 3xxx you have to use a custom kernel or update unraid to 6.9beta 24

Envoyé de mon HD1913 en utilisant Tapatalk

Posted
Hi rachid, I'm still on 6.8.3. I'll give upgrading a shot and report back. Thanks for the info!
OK Only beta24.
Beta22 don't have patch. [emoji16]

Envoyé de mon HD1913 en utilisant Tapatalk

Posted (edited)

Hi again, I went ahead and updated to beta24 and re-ran my VM. It loads to the TianoCore screen now but no further. Need to reboot to successfully shutdown the VM. I've copied the VM log below. Is it the tainted domain? Also just noticed that when I right click the VM I get a VNC option even though I'm attempting to do GPU passthrough also. I've included my xml below the log. Whenever I update the VM edit page to chose my GPU as the primary and apply it reverts back to the screenshot I added. Thanks again!

 

-rtc base=localtime \
-no-hpet \
-no-shutdown \
-boot strict=on \
-device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x7.0x7 \
-device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x7 \
-device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x7.0x1 \
-device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x7.0x2 \
-device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x4 \
-blockdev '{"driver":"file","filename":"/mnt/user/domains/Windows 10/vdisk1.img","node-name":"libvirt-3-storage","cache":{"direct":false,"no-flush":false},"auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-3-format","read-only":false,"cache":{"direct":false,"no-flush":false},"driver":"raw","file":"libvirt-3-storage"}' \
-device virtio-blk-pci,bus=pci.0,addr=0x5,drive=libvirt-3-format,id=virtio-disk2,bootindex=1,write-cache=on \
-blockdev '{"driver":"file","filename":"/mnt/user/isos/Win10_1909_English_x64.iso","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-2-format","read-only":true,"driver":"raw","file":"libvirt-2-storage"}' \
-device ide-cd,bus=ide.0,unit=0,drive=libvirt-2-format,id=ide0-0-0,bootindex=2 \
-blockdev '{"driver":"file","filename":"/mnt/user/isos/virtio-win-0.1.173-2.iso","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
-blockdev '{"node-name":"libvirt-1-format","read-only":true,"driver":"raw","file":"libvirt-1-storage"}' \
-device ide-cd,bus=ide.0,unit=1,drive=libvirt-1-format,id=ide0-0-1 \
-netdev tap,fd=33,id=hostnet0 \
-device virtio-net,netdev=hostnet0,id=net0,mac=52:54:00:ef:2b:1e,bus=pci.0,addr=0x3 \
-chardev pty,id=charserial0 \
-device isa-serial,chardev=charserial0,id=serial0 \
-chardev socket,id=charchannel0,fd=34,server,nowait \
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 \
-device usb-tablet,id=input0,bus=usb.0,port=1 \
-vnc 0.0.0.0:0,websocket=5700 \
-k en-us \
-device cirrus-vga,id=video0,bus=pci.0,addr=0x2 \
-device ich9-intel-hda,id=sound0,bus=pci.0,addr=0x8 \
-device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 \
-device vfio-pci,host=0000:0a:00.0,id=hostdev0,bus=pci.0,addr=0x6,romfile=/mnt/user/domains/MSIGTX960.rom \
-device vfio-pci,host=0000:0a:00.1,id=hostdev1,bus=pci.0,addr=0x9 \
-device vfio-pci,host=0000:0c:00.3,id=hostdev2,bus=pci.0,addr=0xa \
-device usb-host,hostbus=1,hostaddr=3,id=hostdev3,bus=usb.0,port=2 \
-device usb-host,hostbus=3,hostaddr=2,id=hostdev4,bus=usb.0,port=3 \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
-msg timestamp=on
2020-07-09 21:15:42.911+0000: Domain id=1 is tainted: high-privileges
2020-07-09 21:15:42.911+0000: Domain id=1 is tainted: host-cpu
char device redirected to /dev/pts/1 (label charserial0)

 

VM XML

 

<?xml version='1.0' encoding='UTF-8'?>
<domain type='kvm' id='1'>
  <name>Windows 10</name>
  <uuid>f24795a8-8c2e-c966-a56a-f47b960527df</uuid>
  <metadata>
    <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/>
  </metadata>
  <memory unit='KiB'>12582912</memory>
  <currentMemory unit='KiB'>12582912</currentMemory>
  <memoryBacking>
    <nosharepages/>
  </memoryBacking>
  <vcpu placement='static'>8</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='4'/>
    <vcpupin vcpu='1' cpuset='12'/>
    <vcpupin vcpu='2' cpuset='5'/>
    <vcpupin vcpu='3' cpuset='13'/>
    <vcpupin vcpu='4' cpuset='6'/>
    <vcpupin vcpu='5' cpuset='14'/>
    <vcpupin vcpu='6' cpuset='7'/>
    <vcpupin vcpu='7' cpuset='15'/>
  </cputune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-4.2'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
    <nvram>/etc/libvirt/qemu/nvram/f24795a8-8c2e-c966-a56a-f47b960527df_VARS-pure-efi.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vendor_id state='on' value='none'/>
    </hyperv>
  </features>
  <cpu mode='host-passthrough' check='none'>
    <topology sockets='1' dies='1' cores='4' threads='2'/>
    <cache mode='passthrough'/>
    <feature policy='require' name='topoext'/>
  </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/domains/Windows 10/vdisk1.img' index='3'/>
      <backingStore/>
      <target dev='hdc' bus='virtio'/>
      <boot order='1'/>
      <alias name='virtio-disk2'/>
      <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/isos/Win10_1909_English_x64.iso' index='2'/>
      <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>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/isos/virtio-win-0.1.173-2.iso' index='1'/>
      <backingStore/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <alias name='ide0-0-1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <alias name='usb'/>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <alias name='usb'/>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <alias name='usb'/>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>
    </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='0x04' function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:ef:2b:1e'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio-net'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/1'/>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/1'>
      <source path='/dev/pts/1'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-1-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>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'>
      <alias name='input1'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input2'/>
    </input>
    <graphics type='vnc' port='5900' autoport='yes' websocket='5700' listen='0.0.0.0' keymap='en-us'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <sound model='ich9'>
      <alias name='sound0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </sound>
    <video>
      <model type='cirrus' vram='16384' heads='1' primary='yes'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x0a' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <rom file='/mnt/user/domains/MSIGTX960.rom'/>
      <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='0x0a' slot='0x00' function='0x1'/>
      </source>
      <alias name='hostdev1'/>
      <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='0x0c' slot='0x00' function='0x3'/>
      </source>
      <alias name='hostdev2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x046d'/>
        <product id='0xc05a'/>
        <address bus='1' device='3'/>
      </source>
      <alias name='hostdev3'/>
      <address type='usb' bus='0' port='2'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x413c'/>
        <product id='0x2107'/>
        <address bus='3' device='2'/>
      </source>
      <alias name='hostdev4'/>
      <address type='usb' bus='0' port='3'/>
    </hostdev>
    <memballoon model='none'/>
  </devices>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+0:+100</label>
    <imagelabel>+0:+100</imagelabel>
  </seclabel>
</domain>

Screen Shot 2020-07-09 at 5.26.10 PM.png

Edited by cambriancatalyst
Added screenshot
Posted

Hi again and sorry to follow up in a completely separate comment but I edited my xml to remove the VNC options and everything seemed to be working. When Windows booted however it went straight into a repair and then displayed blue screen with Windows 10 kernel security error message. This loops over and over again. :( Any help is appreciated

hqdefault.jpg&f=1&nofb=1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...