On 4/22/06, Stefan Reinauer stepan@coresystems.de wrote:
- yhlu yinghailu@gmail.com [060422 06:37]:
we already have pci_locate_device(). pci_locate_device_on_bus(...unsigned bus).
Cool! I guess most of us just did not know about that.
static device_t pci_locate_device_on_bus(unsigned pci_id, unsigned bus)
is defined in romcc_io.h and does exactly what is needed in this case. Firewire on the Epia is always on bus 0.
Ok so the "right" solution for the epia-m is to change pci_locate_device() to pci_locate_device_on_bus(0);
Eric: Please confirm that it fixes your problem.
That still leaves the outstanding issue that pci_locate_device() will pause for long periods if it can't find a device. And probing the entire pci space may not be a good thing anyway.
I would propose that pci_locate_device still needs a hard cap.
Whats the maximum number of PCI buses that any one has ever seen on one board?
-- Richard A. Smith