rootPanda

Members
  • Posts

    4
  • Joined

  • Last visited

Posts posted by rootPanda

  1. Disabling IOMMU is system wide. It's all or nothing.

     

    If you don't need passthrough, disable IOMMU, some (if not all) USB 3.0 cards atleast, tend to work better, in my experience..

     

    There should be no hypervisor drawbacks, your VMs should function like normal. A fast way to disable IOMMU for me, was to add "iommu=soft" to the startup parameters...

  2. Hi all!

    Firstly, I've been using UnRaid on and off for the last couple of years for different projects, just testing stuff out and getting a feel for compatibility and such. So, the last month or so, I've been getting hold of some server grade hardware and CPUs for a bigger project and have run into a little bit of a snag..

     

    Secondly, sorry for the wall of text!

     

    My end goal is to have 1 computer running 4 VMs for gaming, GPU and USB passthrough for hot plug. The idea is simple and UnRaid can definitely do all of that.

    My hardware is not "new", but it does the job and works well with UnRaid. However, like many others, I am having issues with USB 3.0 "SuperSpeed" passthrough.. Yes, I'm talking about the infamous PEXUSB3S44V from StarTech...

     

    I would like to share my findings so far, because I refuse to give up on this card. :)

     

    So, the PEXUSB3S44V, which we all know, supports UASP ("USB Attached SCSI Protocol"), great for USB storage devices requiring that little extra speed, bad for us people trying to pass it through to a VM.. I believe the issue may be related to this controller using 2 drivers (correct me if I'm wrong), drivers "pcieport" (for the UAS part of this card) and "xhci_hcd" (for the USB 3.0 part).

     

    Using IOMMU, everything seems fine, all in seperate groups, almost too perfect, right?

    IOMMU group 26:	[12d8:2608] 81:00.0 PCI bridge: Pericom Semiconductor PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch
    IOMMU group 27:	[12d8:2608] 82:01.0 PCI bridge: Pericom Semiconductor PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch
    IOMMU group 28:	[12d8:2608] 82:02.0 PCI bridge: Pericom Semiconductor PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch
    IOMMU group 29:	[12d8:2608] 82:03.0 PCI bridge: Pericom Semiconductor PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch
    IOMMU group 30:	[12d8:2608] 82:04.0 PCI bridge: Pericom Semiconductor PI7C9X2G608GP PCIe2 6-Port/8-Lane Packet Switch
    IOMMU group 31:	[1912:0015] 83:00.0 USB controller: Renesas Technology Corp. uPD720202 USB 3.0 Host Controller (rev 02)
    IOMMU group 32:	[1912:0015] 84:00.0 USB controller: Renesas Technology Corp. uPD720202 USB 3.0 Host Controller (rev 02)
    IOMMU group 33:	[1912:0015] 85:00.0 USB controller: Renesas Technology Corp. uPD720202 USB 3.0 Host Controller (rev 02)
    IOMMU group 34:	[1912:0015] 86:00.0 USB controller: Renesas Technology Corp. uPD720202 USB 3.0 Host Controller (rev 02)

    Trying to attach devices to this card (with IOMMU on), does nothing, nothing is showing up, no drives or devices detected by either UnRaid or the VM (Windows 10 VM, "Code 10" error, USB Root Hub not starting).

     

    However, UnRaid can properly utilize this card, but ONLY when IOMMU is disabled. Attaching devices to this card with IOMMU off, works just fine. So, armed with the knowledge that UnRaid can use this card "normally", I started my journey trying to get it to work with passthrough.

     

    What I have tried so far:

     

    The obvious stuff (startup parameters);

    1. vfio-pci.ids=1912:0015 (with and without the PCI bridge for this card, 12d8:2608)
    2. pci-stub.ids=1912:0015 (with and without the PCI bridge for this card, 12d8:2608)
    3. intel_iommu=on iommu=pt (with either vfio-pci.ids or pci-stub.ids)

    The not so obvious stuff;

    1. xen-pciback.hide=(81:00.0)(82:01.0)(82:02.0)(82:03.0)(82:04.0)(83:00.0)(84:00.0)(85:00.0)(86:00.0)
    2. modprobe_blacklist=xhci_hcd
    3. initcall_blacklist=xhci_init

    Last two in hopes that disabling the xhci driver might cause a fall-back to the ehci or ohci driver (forcing USB 2.0?). It is still initialized tho, I cannot get it to not start. Then I read that the xhci driver may be started via the "uas" driver/protocol, but I have not found what the init call function for this is yet or how to disable it.. (someone more into Linux might know this..). Not even sure UnRaid has UASP support, I believe I read somewhere that the kernel needs to be recompiled with "CONFIG_USB_UAS" directive (or something like it), to enable the support, but obviously those who have tried, said it made no difference, atleast not for this card.

     

    So, where am I now? My thoughts so far moving forward;

    1. Trying to disable both UASP support and the "xhci_hcd" driver from loading, in an attempt to force a fall-back. Can it be done?
    2. Trying to install "compatible" xhci drivers as modules (*.ko files?) and getting the card to use them. Can it be done?

     

    I hope my little adventure and wall of text concerning this card, can both help and inspire someone to reach a working solution for getting passthrough working properly. Final thoughts, IMHO, is that I believe this to be a driver issue, not a hardware issue. Driver issues can be corrected. :)


    Disclaimer: English is not my first language, so apologies for any typos or grammatical errors. Thank you.

    • Like 1
  3. Hi.

    The key word here is "SuperSpeed". I assume your card have something called UASP support?

     

    I have been struggling with a USB 3.0 card with UASP (or "SuperSpeed") for a while, and I too am unable to get it working properly with UnRaid. Too me, it seems like the passthrough is broken for any cards or devices requiring UASP..

     

    However, the cards work with UnRaid, but ONLY if you disable IOMMU (which defeats the purpose if you want passthrough..), then they work fine, devices show up and the card is working like it would on bare metal.