On Friday, September 07, 2012 10:48:39 am John Baldwin wrote:
> On Thursday, September 06, 2012 5:08:27 pm Navdeep Parhar wrote:
> > I have a system with multiple cards supported by cxgbe(4).  When I build 
> > a kernel with the driver compiled in, it attaches to the cards in a 
> > different order from when it's loaded as a module.  Why?  The network 
> > interfaces get re-ordered and this is quite annoying.
> 
> Hmmmm.  The boot time probe does a depth first walk of the PCI bus.  This is 
> what is suggested by PCI-SIG for enumerating PCI buses (and is normally how 
> BIOSs walk the bus assigning bus numbers).  The walk that is done at kldload 
> time walks the 'pciX' bus devices in numerical order (rather than walking the 
> tree).  I suspect your BIOS is doing something weird and assigning bus 
> numbers 
> in a non-depth first ordering so that the two orderings are not consisent as 
> they are on other machines.

BTW, another fix is to stop trying to force unit numbers to patch PCI bus
numbers (e.g. change pcib_attach() in pci_pci.c to use -1 instead of
sc->secbus).  A few other places would need to be changed as well:
acpi_pcib_attach(), legacy_pcib_attach(), qpi_pcib_attach(),
mptable_hostb_attach().  If we went this route we should probably do it on
other platforms as well.  (Some, such as sparc64 already do this.)

-- 
John Baldwin
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to