From owner-freebsd-hardware@FreeBSD.ORG Tue May 18 11:56:36 2004 Return-Path: Delivered-To: freebsd-hardware@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2FBD516A4CE for ; Tue, 18 May 2004 11:56:36 -0700 (PDT) Received: from nightmare.dreamchaser.org (pm7-2.blackfoot.net [12.32.36.65]) by mx1.FreeBSD.org (Postfix) with ESMTP id B16A743DFD for ; Tue, 18 May 2004 10:53:24 -0700 (PDT) (envelope-from garya@dreamchaser.org) Received: from [12.32.36.74] (imagination.dreamchaser.org. [12.32.36.74]) i4IHr9402606 for ; Tue, 18 May 2004 11:53:11 -0600 (MDT) (envelope-from garya@dreamchaser.org) Message-ID: <40AA4D80.6000607@dreamchaser.org> Date: Tue, 18 May 2004 11:53:04 -0600 From: Gary Aitken User-Agent: Mozilla Thunderbird 0.6 (Windows/20040502) X-Accept-Language: en-us, en MIME-Version: 1.0 To: freebsd-hardware@freebsd.org Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Subject: resource recognition / allocation in drivers X-BeenThere: freebsd-hardware@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: General discussion of FreeBSD hardware List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 May 2004 18:56:36 -0000 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