archedraft

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

444 posts in this topic Last Reply

Recommended Posts

3 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. 

 

 

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.  

Edited by csmccarron

Share this post


Link to post
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!

Share this post


Link to post
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. 

 

Share this post


Link to post
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.

Share this post


Link to post

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

Share this post


Link to post
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.

Share this post


Link to post
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.  

Share this post


Link to post
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. 

Share this post


Link to post

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?

Share this post


Link to post
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

Share this post


Link to post

Tried that, rebooting didn't seem to work this time. Will try again at some point. And sleep was most definitely disabled, and still is. I read somewhere that it could have been suspended due to something running out of space

Share this post


Link to post

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

Share this post


Link to post

Q: Is there such a thing as a PCIE USB controller card with MULTIPLE controllers onboard that can be passed to separate VMs? I expect not but worth asking.... I won't have slots free for 2 cards  :-(

Share this post


Link to post

From memory I think there is (it might be a combined 2.0 and 3.0 controller?) but it's absurdly expensive

Share this post


Link to post
Posted (edited)

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

Share this post


Link to post

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....

Share this post


Link to post
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?

 

Share this post


Link to post

I dont know of one.. but this thread is about USB controllers so maybe ask on the right one and someone might know one?  Pop a PCIE card in and see if that has a better grouping?

Share this post


Link to post
Posted (edited)

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

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


Copyright © 2005-2018 Lime Technology, Inc.
unRAID® is a registered trademark of Lime Technology, Inc.