***GUIDE*** Passthrough Entire PCI USB Controller


archedraft

Recommended Posts

12 hours ago, saarg said:

xen-pciback.hide= is just another method to hide the devices so it's not used by any other driver, but instead of using the ID it uses the PCI number. This is a better way if you have to devices with the same ID, but only want to hide one of them. 

Using this will not make the device show up in the other devices list as it's not bound to the vfio driver. 

You can probably use both xen-pciback.hide and vfio-pci.ids at the same time. 

 

@methanoid

Looks like you have a space after vfio-pci.ids=

 

Thanks... missed that!

Link to comment
10 hours ago, csmccarron said:

 

What think I need to do is bind both of my USB3 PCI-Express cards to the vfio-pci driver or does the xen-pciback.hide option make it so the kernel will never try to use the two devices?  I attach them to different virtual machines.  When I tried this using the ID 1b6f:7052, one of the cards worked and it locked the other one up.  Currently I am not binding the vfio-pci driver to either card and so far no issues but I would really rather not have the kernel ever touch them if possible.  

 

The kernel should not try to use the two devices with pciback.hide.

I don't know how they work behind the scene, so don't know if it will work better with pciback.hide than with vfio-pci.ids. 

 

Link to comment
2 hours ago, saarg said:

 

The kernel should not try to use the two devices with pciback.hide.

I don't know how they work behind the scene, so don't know if it will work better with pciback.hide than with vfio-pci.ids. 

 

 

Thanks for the information, I will try it out when I get back from Michigan and let you know how it worked out.

Link to comment
  • 1 month later...

In an effort to decrease latency, I want to move from a Synergy setup to a physical USB switcher to share keyboard and mouse between my Win10 Gaming VM and my MacBook.

 

Currently I passthrough a wired USB Xbox 360 controller to my Win10 Gaming VM. I did a test where I unplugged it and plugged it back in to see if it would pop back up in Windows. Sadly it didn't until I rebooted the VM.

 

So I'm guessing I need to pass through my motherboard USB Controller to get plug-and-play to work, especially when the USB switcher comes into play.

 

Here's the output of the commands. I'm guessing I won't be able to do this with my C236 WSI motherboard? :(

root@Unraid:~# lspci | grep USB
00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31)

root@Unraid:~# lsusb                                                                                    
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0764:0501 Cyber Power System, Inc. CP1500 AVR UPS
Bus 001 Device 006: ID 045e:028e Microsoft Corp. Xbox360 Controller
Bus 001 Device 002: ID 0781:5571 SanDisk Corp. Cruzer Fit
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Additionally, I can't add another PCI-e card since it's an ITX board.

Edited by spencers
Link to comment
6 minutes ago, spencers said:

In an effort to decrease latency, I want to move from a Synergy setup to a physical USB switcher to share keyboard and mouse between my Win10 Gaming VM and my MacBook.

 

Currently I passthrough a wired USB Xbox 360 controller to my Win10 Gaming VM. I did a test where I unplugged it and plugged it back in to see if it would pop back up in Windows. Sadly it didn't until I rebooted the VM.

 

So I'm guessing I need to pass through my motherboard USB Controller to get plug-and-play to work, especially when the USB switcher comes into play.

 

Here's the output of the commands. I'm guessing I won't be able to do this with my C236 WSI motherboard? :(


root@Unraid:~# lspci | grep USB
00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31)

root@Unraid:~# lsusb                                                                                    
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0764:0501 Cyber Power System, Inc. CP1500 AVR UPS
Bus 001 Device 006: ID 045e:028e Microsoft Corp. Xbox360 Controller
Bus 001 Device 002: ID 0781:5571 SanDisk Corp. Cruzer Fit
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Additionally, I can't add another PCI-e card since it's an ITX board.

 

Why don't you try FIRST and then report back?? ;)  And you might decide that fiddling with EHCI/XHCI in BIOS may separate your USB2 and USB3 controllers. It's in this thread (works on my Gigabyte board and others too). Then you would have two USB2 controllers (in effect) and leave unRAID stick on one, passthrough the other.

Link to comment
5 hours ago, spencers said:

In an effort to decrease latency, I want to move from a Synergy setup to a physical USB switcher to share keyboard and mouse between my Win10 Gaming VM and my MacBook.

 

Currently I passthrough a wired USB Xbox 360 controller to my Win10 Gaming VM. I did a test where I unplugged it and plugged it back in to see if it would pop back up in Windows. Sadly it didn't until I rebooted the VM.

 

So I'm guessing I need to pass through my motherboard USB Controller to get plug-and-play to work, especially when the USB switcher comes into play.

 

Here's the output of the commands. I'm guessing I won't be able to do this with my C236 WSI motherboard? :(


root@Unraid:~# lspci | grep USB
00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31)

root@Unraid:~# lsusb                                                                                    
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0764:0501 Cyber Power System, Inc. CP1500 AVR UPS
Bus 001 Device 006: ID 045e:028e Microsoft Corp. Xbox360 Controller
Bus 001 Device 002: ID 0781:5571 SanDisk Corp. Cruzer Fit
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Additionally, I can't add another PCI-e card since it's an ITX board.

 

 

This is why i really dont like the layout of having the option to assign USB devices without passing through the usb controller.  certain devices dont work correctly when it is done.  and then youre stuck guessing if something broke or not.  I believe other people in here have had the same problems with xbox controllers/receivers.  typically the worst is when they try adding multiple xbox controllers/receivers iirc.  

 

passing through a controller is a pita as shown, but once you do it, its worth it.  makes everything a whole lot easier.  

Link to comment
19 hours ago, methanoid said:

 

Why don't you try FIRST and then report back?? ;)  And you might decide that fiddling with EHCI/XHCI in BIOS may separate your USB2 and USB3 controllers. It's in this thread (works on my Gigabyte board and others too). Then you would have two USB2 controllers (in effect) and leave unRAID stick on one, passthrough the other.

Thank you for the tip! I’ll look into that in this thread. I don’t need USB3 passthrough fortunately so if I can just passthrough one USB2 port, I’d be set! Thanks again! My USB switcher arrives Monday so I’ll be sure to provide an update even though my use case is pretty specific. 

Link to comment

So I've done this and it's all well and good, but for some reason my VM (win10) decided to go to sleep whilst I was away. And since then, the USB3 PCIe card doesn't work in the VM. It appears in the Edit VM bit etc, but doesn't appear in windows. It also doesn't passthrough power (ie: plug in phone, doesn't charge)

 

Any ideas?

Link to comment
So I've done this and it's all well and good, but for some reason my VM (win10) decided to go to sleep whilst I was away. And since then, the USB3 PCIe card doesn't work in the VM. It appears in the Edit VM bit etc, but doesn't appear in windows. It also doesn't passthrough power (ie: plug in phone, doesn't charge)
 
Any ideas?
Reboot the server? Maybe redo the VM and disable sleep (sure the LT guide tells u too)


Sent from my Redmi 4X using Tapatalk

Link to comment
  • 3 months later...

Hello, I`m trying to passthrough the whole front panel USB controller (4 of them) so that I can hot swap my USBs. Steps that I used is:

 

Quote

 


root@MyNAS:~# lspci | grep USB
00:14.0 USB controller: Intel Corporation C610/X99 series chipset USB xHCI Host Controller (rev 05)
00:1a.0 USB controller: Intel Corporation C610/X99 series chipset USB Enhanced Host Controller #2 (rev 05)
00:1d.0 USB controller: Intel Corporation C610/X99 series chipset USB Enhanced Host Controller #1 (rev 05)
0c:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
 

 

 

Then I tested

Quote

 


root@MyNAS:~# lsusb
Bus 002 Device 002: ID 8087:8002 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 002: ID 0951:1642 Kingston Technology DT101 G2
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:800a Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 003: ID 174c:3074 ASMedia Technology Inc. ASM1074 SuperSpeed hub
Bus 004 Device 002: ID 174c:3074 ASMedia Technology Inc. ASM1074 SuperSpeed hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 005: ID 1532:0204 Razer USA, Ltd
Bus 003 Device 003: ID 174c:2074 ASMedia Technology Inc. ASM1074 High-Speed hub
Bus 003 Device 002: ID 0b05:180a ASUSTek Computer, Inc.
Bus 003 Device 008: ID 1043:8012 iCreate Technologies Corp. Flash Disk 256 MB
Bus 003 Device 006: ID 046d:c52f Logitech, Inc. Unifying Receiver
Bus 003 Device 004: ID 174c:2074 ASMedia Technology Inc. ASM1074 High-Speed hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

 

Bus 003 Device 008 is one of the USB I tried plugging onto the front panel.

 

Quote

 


root@MyNAS:~# readlink /sys/bus/usb/devices/usb3
../../../devices/pci0000:00/0000:00:14.0/usb3

 

 

So by this its on 0000:00:14.0 right?

 

Using step 11.b, I wrote to my XML this just above the </devices> line

 

Quote

 


<hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x00' slot='0x14' function='0x0'/>
      </source>
    </hostdev>
 

 

 

Here is my IOMMU groups

Quote

IOMMU group 0


    [8086:6f81] ff:0b.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 (rev 01)
    [8086:6f36] ff:0b.1 Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 (rev 01)
    [8086:6f37] ff:0b.2 Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 (rev 01)
    [8086:6f76] ff:0b.3 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link Debug (rev 01)
IOMMU group 1
    [8086:6fe0] ff:0c.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 01)
    [8086:6fe1] ff:0c.1 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 01)
    [8086:6fe2] ff:0c.2 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 01)
    [8086:6fe3] ff:0c.3 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 01)
    [8086:6fe4] ff:0c.4 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 01)
    [8086:6fe5] ff:0c.5 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 01)
IOMMU group 2
    [8086:6ff8] ff:0f.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 01)
    [8086:6ff9] ff:0f.1 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 01)
    [8086:6ffc] ff:0f.4 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 01)
    [8086:6ffd] ff:0f.5 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 01)
    [8086:6ffe] ff:0f.6 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 01)
IOMMU group 3
    [8086:6f1d] ff:10.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent (rev 01)
    [8086:6f34] ff:10.1 Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent (rev 01)
    [8086:6f1e] ff:10.5 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox (rev 01)
    [8086:6f7d] ff:10.6 Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox (rev 01)
    [8086:6f1f] ff:10.7 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox (rev 01)
IOMMU group 4
    [8086:6fa0] ff:12.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 (rev 01)
    [8086:6f30] ff:12.1 Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 (rev 01)
IOMMU group 5
    [8086:6fa8] ff:13.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS (rev 01)
    [8086:6f71] ff:13.1 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS (rev 01)
    [8086:6faa] ff:13.2 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 01)
    [8086:6fab] ff:13.3 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 01)
    [8086:6fac] ff:13.4 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 01)
    [8086:6fad] ff:13.5 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 01)
    [8086:6fae] ff:13.6 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Broadcast (rev 01)
    [8086:6faf] ff:13.7 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Global Broadcast (rev 01)
IOMMU group 6
    [8086:6fb0] ff:14.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Thermal Control (rev 01)
    [8086:6fb1] ff:14.1 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Thermal Control (rev 01)
    [8086:6fb2] ff:14.2 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Error (rev 01)
    [8086:6fb3] ff:14.3 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Error (rev 01)
    [8086:6fbc] ff:14.4 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 01)
    [8086:6fbd] ff:14.5 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 01)
    [8086:6fbe] ff:14.6 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 01)
    [8086:6fbf] ff:14.7 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 01)
IOMMU group 7
    [8086:6fb4] ff:15.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Thermal Control (rev 01)
    [8086:6fb5] ff:15.1 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Thermal Control (rev 01)
    [8086:6fb6] ff:15.2 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Error (rev 01)
    [8086:6fb7] ff:15.3 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Error (rev 01)
IOMMU group 8
    [8086:6f68] ff:16.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Target Address/Thermal/RAS (rev 01)
    [8086:6f6e] ff:16.6 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Broadcast (rev 01)
    [8086:6f6f] ff:16.7 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Global Broadcast (rev 01)
IOMMU group 9
    [8086:6fd0] ff:17.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 1 - Channel 0 Thermal Control (rev 01)
    [8086:6fb8] ff:17.4 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface (rev 01)
    [8086:6fb9] ff:17.5 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface (rev 01)
    [8086:6fba] ff:17.6 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface (rev 01)
    [8086:6fbb] ff:17.7 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 2/3 Interface (rev 01)
IOMMU group 10
    [8086:6f98] ff:1e.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 01)
    [8086:6f99] ff:1e.1 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 01)
    [8086:6f9a] ff:1e.2 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 01)
    [8086:6fc0] ff:1e.3 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 01)
    [8086:6f9c] ff:1e.4 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 01)
IOMMU group 11
    [8086:6f88] ff:1f.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 01)
    [8086:6f8a] ff:1f.2 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 01)
IOMMU group 12
    [8086:6f00] 00:00.0 Host bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DMI2 (rev 01)
IOMMU group 13
    [8086:6f02] 00:01.0 PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 (rev 01)
IOMMU group 14
    [8086:6f03] 00:01.1 PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 (rev 01)
IOMMU group 15
    [8086:6f08] 00:03.0 PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 01)
IOMMU group 16
    [8086:6f28] 00:05.0 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Map/VTd_Misc/System Management (rev 01)
    [8086:6f29] 00:05.1 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Hot Plug (rev 01)
    [8086:6f2a] 00:05.2 System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO RAS/Control Status/Global Errors (rev 01)
    [8086:6f2c] 00:05.4 PIC: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D I/O APIC (rev 01)
IOMMU group 17
    [8086:8d7c] 00:11.0 Unassigned class [ff00]: Intel Corporation C610/X99 series chipset SPSR (rev 05)
    [8086:8d62] 00:11.4 SATA controller: Intel Corporation C610/X99 series chipset sSATA Controller [AHCI mode] (rev 05)
IOMMU group 18
    [8086:8d31] 00:14.0 USB controller: Intel Corporation C610/X99 series chipset USB xHCI Host Controller (rev 05)

IOMMU group 19
    [8086:8d3a] 00:16.0 Communication controller: Intel Corporation C610/X99 series chipset MEI Controller #1 (rev 05)
IOMMU group 20
    [8086:15a1] 00:19.0 Ethernet controller: Intel Corporation Ethernet Connection (2) I218-V (rev 05)
IOMMU group 21
    [8086:8d2d] 00:1a.0 USB controller: Intel Corporation C610/X99 series chipset USB Enhanced Host Controller #2 (rev 05)
IOMMU group 22
    [8086:8d20] 00:1b.0 Audio device: Intel Corporation C610/X99 series chipset HD Audio Controller (rev 05)
IOMMU group 23
    [8086:8d10] 00:1c.0 PCI bridge: Intel Corporation C610/X99 series chipset PCI Express Root Port #1 (rev d5)
IOMMU group 24
    [8086:8d16] 00:1c.3 PCI bridge: Intel Corporation C610/X99 series chipset PCI Express Root Port #4 (rev d5)
IOMMU group 25
    [8086:8d18] 00:1c.4 PCI bridge: Intel Corporation C610/X99 series chipset PCI Express Root Port #5 (rev d5)
IOMMU group 26
    [8086:8d1c] 00:1c.6 PCI bridge: Intel Corporation C610/X99 series chipset PCI Express Root Port #7 (rev d5)
IOMMU group 27
    [8086:8d26] 00:1d.0 USB controller: Intel Corporation C610/X99 series chipset USB Enhanced Host Controller #1 (rev 05)
IOMMU group 28
    [8086:8d47] 00:1f.0 ISA bridge: Intel Corporation C610/X99 series chipset LPC Controller (rev 05)
    [8086:8d02] 00:1f.2 SATA controller: Intel Corporation C610/X99 series chipset 6-Port SATA Controller [AHCI mode] (rev 05)
    [8086:8d22] 00:1f.3 SMBus: Intel Corporation C610/X99 series chipset SMBus Controller (rev 05)
IOMMU group 29
    [1002:699f] 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Lexa PRO [Radeon RX 550] (rev c7)
    [1002:aae0] 01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Device aae0
IOMMU group 30
    [1b21:118f] 05:00.0 PCI bridge: ASMedia Technology Inc. Device 118f
IOMMU group 31
    [1b21:118f] 06:01.0 PCI bridge: ASMedia Technology Inc. Device 118f
IOMMU group 32
    [1b21:118f] 06:02.0 PCI bridge: ASMedia Technology Inc. Device 118f
IOMMU group 33
    [1b21:118f] 06:03.0 PCI bridge: ASMedia Technology Inc. Device 118f
IOMMU group 34
    [1b21:118f] 06:04.0 PCI bridge: ASMedia Technology Inc. Device 118f
IOMMU group 35
    [8086:1539] 07:00.0 Ethernet controller: Intel Corporation I211 Gigabit Network Connection (rev 03)
IOMMU group 36
    [14e4:43a0] 08:00.0 Network controller: Broadcom Limited BCM4360 802.11ac Wireless Network Adapter (rev 03)
IOMMU group 37
    [10de:1b82] 09:00.0 VGA compatible controller: NVIDIA Corporation GP104 (rev a1)
    [10de:10f0] 09:00.1 Audio device: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1)
IOMMU group 38
    [1b21:0612] 0b:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 02)
IOMMU group 39
    [1b21:1142] 0c:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
 

 

 

But when I want to start my VM, I get this

 

 


error.png.15cb36c609df132fbbc7b6ae774ce486.png
 

 

 

I wonder which step I did wrong? I tried redoing again and googling, but I'm not sure which part should I fix.

 

Any help would be nice. Thanks!

 

 

Edited by sevenz
fix iommu groups formatting
Link to comment
  • 1 month later...

I have this iommu

 

IOMMU group 6:	
	[1022:43bb] 01:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset USB 3.1 xHCI Controller (rev 02)
	[1022:43b7] 01:00.1 SATA controller: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset SATA Controller (rev 02)
	[1022:43b2] 01:00.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 43b2 (rev 02)
	[1022:43b4] 02:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset PCIe Port (rev 02)
	[1022:43b4] 02:01.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset PCIe Port (rev 02)
	[1022:43b4] 02:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset PCIe Port (rev 02)
	[10ec:8168] 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)
	[8086:1521] 05:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
	[8086:1521] 05:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)

I want to bypass to a VM one of these NICs, both belong to the same PCI card:

 

    [8086:1521] 05:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
    [8086:1521] 05:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)

 

I would preffer to bypass just 1, It is possible? or am I forced to bypass both?

 

I have added to Syslinux configuration:

           

  append iommu=pt vfio-pci.ids=8086:1521 initrd=/bzroot

 

And then to the VM

 

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x05' slot='0x00' function='0x1'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
    </hostdev>

 

But I get this error

 

2018-03-12T21:06:11.442798Z qemu-system-x86_64: -device vfio-pci,host=05:00.1,id=hostdev0,bus=pci.5,addr=0x0: vfio error: 0000:05:00.1: group 6 is not viable
Please ensure all devices within the iommu_group are bound to their vfio bus driver.
2018-03-12 21:06:11.491+0000: shutting down, reason=failed

 

Please, could anyone explain what options do I have and how to proceed? do I have to enable Enable PCIe ACS Override?


Thanks

 
 
Edited by L0rdRaiden
Link to comment
10 hours ago, methanoid said:

You need to pass the whole IOMMU grouping so you cannot split those network interfaces. Its not BYPASS by the way, its PASSTHROUGH!   

 

You might try the ACS patch and see if it breaks up that group as otherwise you are rather boned....

 

I have enable ACS but the IOMMU group is the same


 
 
IOMMU group 7: [1022:43bb] 01:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset USB 3.1 xHCI Controller (rev 02)
  [1022:43b7] 01:00.1 SATA controller: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset SATA Controller (rev 02)
  [1022:43b2] 01:00.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 43b2 (rev 02)
  [1022:43b4] 02:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset PCIe Port (rev 02)
  [1022:43b4] 02:01.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset PCIe Port (rev 02)
  [1022:43b4] 02:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset PCIe Port (rev 02)
  [10ec:8168] 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)
  [8086:1521] 05:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
  [8086:1521] 05:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)

 

 

I guess this means that it will be impossible to passtrough any NIC/s, right?

 

Is there any other method?

 

Link to comment
  • 4 weeks later...

i've been trying all day get a PCI USB controller passed through to my win10 VM.  it's the renesas controller in IOMMU group 8 (though the pericom PCIe-to-PCI bridge is also part of the controller).

 

IOMMU group 8: [8086:244e] 00:1c.3 PCI bridge: Intel Corporation 82801 PCI Bridge (rev d0)
  [1b21:1080] 03:00.0 PCI bridge: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge (rev 03)
  [12d8:e111] 04:01.0 PCI bridge: Pericom Semiconductor PI7C9X111SL PCIe-to-PCI Reversible Bridge (rev 02)
  [1912:0015] 05:00.0 USB controller: Renesas Technology Corp. uPD720202 USB 3.0 Host Controller (rev ff)

 

i've tried spaceinvaders method in the Syslinux configuration:

 

    vfio-pc.ids=1912:0015

i've tried the method detailed at the beginning of this thread:

 

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
      </source>
    </hostdev>

both resulted in the Other PCI Devices = none available.

 

in another thread i read passing through the whole PCI Bridge might not be possible.  is this still a valid statement?

 

any ideas?

 

Edited by alexsd
Link to comment
  • 3 months later...

I have 4 USB controllers onboard my Asus X399A Prime mobo. They are separated into own IOMMU groupings using "pcie_acs_override=downstream,multifunction"

 

But the sharp eye will see that the last 2 controllers have the same address for stubbing.... Does that mean they have to be treated as one controller? 

 

IOMMU group 15:	[1022:43ba] 01:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] X399 Series Chipset USB 3.1 xHCI Controller (rev 02)
IOMMU group 26:	[1b21:2142] 09:00.0 USB controller: ASMedia Technology Inc. Device 2142
IOMMU group 34:	[1022:145c] 0d:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) USB 3.0 Host Controller
IOMMU group 53:	[1022:145c] 43:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) USB 3.0 Host Controller

 

 

Link to comment
3 hours ago, methanoid said:

I have 4 USB controllers onboard my Asus X399A Prime mobo. They are separated into own IOMMU groupings using "pcie_acs_override=downstream,multifunction"

 

But the sharp eye will see that the last 2 controllers have the same address for stubbing.... Does that mean they have to be treated as one controller? 

 


IOMMU group 15:	[1022:43ba] 01:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] X399 Series Chipset USB 3.1 xHCI Controller (rev 02)

IOMMU group 26:	[1b21:2142] 09:00.0 USB controller: ASMedia Technology Inc. Device 2142

IOMMU group 34:	[1022:145c] 0d:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) USB 3.0 Host Controller

IOMMU group 53:	[1022:145c] 43:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) USB 3.0 Host Controller

 

 

 

Not if you use the xen-pciback.hide= method. You use the PCI number instead of id. So yours will look like below for the last two. 

xen-pciback.hide=(0d:00.3)(43:00.3)

 

 

  • Like 1
Link to comment
14 minutes ago, saarg said:

 

Not if you use the xen-pciback.hide= method. You use the PCI number instead of id. So yours will look like below for the last two. 


xen-pciback.hide=(0d:00.3)(43:00.3)

 

 

 

I should have looked earlier in the thread (thanks for not pointing out my mistake!!)

 

On 9/9/2017 at 10:23 PM, saarg said:

xen-pciback.hide= is just another method to hide the devices so it's not used by any other driver, but instead of using the ID it uses the PCI number. This is a better way if you have to devices with the same ID, but only want to hide one of them. 

Using this will not make the device show up in the other devices list as it's not bound to the vfio driver. 

You can probably use both xen-pciback.hide and vfio-pci.ids at the same time. 

 

@methanoid

Looks like you have a space after vfio-pci.ids=

 

I did notice though you said it wouldnt appear in the other devices list. That is bad? I thought the idea of stubbing stuff was to get it (a) not used by unRaid and (b) to appear as a selectable option in the "Other Devices" list for your VMs. My aim is to get 3 of my 4 USB controllers available for VMs and the 4th obviously has my unRAID stick on it.

 

I am confused now how to get that outcome (if possible)!?

Link to comment
11 hours ago, methanoid said:

 

I should have looked earlier in the thread (thanks for not pointing out my mistake!!)

 

 

I did notice though you said it wouldnt appear in the other devices list. That is bad? I thought the idea of stubbing stuff was to get it (a) not used by unRaid and (b) to appear as a selectable option in the "Other Devices" list for your VMs. My aim is to get 3 of my 4 USB controllers available for VMs and the 4th obviously has my unRAID stick on it.

 

I am confused now how to get that outcome (if possible)!?

 

Yes, you have to add it to the xml yourself. I have made a request to @limetech to make the devices available in the list, but they never answered the request. 

Link to comment
On 7/13/2018 at 8:39 AM, saarg said:

 

Yes, you have to add it to the xml yourself. I have made a request to @limetech to make the devices available in the list, but they never answered the request. 

 

Doh! Never thought of that!!  @limetech please make it easy for the less savvy of your customers ;-)  especially since I suspect it ISNT possible to pass an AMD 3.1 USB controller through... ?

 

Edited by methanoid
Link to comment
  • 1 month later...

I've been passing one of my USB 2.0 busses through for a long time (1a.0 called USB1). Now I want to pass through my USB 3.0 bus. However, here's what I find from the various commands and SysDevs. The problem is that both USB4 (USB 3.0 port I want to pass through) and USB3 (one of the other USB 2.0 ports) both show up as 14.0 with a readlink command and my unRAID USB is on USB3 (the Kingston DataTraveller).

 

So I don't know whether or not its safe to pass the IOMMU group that 0.14 is in through (that's group 2 from what I can tell....but maybe not!).

 

 

Thoughts?

 

Thanks for your help in advance.

 

333719949_iommugroups.thumb.png.3f17495d694b580b754631a516e42406.png

 

 

lsusb results.png

 

readlink usb4 results.png

 

readlink usb3 results.png

Edited by ksignorini
Link to comment
7 hours ago, ksignorini said:

I've been passing one of my USB 2.0 busses through for a long time (1a.0 called USB1). Now I want to pass through my USB 3.0 bus. However, here's what I find from the various commands and SysDevs. The problem is that both USB4 (USB 3.0 port I want to pass through) and USB3 (one of the other USB 2.0 ports) both show up as 14.0 with a readlink command and my unRAID USB is on USB3 (the Kingston DataTraveller).

 

So I don't know whether or not its safe to pass the IOMMU group that 0.14 is in through (that's group 2 from what I can tell....but maybe not!).

 

 

Thoughts?

 

Thanks for your help in advance.

 

333719949_iommugroups.thumb.png.3f17495d694b580b754631a516e42406.png

 

 

lsusb results.png

 

readlink usb4 results.png

 

readlink usb3 results.png

 

No it's not safe to pass through 00:14.0 as your unraid usb is on that controller.

You could play with the EHCI and XHCI hand-off and the other USB options in the bios, to see if you manage to separate them.

Link to comment

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.