|
|
| version 1.8, 2004/01/15 20:35:06 | version 1.9, 2004/02/10 07:26:06 |
|---|---|
| Line 776 static int pcib_probe(device_t dev) | Line 776 static int pcib_probe(device_t dev) |
| return ENXIO; | return ENXIO; |
| } | } |
| /* | |
| * Attach a pci bus device to a motherboard or pci-to-pci bridge bus. | |
| * Due to probe recursion it is possible for pci-to-pci bridges (such as | |
| * on the DELL2550) to attach before all the motherboard bridges have | |
| * attached. We must call device_add_child() with the secondary id | |
| * rather then -1 in order to ensure that we do not accidently use | |
| * a motherboard PCI id, otherwise the device probe will believe that | |
| * the later motherboard bridge bus has already been probed and refuse | |
| * to probe it. The result: disappearing busses! | |
| */ | |
| static int pcib_attach(device_t dev) | static int pcib_attach(device_t dev) |
| { | { |
| u_int8_t secondary; | u_int8_t secondary; |
| Line 785 static int pcib_attach(device_t dev) | Line 795 static int pcib_attach(device_t dev) |
| secondary = pci_get_secondarybus(dev); | secondary = pci_get_secondarybus(dev); |
| if (secondary) { | if (secondary) { |
| child = device_add_child(dev, "pci", -1); | child = device_add_child(dev, "pci", secondary); |
| *(int*) device_get_softc(dev) = secondary; | *(int*) device_get_softc(dev) = secondary; |
| return bus_generic_attach(dev); | return bus_generic_attach(dev); |
| } else | } else |