On Fri, Jan 27, 2012 at 6:49 PM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote: > children bridges busn range should be able to be allocated from parent bus range. > > to avoid overlapping between sibling bridges on same bus. > > Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx> > --- > drivers/pci/probe.c | 27 +++++++++++++++++++++++++++ > 1 files changed, 27 insertions(+), 0 deletions(-) > > diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c > index 83df3fb..e12f65f0 100644 > --- a/drivers/pci/probe.c > +++ b/drivers/pci/probe.c > @@ -791,6 +791,33 @@ reduce_needed_size: > return ret; > } > > +static int __devinit pci_bridge_check_busn_res(struct pci_bus *bus, > + struct pci_dev *dev, > + int secondary, int subordinate) This function returns a boolean, but the function name doesn't give any clue about what a true/false return means. Something like "busn_valid" would make the callers more readable. > +{ > + int broken = 0; > + > + struct resource busn_res; > + int ret; > + > + memset(&busn_res, 0, sizeof(struct resource)); > + dev_printk(KERN_DEBUG, &dev->dev, > + "check if busn %02x-%02x is in busn_res: %06llx-%06llx\n", > + secondary, subordinate, > + (unsigned long long)bus->busn_res.start, > + (unsigned long long)bus->busn_res.end); > + ret = allocate_resource(&bus->busn_res, &busn_res, > + (subordinate - secondary + 1), > + (pci_domain_nr(bus)<<8) | secondary, > + (pci_domain_nr(bus)<<8) | subordinate, I think this "(pci_domain_nr(bus)<<8) | secondary" stuff needs to be a macro or something. > + 1, NULL, NULL); > + if (ret) > + broken = 1; > + else > + release_resource(&busn_res); > + > + return broken; > +} > /* > * If it's a bridge, configure it and scan the bus behind it. > * For CardBus bridges, we don't scan behind as the devices will > -- > 1.7.7 > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html