[+cc Thierry] In subject, PCI: Let pcibios_root_bridge_prepare() access bridge->windows On Mon, Nov 15, 2021 at 08:08:05AM +0100, Sergio Paracuellos wrote: > When function 'pci_register_host_bridge()' is called, 'bridge->windows' are > already available. However this windows are being moved temporarily from > there. To let 'pcibios_root_bridge_prepare()' to have access to this windows > move this windows movement after call this function. This is interesting for > MIPS ralink mt7621 platform to be able to properly set I/O coherence units > with this information and avoid custom MIPs code in generic PCIe controller > drivers. > > Signed-off-by: Sergio Paracuellos <sergio.paracuellos@xxxxxxxxx> > --- > drivers/pci/probe.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c > index 087d3658f75c..372a70efccc6 100644 > --- a/drivers/pci/probe.c > +++ b/drivers/pci/probe.c > @@ -898,8 +898,6 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge) > > bridge->bus = bus; > > - /* Temporarily move resources off the list */ > - list_splice_init(&bridge->windows, &resources); Arnd added this with 37d6a0a6f470 ("PCI: Add pci_register_host_bridge() interface") [1]. I can't remember why this was done, but we did go to some trouble to move things around, so there must have been a good reason. Arnd or Thierry, do you remember? > bus->sysdata = bridge->sysdata; > bus->ops = bridge->ops; > bus->number = bus->busn_res.start = bridge->busnr; > @@ -925,6 +923,8 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge) > if (err) > goto free; > > + /* Temporarily move resources off the list */ > + list_splice_init(&bridge->windows, &resources); > err = device_add(&bridge->dev); > if (err) { > put_device(&bridge->dev); > -- > 2.33.0 > [1] https://git.kernel.org/linus/37d6a0a6f470