From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Dag B <dag@bakke.com>
Cc: "Bjorn Helgaas" <helgaas@kernel.org>,
linux-pci@vger.kernel.org, linux-usb@vger.kernel.org,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Lukas Wunner" <lukas@wunner.de>
Subject: Re: Connecting multiple TB3 eGPUs via USB4 hub?'
Date: Thu, 11 Jun 2026 07:28:29 +0200 [thread overview]
Message-ID: <20260611052829.GW2990@black.igk.intel.com> (raw)
In-Reply-To: <20260611044114.GU2990@black.igk.intel.com>
On Thu, Jun 11, 2026 at 06:41:14AM +0200, Mika Westerberg wrote:
> Hi,
>
> On Thu, Jun 11, 2026 at 12:48:40AM +0200, Dag B wrote:
> >
> > On 6/9/26 14:08, Mika Westerberg wrote:
> > > Hi,
> > >
> > > On Mon, Jun 08, 2026 at 10:26:40AM -0500, Bjorn Helgaas wrote:
> > > > [+cc linux-usb (Thunderbolt maintainers), Ilpo, Lukas]
> > > >
> > > > On Sun, May 24, 2026 at 04:56:56PM +0200, Dag B wrote:
> > > > > I am attempting to connect two TB3 enclosures to the same USB4 port via a
> > > > > USB4 hub.
> > > > >
> > > > > I cannot figure out of this is in violation of the TB3, TB4 or USB4 spec.
> > > > I'm not aware of a spec issue here.
> > Thank you very much Bjorn, slightly more interesting trying to get it to
> > work then.
> > > It should be fine but typically PCIe resources for one tunneled PCIe root
> > > port may not be enough for multiple GPUs. Therefore I suggest to connect
> > > them directly to the host USB4 ports without a hub.
> >
> > That makes perfect sense. Until you run out of physical ports. The entire
> > point of this exercise started with trying to connect a 5th 3090 to my fw13
> > motherboard. :-D
> >
> > Hence the USB4 hub. But even with just the hub and two connected GPUs, it
> > fails.
>
> Yes most likely because a single GPU takes lots of resources and there is
> quite small window reserved per root port for example:
>
> Memory behind bridge: 60000000-6c1fffff [size=194M] [32-bit]
> Prefetchable memory behind bridge: 6040000000-605bffffff [size=448M] [32-bit]
>
> Looking at your logs you have all 4 PCIe root ports for tunneling listed
> there so I would expect you have 4 USB4/TB ports available as well
> (typically the root ports not available for tunneling will not be visible
> to the OS).
>
> > For now, I have limited my testing to just the USB4 hub and either one or
> > two GPUs.
> >
> >
> > > Second thing is that you have bunch of PCIe related command line parameters
> > > that may affect. I suggest removing all of them, and retry. There is hardly
> > > any reason to add these - the kernel should be able to handle this by
> > > default.
> >
> > Mhm. I have stripped the command line parameters for some of my tests. It
> > absolutely works with nothing extra for a single GPU. And it absolutely did
> > not work without command-line params and with 4 GPUs when I started on this
> > adventure. But that was around 6.16-6.17.
> >
> >
> > >
> > > Then provide full dmesg along with output of 'sudo lspci -vv' so we can
> > > look a the resource allocation.
> >
> > This very quickly becomes a lot of data as I test various things. I put a
> > repo with various data up on github.
> >
> > https://github.com/dagbdagb/usb4_to_tb3_troubleshooting/
>
> There seems to be no dmesg + lspci without the command line parameters? Can
> you do this:
>
> 1. Remove all the non-default command line parameters.
> 2. Boot the system up, nothing connected.
> 3. Plug in the USB4 dock, enable PCIe tunnel (this probably is automatic)
> 4. Plug in the first eGPU to the dock, enable PCIe tunnel
> 5. Plug in the second eGPU to the dock, enable PCIe tunnel
>
> From this take full dmesg and output of 'sudo lspci -vv'. At least we can
> see how the "default" kernel resource allocation fails.
Actually there is dmesg.6+hotplug_egpu_2 and lspci-vv.6+hotplug_egpu_2.
Sorry missed that.
The first GPU seems to fit fine:
[ 24.538295] nvidia 0000:66:00.0: enabling device (0000 -> 0003)
[ 24.539803] nvidia 0000:66:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
[ 24.590905] NVRM: loading NVIDIA UNIX Open Kernel Module for x86_64 610.43.02 Release Build (portage@localhost) Wed Jun 10 19:38:57 -00 2026
But then the second one has not enough resources left, the 55:03.0
downstream port that is used to connect the second GPU has only these left:
I/O behind bridge: b000-bfff [size=4K] [16-bit]
Memory behind bridge: 66e00000-6a2fffff [size=53M] [32-bit]
Prefetchable memory behind bridge: [disabled] [64-bit]
Some BIOSes has an option that you can increase the amount of resources for
the root ports but some vendors hide it.
prev parent reply other threads:[~2026-06-11 5:28 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-24 14:56 Connecting multiple TB3 eGPUs via USB4 hub? Dag B
2026-06-08 15:26 ` Connecting multiple TB3 eGPUs via USB4 hub?' Bjorn Helgaas
2026-06-09 12:08 ` Mika Westerberg
2026-06-10 22:48 ` Dag B
2026-06-11 4:41 ` Mika Westerberg
2026-06-11 5:28 ` Mika Westerberg [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260611052829.GW2990@black.igk.intel.com \
--to=mika.westerberg@linux.intel.com \
--cc=dag@bakke.com \
--cc=helgaas@kernel.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=linux-pci@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=lukas@wunner.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.