Message ID | 20230131092405.29121-1-mika.westerberg@linux.intel.com (mailing list archive) |
---|---|
Headers | show |
Series | PCI: distribute resources for root buses | expand |
On Tue, Jan 31, 2023 at 11:24:02AM +0200, Mika Westerberg wrote: > Hi all, > > This is sixth iteration of the patch series trying to solve the problem > reported by Chris Chiu [1]. In summary the current resource distribution > code does not cover the initial device enumeration so if we find > unconfigured bridges they get the bare minimum. > > In addition to that it turned out the current resource distribution code > does not take into account possible multifunction devices and/or other > devices on the bus. The patch 1/2 tries to make it more generic. I've > tested it on QEMU following the topology Jonathan is using and also in a > a couple of systems with Thunderbolt controller and complex topologies > to make sure it still keeps working. > > The previous versions of the series can be found: > > v5: https://lore.kernel.org/linux-pci/20230112110000.59974-1-mika.westerberg@linux.intel.com/ > v4: https://lore.kernel.org/linux-pci/20230104091635.63331-1-mika.westerberg@linux.intel.com/ > v3: https://lore.kernel.org/linux-pci/20221130112221.66612-1-mika.westerberg@linux.intel.com/ > v2: https://lore.kernel.org/linux-pci/20221114115953.40236-1-mika.westerberg@linux.intel.com/ > v1: https://lore.kernel.org/linux-pci/20221103103254.30497-1-mika.westerberg@linux.intel.com/ > > Changes from v5: > * Correct typo in mmio calculation (io_per_hp -> mmio_per_hp) > * Add missing -1 to the mmio_pref end when align == 0. > > Changes from v4: > * Split the alignment fix into separate patch > * Create helper for removing resources > * Skip VF BARs when removing > * Add check for 32-bit/64-bit prefetchable resource so that we account > them correctly. > * Update comments and commit log slightly according to review > comments. > * Did not add the "lookup for hotplug bridges below non-hotplug ones". > It turned out to be non-trivial. The current code works for the > "common" case of Thunderbolt/USB4 PCIe switches but we may need to > revisit this if there is a real need. > > Changes from v3: > * Make it more generic and not depend on how many bridges there are > on the bus. > > Changes from v2: > * Make both patches to work with PCI devices too (do not expect that > the bridge is always first device on the bus). > * Allow distribution with bridges that do not have all resource > windows programmed (therefore the patch 2/2 is not revert anymore) > * I did not add the tags from Rafael and Jonathan because the code is > not exactly the same anymore so was not sure if they still apply. > > Changes from v1: > * Re-worded the commit message to hopefully explain the problem better > * Added Link: to the bug report > * Update the comment according to Bjorn's suggestion > * Dropped the ->multifunction check > * Use %#llx in log format. > > [1] https://bugzilla.kernel.org/show_bug.cgi?id=216000 > > Mika Westerberg (3): > PCI: Align extra resources for hotplug bridges properly > PCI: Take other bus devices into account when distributing resources > PCI: Distribute available resources for root buses too > > drivers/pci/setup-bus.c | 232 ++++++++++++++++++++++++++++------------ > 1 file changed, 166 insertions(+), 66 deletions(-) Applied to pci/resource for v6.3, thanks, Mika!