resource recognition / allocation in drivers

Gary Aitken garya at dreamchaser.org
Tue May 18 11:56:36 PDT 2004


I've been beating my head against the wall trying to get my fbsd 4.5 to 
use dec 21041 pci Ethernet cards (de device, pci/if_de.c driver).  Not 
being a kernel debugging guru, it's been slow.

Turns out when pci_alloc_resource issues a call to resource_list_alloc 
(kern/subr_bus.c), it calls resource_list_find, which fails (returns 
null).  The call is for a type of 04 (SYS_RES_IOPORT) and an rid of 0x10 
(PCI_CBIO).  Instead of adding the resource when it is not found in the 
list, the call fails and the device is effectively disabled. 
Interestingly, this has the side effect (somehow) of preventing at least 
one other network driver from working in my case, although ifconfig 
shows them functioning.  Not sure why this is so; removing the card 
allows the other cards to function properly.

My question is, what is the design philosophy regarding calls to 
resource_list_find from resource_list_alloc?  When should 
resource_list_add be called?  Should it have been called at some prior 
point to set up all the resources a driver will be using?  Is there a 
particular driver I can look at to see how things *should* be coded?

I know the cards work, and have worked under freebsd.  I had one working 
with an eth0 serial device installed for a leased line.  That device 
came out when I switched to dsl.  I suspect that the eth0 driver somehow 
added the resources to the list properly, so that when the de driver 
went to allocate some more for itself, the find actually found something.

Any help much appreciated.

Gary Aitken


More information about the freebsd-hardware mailing list