Jump to content

Two Identical USB Controllers - Is It Possible to Passthrough Only One?


DZMM

Recommended Posts

I've got two identical USB controllers in different IOMMU groups.  When I passthrough the device ID both of them get passed through. 

 

Is there a way to (i) passthough only one, or (ii) pass each one to seperate VMs?

 

My preference is for (i) as otherwise I lose all my rear USB 3 ports, although it'd be nice to know if (ii) is possible.


 

IOMMU group 19:	[1022:145f] 0c:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] USB 3.0 Host controller

IOMMU group 40:	[1022:145f] 44:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] USB 3.0 Host controller

I've also got 2 in the IOMMU group - is it possible to split these?

 

IOMMU group 14:	[1022:43ba] 01:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] X399 Series Chipset USB 3.1 xHCI Controller (rev 02)
[1022:43b6] 01:00.1 SATA controller: Advanced Micro Devices, Inc. [AMD] X399 Series Chipset SATA Controller (rev 02)
[1022:43b1] 01:00.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] X399 Series Chipset PCIe Bridge (rev 02)
[1022:43b4] 02:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset PCIe Port (rev 02)
[1022:43b4] 02:02.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset PCIe Port (rev 02)
[1022:43b4] 02:03.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)
[1022:43b4] 02:05.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset PCIe Port (rev 02)
[1022:43b4] 02:06.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset PCIe Port (rev 02)
[1022:43b4] 02:07.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] 300 Series Chipset PCIe Port (rev 02)
[1b21:2142] 03:00.0 USB controller: ASMedia Technology Inc. ASM2142 USB 3.1 Host Controller
[544d:6178] 05:00.0 Multimedia controller: TBS Technologies DVB Tuner PCIe Card
[8086:1539] 08:00.0 Ethernet controller: Intel Corporation I211 Gigabit Network Connection (rev 03)

Thanks

Link to comment
3 minutes ago, saarg said:

Use xen-pciback.hide=(0c:00.3)(44:00.3) in your syslinux.cfg. You have to add the pass through tags in the xml manually though. 

I just tried googling xen-pciback.hide and I can't figure out what it does?

 

I've just realised I can already passthrough the controllers to different VMs, so does this allow me to only passthrough one and leave the other for unRAID?

 

Is it possible to split the controllers in IOMMU 14?

Link to comment
On 11/15/2018 at 5:32 PM, DZMM said:

I just tried googling xen-pciback.hide and I can't figure out what it does?

 

I've just realised I can already passthrough the controllers to different VMs, so does this allow me to only passthrough one and leave the other for unRAID?

 

Is it possible to split the controllers in IOMMU 14?

It does the same as stubbing devices, but uses the PCI device address ins tead of vendor ID. 

 

If they are in different groups you can pass the through to different VM's. 

 

You have enabled ACS override? 

Link to comment

Thanks.  So if I just want to passthrough just the 0c:00.3 controller and not the 44:00.3 controller I add to my syslinux

 

xen-pciback.hide=(0c:00.3)

 

default menu.c32
menu title Highlander Boot Options
prompt 0
timeout 80
label unRAID OS (stubbed)
  menu default
  kernel /bzimage
  xen-pciback.hide=(0c:00.3)
  append vfio-pci.ids=8086:1521,10de:1c03,10de:10f1 initrd=/bzroot
label unRAID OS GUI Mode (stubbed)
  kernel /bzimage
  xen-pciback.hide=(0c:00.3)
  append vfio-pci.ids=8086:1521,10de:1c03,10de:10f1 initrd=/bzroot,/bzroot-gui

 

 

and to my xml like this:

 

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

??

 

15 hours ago, saarg said:

You have enabled ACS override? 

I've never used ACS as the help warning scared me off - is it safe?  Will this potentially split IOMMU group 14 into different groups?

Link to comment
1 hour ago, DZMM said:

Thanks.  So if I just want to passthrough just the 0c:00.3 controller and not the 44:00.3 controller I add to my syslinux

 


xen-pciback.hide=(0c:00.3)

 


default menu.c32
menu title Highlander Boot Options
prompt 0
timeout 80
label unRAID OS (stubbed)
  menu default
  kernel /bzimage
  xen-pciback.hide=(0c:00.3)
  append vfio-pci.ids=8086:1521,10de:1c03,10de:10f1 initrd=/bzroot
label unRAID OS GUI Mode (stubbed)
  kernel /bzimage
  xen-pciback.hide=(0c:00.3)
  append vfio-pci.ids=8086:1521,10de:1c03,10de:10f1 initrd=/bzroot,/bzroot-gui

 

 

and to my xml like this:

 


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

??

 

I've never used ACS as the help warning scared me off - is it safe?  Will this potentially split IOMMU group 14 into different groups?

 

That looks correct. 

 

The warning is there cause there is a chance that it might happen, but I have not heard anyone here getting any problems. 

I would activate it. You don't know if it's going to split the devices until you activate it. 

Link to comment

Thanks - for ACS do I choose downstream, multi-function or both?

 

@bonienl maybe the ACS text below needs updating, or at least a link to an actual FAQ as the forum search sucks

 

Quote

Warning: Use of this setting could cause possible data corruption with certain hardware configurations. Please visit the Lime Technology forums for more information. A reboot will be required for changes to this setting to take affect.

 

Link to comment
22 hours ago, DZMM said:

Thanks - for ACS do I choose downstream, multi-function or both?

 

@bonienl maybe the ACS text below needs updating, or at least a link to an actual FAQ as the forum search sucks

 

 

 

Try downstream first. 

Why does the text need to be changed? There still is a chance for corruption. I only said I haven't heard about anyone with an issue. 

Link to comment
48 minutes ago, saarg said:

 

Try downstream first. 

Why does the text need to be changed? There still is a chance for corruption. I only said I haven't heard about anyone with an issue. 

I tried multi-function and my machine didn't explode, and it split group 14 which is what I wanted, so I'll try passing through a controller next time I reboot.

 

By changing the help content, I was suggesting explaining what each option is or linking to a relevant FAQ page.

Link to comment
  • 3 years later...

This thread was helpful to me for getting my first USB controller passed through.

All of my USB controllers were on the same device ID even though they were in 2 different IOMMU groups, but using that "xen-pciback.hide" directive I was able to isolate the 2 buses in one IOMMU group from the 6 other busses in the other group, and was then able to successfully add that group the VM using the XML examples given here.

 

Many thanks

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.

×
×
  • Create New...