On Thu, Sep 07, 2023 at 11:13:00AM +0800, Jiaxun Yang wrote: > > > 在 2023/9/7 9:18, Manivannan Sadhasivam 写道: > [...] > > Why do you need to walk through every single device instead of just bridges? > > I'm not the maintainer, but my suggestion is to go for Huacai Chen's solution. > Hi Mani, > > Thanks for your reply, unfortunately Huacai's solution is impractical in > this case. > > The problem we have, is firmware (or BIOS) setting improper MRRS for devices > attached under those bridges. So we have to fix up MRRS for every single > device. > We can't iterate child device in bridge quirk because there is no guarantee > that > bridge will be probed before it's child device, partly due to hotplug. > Okay, this clarifies and also warrants improvement in commit message. You could also use pci_walk_bus() after pci_host_probe() to iterate over the child devices under root bridge and set MRRS. IMO that would look neat. - Mani > This quirk has been in tree for a while, until Huacai refactored it and > broke some > systems in 8b3517f88ff2 ("PCI: loongson: Prevent LS7A MRRS increases"). > > Also to note that ks_pcie_quirk in drivers/pci/controller/dwc/pci-keystone.c > uses similar approach. > > This avoids iterating over bridges/devices two times. > > > > Also, please rename firmware to BIOS, as firmware commonly represents the > > software running on PCIe endpoint devices. > Ack, will fix in next reversion. > > Thanks > - Jiaxun > > > > - Mani > [...] -- மணிவண்ணன் சதாசிவம்