PCI: Improve "partially hidden behind bridge" log message
pci_scan_child_bus_extend() complains when we assign an unreachable
secondary bus number to a bridge.  For example, given the topology below:
  +-1b.0-[01-39]----00.0-[02-3a]--+-00.0-[03]----00.0
                                  +-01.0-[04-39]--
                                  \-02.0-[3a]----00.0
it logs the 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]
These messages are incorrect (0000:02 is a bus, not a bridge) and
confusing.  Make the message more understandable:
  pci 0000:02:02.0: devices behind bridge are unusable because [bus 3a] cannot be assigned for them
Also, remove the reference to CardBus, because this issue affects all
varieties of PCI, not just CardBus.
Suggested-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
[bhelgaas: changelog]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
			
			
This commit is contained in:
		
							parent
							
								
									70f7880d2d
								
							
						
					
					
						commit
						e412d63d60
					
				| @ -1191,20 +1191,15 @@ 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 %pR cannot be assigned for them\n", | ||||
| 				 &child->busn_res); | ||||
| 			break; | ||||
| 		} | ||||
| 		bus = bus->parent; | ||||
| 	} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user