resource recognition / allocation in drivers

John Baldwin jhb at FreeBSD.org
Wed May 19 05:40:56 PDT 2004


On Tuesday 18 May 2004 01:53 pm, Gary Aitken wrote:
> 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.

FreeBSD 4.5 doesn't allocate resources for a BAR that doesn't have its 
resources allocated by the BIOS.  Try turning PnP OS off if you have it on to 
force the BIOS to allocate resources for all BARs.

-- 
John Baldwin <jhb at FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org


More information about the freebsd-hardware mailing list