Message ID | 20180403145225.22371-9-mika.westerberg@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
On Tuesday, April 3, 2018 4:52:24 PM CEST Mika Westerberg wrote: > There is a sanity checker in the end of pci_scan_child_bus_extend() that > tries to detect badly configured bridges. For example given the below > topology: > > +-1b.0-[01-39]----00.0-[02-3a]--+-00.0-[03]----00.0 > +-01.0-[04-39]-- > \-02.0-[3a]----00.0 > > The sanity checker notices this and logs following messages: > > pci_bus 0000:3a: [bus 3a] partially hidden behind bridge 0000:02 [bus 02-39] > pci_bus 0000:3a: [bus 3a] partially hidden behind bridge 0000:01 [bus 01-39] > > This is not really helpful to users and the information above is not > even correct (0000:02 is a bus not bridge). Make this a bit more > understandable by changing the sanity checker to log following message > in place of the above two messages: > > pci 0000:02:02.0: devices behind bridge are unusable because we cannot assign [bus 3a] for them FWIW, I prefer to use passive voice in messages, like devices behind bridge are unusable, because [bus 3a] cannot be assigned for them > While there update the comment on top of the sanity checker block to > make it clear that it is not only restricted to CardBus. > > Suggested-by: Bjorn Helgaas <bhelgaas@google.com> > Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> > --- > drivers/pci/probe.c | 14 +++++--------- > 1 file changed, 5 insertions(+), 9 deletions(-) > > diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c > index 079eea6680bb..70b07a0e00b8 100644 > --- a/drivers/pci/probe.c > +++ b/drivers/pci/probe.c > @@ -1175,20 +1175,16 @@ static int pci_scan_bridge_extend(struct pci_bus *bus, struct pci_dev *dev, > (is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"), > pci_domain_nr(bus), child->number); > > - /* Has only triggered on CardBus, fixup is in yenta_socket */ > + /* Check that all devices are accessible */ > while (bus->parent) { > if ((child->busn_res.end > bus->busn_res.end) || > (child->number > bus->busn_res.end) || > (child->number < bus->number) || > (child->busn_res.end < bus->number)) { > - dev_info(&child->dev, "%pR %s hidden behind%s bridge %s %pR\n", > - &child->busn_res, > - (bus->number > child->busn_res.end && > - bus->busn_res.end < child->number) ? > - "wholly" : "partially", > - bus->self->transparent ? " transparent" : "", > - dev_name(&bus->dev), > - &bus->busn_res); > + dev_info(&dev->dev, > + "devices behind bridge are unusable because we cannot assign %pR for them\n", > + &child->busn_res); > + break; > } > bus = bus->parent; > } >
On Tue, Apr 10, 2018 at 05:04:53PM +0200, Rafael J. Wysocki wrote: > On Tuesday, April 3, 2018 4:52:24 PM CEST Mika Westerberg wrote: > > There is a sanity checker in the end of pci_scan_child_bus_extend() that > > tries to detect badly configured bridges. For example given the below > > topology: > > > > +-1b.0-[01-39]----00.0-[02-3a]--+-00.0-[03]----00.0 > > +-01.0-[04-39]-- > > \-02.0-[3a]----00.0 > > > > The sanity checker notices this and logs following messages: > > > > pci_bus 0000:3a: [bus 3a] partially hidden behind bridge 0000:02 [bus 02-39] > > pci_bus 0000:3a: [bus 3a] partially hidden behind bridge 0000:01 [bus 01-39] > > > > This is not really helpful to users and the information above is not > > even correct (0000:02 is a bus not bridge). Make this a bit more > > understandable by changing the sanity checker to log following message > > in place of the above two messages: > > > > pci 0000:02:02.0: devices behind bridge are unusable because we cannot assign [bus 3a] for them > > FWIW, I prefer to use passive voice in messages, like > > devices behind bridge are unusable, because [bus 3a] cannot be assigned for them Works for me :) I'll update the message accordingly then.
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 079eea6680bb..70b07a0e00b8 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -1175,20 +1175,16 @@ static int pci_scan_bridge_extend(struct pci_bus *bus, struct pci_dev *dev, (is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"), pci_domain_nr(bus), child->number); - /* Has only triggered on CardBus, fixup is in yenta_socket */ + /* Check that all devices are accessible */ while (bus->parent) { if ((child->busn_res.end > bus->busn_res.end) || (child->number > bus->busn_res.end) || (child->number < bus->number) || (child->busn_res.end < bus->number)) { - dev_info(&child->dev, "%pR %s hidden behind%s bridge %s %pR\n", - &child->busn_res, - (bus->number > child->busn_res.end && - bus->busn_res.end < child->number) ? - "wholly" : "partially", - bus->self->transparent ? " transparent" : "", - dev_name(&bus->dev), - &bus->busn_res); + dev_info(&dev->dev, + "devices behind bridge are unusable because we cannot assign %pR for them\n", + &child->busn_res); + break; } bus = bus->parent; }
There is a sanity checker in the end of pci_scan_child_bus_extend() that tries to detect badly configured bridges. For example given the below topology: +-1b.0-[01-39]----00.0-[02-3a]--+-00.0-[03]----00.0 +-01.0-[04-39]-- \-02.0-[3a]----00.0 The sanity checker notices this and logs following messages: pci_bus 0000:3a: [bus 3a] partially hidden behind bridge 0000:02 [bus 02-39] pci_bus 0000:3a: [bus 3a] partially hidden behind bridge 0000:01 [bus 01-39] This is not really helpful to users and the information above is not even correct (0000:02 is a bus not bridge). Make this a bit more understandable by changing the sanity checker to log following message in place of the above two messages: pci 0000:02:02.0: devices behind bridge are unusable because we cannot assign [bus 3a] for them While there update the comment on top of the sanity checker block to make it clear that it is not only restricted to CardBus. Suggested-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> --- drivers/pci/probe.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)