Jump to content
We're Hiring! Full Stack Developer ×

PCI-e USB 3.0 Pass-through Issues


Acps

Recommended Posts

I had originally posted this in archedraft's guide, since I was following his guide. However it has been a week now and I haven't heard back from him, so I thought I would start my own post for some help. I will copy and paste everything as I had a lot of information in it:

 

 

archedraft,

 

      I have a few more things I would like to see if you could help me.

 

      I went ahead a bought a PCIe USB 3.0 expansion card. I installed it and started testing all the 3.0 ports. There are 7 total, 5 external and 2 internal, all 3.0. Here is what I have so far.

 

lspci | grep USB:

 

00:14.0 USB controller: Intel Corporation 9 Series Chipset Family USB xHCI Controller
00:1a.0 USB controller: Intel Corporation 9 Series Chipset Family USB EHCI Controller #2
00:1d.0 USB controller: Intel Corporation 9 Series Chipset Family USB EHCI Controller #1
06:00.0 USB controller: Fresco Logic Device 1100 (rev 10)

 

The Intel controller is my onboard USB ports, and the Fresco Logic Device is my PCIe USB 3.0 expansion card.

 

Internal - lsusb:

Bus 003 Device 004: ID 154b:00ad PNY
Bus 004 Device 008: ID 154b:00ad PNY

 

External - lsusb:

Bus 004 Device 003: ID 154b:00ad PNY
Bus 004 Device 004: ID 154b:00ad PNY
Bus 004 Device 005: ID 154b:00ad PNY
Bus 004 Device 006: ID 154b:00ad PNY
Bus 004 Device 007: ID 154b:00ad PNY

 

readlink /sys/bus/usb/devices/usb:

../../../devices/pci0000:00/0000:00:14.0/usb1
../../../devices/pci0000:00/0000:00:14.0/usb2
../../../devices/pci0000:00/0000:00:1c.4/0000:06:00.0/usb3
../../../devices/pci0000:00/0000:00:1c.4/0000:06:00.0/usb4
../../../devices/pci0000:00/0000:00:1a.0/usb5
../../../devices/pci0000:00/0000:00:1d.0/usb6

 

System Devices - IOMMU Groups:

/sys/kernel/iommu_groups/0/devices/0000:00:00.0
/sys/kernel/iommu_groups/1/devices/0000:00:01.0
/sys/kernel/iommu_groups/1/devices/0000:01:00.0
/sys/kernel/iommu_groups/1/devices/0000:01:00.1
/sys/kernel/iommu_groups/2/devices/0000:00:02.0
/sys/kernel/iommu_groups/3/devices/0000:00:03.0
/sys/kernel/iommu_groups/4/devices/0000:00:14.0
/sys/kernel/iommu_groups/5/devices/0000:00:16.0
/sys/kernel/iommu_groups/6/devices/0000:00:1a.0
/sys/kernel/iommu_groups/7/devices/0000:00:1b.0
/sys/kernel/iommu_groups/8/devices/0000:00:1c.0
/sys/kernel/iommu_groups/8/devices/0000:00:1c.2
/sys/kernel/iommu_groups/8/devices/0000:00:1c.3
/sys/kernel/iommu_groups/8/devices/0000:00:1c.4
/sys/kernel/iommu_groups/8/devices/0000:03:00.0
/sys/kernel/iommu_groups/8/devices/0000:04:00.0
/sys/kernel/iommu_groups/8/devices/0000:06:00.0
/sys/kernel/iommu_groups/9/devices/0000:00:1d.0
/sys/kernel/iommu_groups/10/devices/0000:00:1f.0
/sys/kernel/iommu_groups/10/devices/0000:00:1f.2
/sys/kernel/iommu_groups/10/devices/0000:00:1f.3

 

System Devices - PCI Devices:

00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06)
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:14.0 USB controller: Intel Corporation 9 Series Chipset Family USB xHCI Controller
00:16.0 Communication controller: Intel Corporation 9 Series Chipset Family ME Interface #1
00:1a.0 USB controller: Intel Corporation 9 Series Chipset Family USB EHCI Controller #2
00:1b.0 Audio device: Intel Corporation 9 Series Chipset Family HD Audio Controller
00:1c.0 PCI bridge: Intel Corporation 9 Series Chipset Family PCI Express Root Port 1 (rev d0)
00:1c.2 PCI bridge: Intel Corporation 9 Series Chipset Family PCI Express Root Port 3 (rev d0)
00:1c.3 PCI bridge: Intel Corporation 9 Series Chipset Family PCI Express Root Port 4 (rev d0)
00:1c.4 PCI bridge: Intel Corporation 9 Series Chipset Family PCI Express Root Port 5 (rev d0)
00:1d.0 USB controller: Intel Corporation 9 Series Chipset Family USB EHCI Controller #1
00:1f.0 ISA bridge: Intel Corporation 9 Series Chipset Family Z97 LPC Controller
00:1f.2 SATA controller: Intel Corporation 9 Series Chipset Family SATA Controller [AHCI Mode]
00:1f.3 SMBus: Intel Corporation 9 Series Chipset Family SMBus Controller
01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2)
01:00.1 Audio device: NVIDIA Corporation Device 0fbc (rev a1)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)
04:00.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 41)
06:00.0 USB controller: Fresco Logic Device 1100 (rev 10)
[\code]

System Devices - USB Devices:
[code]
Bus 006 Device 002: ID 8087:8001 Intel Corp. 
Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 2109:0812  
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 2109:2812  
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 002: ID 8087:8009 Intel Corp. 
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0781:5567 SanDisk Corp. Cruzer Blade
Bus 001 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

I tried passing through: 06:00.0 USB controller: Fresco Logic Device 1100 (rev 10), however that did not work, multiple errors.

 

My unRaid USB is the SanDisk Cruzer, on Bus 01, which is located on a 2.0 USB port on the motherboard.

 

A few things I have noticed is that "readlink /sys/bus/usb/devices/usb" for Bus 3 and 4, produce an extra address that the other ones do. I think this might be related to :

00:1c.0 PCI bridge: Intel Corporation 9 Series Chipset Family PCI Express Root Port 1 (rev d0)
00:1c.2 PCI bridge: Intel Corporation 9 Series Chipset Family PCI Express Root Port 3 (rev d0)
00:1c.3 PCI bridge: Intel Corporation 9 Series Chipset Family PCI Express Root Port 4 (rev d0)
00:1c.4 PCI bridge: Intel Corporation 9 Series Chipset Family PCI Express Root Port 5 (rev d0)

Which makes some sense, however that is only 5 of the 7 USB ports. I am assuming that these are the 5 external ports. Then there are the 2 internal ports. The extremely odd thing is the fact that all 5 of the external ports are on Bus 4, which makes sense, but then the internal ports, one is on Bus 3 and one is on Bus 4. So a total of 6 on Bus 4 and 1 on Bus 3.

 

So I am lost at what to do next, maybe there is something I need to do in the Bios??? Or could it be a driver issue? I don't know what I should try next to pass through this USB card. Any help I would greatly appreciate it.

 

 

 

Would love any help in helping me get this pass-through to my Win10 VM. Thanks in advance!!!

Link to comment

You have ALL this stuff in IOMMU group 8

/sys/kernel/iommu_groups/8/devices/0000:00:1c.0
/sys/kernel/iommu_groups/8/devices/0000:00:1c.2
/sys/kernel/iommu_groups/8/devices/0000:00:1c.3
/sys/kernel/iommu_groups/8/devices/0000:00:1c.4
/sys/kernel/iommu_groups/8/devices/0000:03:00.0
/sys/kernel/iommu_groups/8/devices/0000:04:00.0
/sys/kernel/iommu_groups/8/devices/0000:06:00.0

 

You have to isolate just the USB card 06:00:0, one way or another, or pass all of those devices to the VM.

Easiest way, enable ACS override downstream, and you should have a device per group and should be able to get this working.

If you can get the grouping to be 1 device per group without the override, it is preferred, but I would assume with that many devices (I just looked, it is mainly just your USB3 card, and a Realtek NIC) it is unlikely and you will need to use it.

 

I have had it enabled with 2 active VM's for months now without any known issues, along with many others who have it enabled.

Link to comment

also, use this method for passing through the pci device:  http://lime-technology.com/forum/index.php?topic=38259.0

 

you'll still need to sort out the iommu issue, but it's far simpler than the other method (and works).

 

You have ALL this stuff in IOMMU group 8

/sys/kernel/iommu_groups/8/devices/0000:00:1c.0
/sys/kernel/iommu_groups/8/devices/0000:00:1c.2
/sys/kernel/iommu_groups/8/devices/0000:00:1c.3
/sys/kernel/iommu_groups/8/devices/0000:00:1c.4
/sys/kernel/iommu_groups/8/devices/0000:03:00.0
/sys/kernel/iommu_groups/8/devices/0000:04:00.0
/sys/kernel/iommu_groups/8/devices/0000:06:00.0

 

You have to isolate just the USB card 06:00:0, one way or another, or pass all of those devices to the VM.

Easiest way, enable ACS override downstream, and you should have a device per group and should be able to get this working.

If you can get the grouping to be 1 device per group without the override, it is preferred, but I would assume with that many devices (I just looked, it is mainly just your USB3 card, and a Realtek NIC) it is unlikely and you will need to use it.

 

I have had it enabled with 2 active VM's for months now without any known issues, along with many others who have it enabled.

 

Thank you guys for your help. I used both of your inputs and go exactly what I was looking for. The original post i was referring too, had a lot of great information on how to map and see what each port is assigned to.

 

I was then able to enable PCIe ACS override and get my PCIe USB 3.0 controller on it's on IOMMU group, then I used the the instructions in the post from thaddeus and was able to easily add that PCIe device to my Windows 10 KML, and it booted right up, it is passing through all 7 of my USB ports on my PCIe controller.

 

Thank you fellas.

 

Is there any downside to the PCIe ACS function I enabled?

Link to comment

Is there any downside to the PCIe ACS function I enabled?

 

Possible data corruption (silent too, that's always the best!), however it's unlikely.

Search for posts about it, Alex Williamson (Red Hat) discusses its use and cautions, however you may not really have a choice if you want to be able to do what you're doing on your specific hardware.

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...