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