Re: [PATCH] thunderbolt: Fix PCIe device enumeration with delayed rescan

Mika Westerberg
2026-01-26T05:42:34Z

On Mon, Jan 26, 2026 at 11:30:47AM +0800, Chia-Lin Kao (AceLan) wrote:
> Hi,
> On Fri, Jan 23, 2026 at 01:01:12PM +0100, Mika Westerberg wrote:
> > Hi,
> >
> > On Fri, Jan 23, 2026 at 10:04:11AM +0800, Chia-Lin Kao (AceLan) wrote:
> > > > Can you comment out call to tb_switch_xhci_connect() and see if that
> > > > changes anything?
> > >
> > > Here is what I modified, and the problem becomes a little bit complicated.
> >
> > Okay I see it did not change anything (well this is kind of what I
> > expected). Thanks for trying.
> >
> > I see in your log that the PCIe tunnel is established just fine. It's just
> > that there is no PCIe hotplug happening or it is happening but the PCIe
> > Downstream Port is not waking up.
> >
> > I figured you have following USB4/TB topology, right?
> >
> > AMD Host <-> GR Hub <-> TB3 Hub
> > ^
> > |
> > TB3 Hub
> Should be more like this
> AMD Host <-> Dell TB4 Dock <-> OWC Envoy Express (1-502)
> \
> <-> OWC Envoy Express (1-702)
> or
> AMD Host (1-0, domain1)
> |
> └─ Port 2 ──→ Dell Thunderbolt 4 Dock (1-2)
> ├─ Port 5 ──→ OWC Envoy Express (1-502)
> └─ Port 7 ──→ OWC Envoy Express (1-702)

Okay so the same ;-)

> > What if you run 'lspci' after the issue reproduces? Does that bring the
> > missing PCIe devices? I suspect that this is due to older TB3 devices that
> > they may need bit more time to get the PCIe link (going over the tunnel) up
> > and running.
> lspci doesn't bring back the missing tbt storage.

Forgot to mention that let it (the whole topology) enter runtime suspend
before you run lspci.

> It's not about the timing issue, you can't get the tbt storage works
> with multiple re-plug. And after rescan, you can always get the tbt storage
> work after replug.
>
> And reproduce the issue again by unplugging the 2 tbt storages, and
> then plugging them back in one by one. The second one will not be
> recognized. There is a hotplug event, but it just stops somewhere
> in the middle.

You mean the first one always works?

What if you connect them directly to the host, one by one?