On Thu, 2021-02-11 at 13:39 +0200, mika.westerberg@xxxxxxxxxxxxxxx wrote: > On Wed, Feb 10, 2021 at 07:40:06PM +0000, Sergei Miroshnichenko > wrote: > > On Thu, 2021-02-04 at 12:49 +0200, Mika Westerberg > > wrote: > > > ... > > The branch is finally ready, so if you still have time for that, > > please > > take a look: > > > > https://github.com/YADRO-KNS/linux/tree/yadro/pcie_hotplug/movable_bars_v9.1 > > Thanks for sharing! > > I tried this series on top of v5.11-rc7 on a Dell XPS 9380 so that I > have two TBT3 devices connected. Each device includes PCIe switch and > a > xHCI endpoint. > > What I see that the hotplug downstream port does not have enough bus > numbers (and other resources allocated) so when attaching the second > device it does not fit there anymore. The resulting 'lspci -t' output > looks like below: > > -[0000:00]-+-00.0 > +-02.0 > +-04.0 > +-08.0 > +-12.0 > +-14.0 > +-14.2 > +-15.0 > +-15.1 > +-16.0 > +-1c.0-[01]----00.0 > +-1c.6-[02]----00.0 > +-1d.0-[03-3b]----00.0-[04-3b]--+-00.0-[05]----00.0 > | +-01.0-[06-1f]----00.0- > [07-09]--+-02.0-[08]----00.0 > | | > \-04.0-[09]----00.0-[0a]-- > | +-02.0-[20]----00.0 > | \-04.0-[21-3b]-- > +-1d.4-[3c]----00.0 > +-1f.0 > +-1f.3 > +-1f.4 > \-1f.5 > > So the last PCIE switch is not visible anymore, and the xHCI on the > second TBT device is not functional either. > > On the mainline kernel I get this: > > -[0000:00]-+-00.0 > +-02.0 > +-04.0 > +-08.0 > +-12.0 > +-14.0 > +-14.2 > +-15.0 > +-15.1 > +-16.0 > +-1c.0-[01]----00.0 > +-1c.6-[02]----00.0 > +-1d.0-[03-3b]----00.0-[04-3b]--+-00.0-[05]----00.0 > | +-01.0-[06-1f]----00.0- > [07-1f]--+-02.0-[08]----00.0 > | | > \-04.0-[09-1f]----00.0-[0a-1f]--+-02.0-[0b]----00.0 > | | > \-04.0-[0c-1f]-- > | +-02.0-[20]----00.0 > | \-04.0-[21-3b]-- > +-1d.4-[3c]----00.0 > +-1f.0 > +-1f.3 > +-1f.4 > \-1f.5 > > In this topology I can add yet another TBT device and there are still > resources available and all the endpoints are functional too. > > I can send you the full dmesg and lspci -vv output if needed. What a pity. Yes, please, I would of course like to take a look why that happened, and compare, what went wrong (before and after the hotplug: lspci -tv, dmesg -t and /proc/iomem with /proc/ioports, if it wouldn't be too much trouble). The first patchset wasn't intended to change the bus numbers behavior, so I also have to check that locally. And despite of lack of bus numbers, new endpoints still should be visible, this is for me to check as well. Thanks a lot for testing! Serge