Date: Tue, 18 May 2004 11:53:04 -0600 From: Gary Aitken <garya@dreamchaser.org> To: freebsd-hardware@freebsd.org Subject: resource recognition / allocation in drivers Message-ID: <40AA4D80.6000607@dreamchaser.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?40AA4D80.6000607>