From owner-freebsd-hackers@FreeBSD.ORG Fri Jun 30 08:16:53 2006 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7462216A415 for ; Fri, 30 Jun 2006 08:16:53 +0000 (UTC) (envelope-from jmg@hydrogen.funkthat.com) Received: from hydrogen.funkthat.com (gate.funkthat.com [69.17.45.168]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9FA0B4413E for ; Fri, 30 Jun 2006 08:16:48 +0000 (GMT) (envelope-from jmg@hydrogen.funkthat.com) Received: from hydrogen.funkthat.com (68exmmpuajxxjbf8@localhost.funkthat.com [127.0.0.1]) by hydrogen.funkthat.com (8.13.6/8.13.3) with ESMTP id k5U8GlIN019164; Fri, 30 Jun 2006 01:16:47 -0700 (PDT) (envelope-from jmg@hydrogen.funkthat.com) Received: (from jmg@localhost) by hydrogen.funkthat.com (8.13.6/8.13.3/Submit) id k5U8GlpH019163; Fri, 30 Jun 2006 01:16:47 -0700 (PDT) (envelope-from jmg) Date: Fri, 30 Jun 2006 01:16:46 -0700 From: John-Mark Gurney To: hongz@promisechina.com Message-ID: <20060630081646.GS82074@funkthat.com> Mail-Followup-To: hongz@promisechina.com, freebsd-hackers@freebsd.org References: <20060629223618.GR82074@funkthat.com> <1151648790$67280$13400385@hongz@promisechina.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1151648790$67280$13400385@hongz@promisechina.com> User-Agent: Mutt/1.4.2.1i X-Operating-System: FreeBSD 5.4-RELEASE-p6 i386 X-PGP-Fingerprint: B7 EC EF F8 AE ED A7 31 96 7A 22 B3 D8 56 36 F4 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html Cc: freebsd-hackers@freebsd.org Subject: Re: ????: Help:why bus resource shortage? X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: John-Mark Gurney List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jun 2006 08:16:53 -0000 hongz@promisechina.com wrote this message on Fri, Jun 30, 2006 at 14:26 +0800: > I found the problem! It was caused by an existed ata driver in FreeBSD. I > have mentioned before that the existed ata driver can take over the > management of our HBA card, leading to our driver can not probe our card! By > getting rid of the ID in ata-chipset.c,we can probe the HBA card, but we > still can not get the pci resources! Instead, I can get rid of the effects > of the existed ata driver by only getting rid of the ID in probe function of > ata-pci.c! This has now been fixed by making the built in driver return a negative value for the probe.. so your probe routine can return 0, and it will win the probe for the device... > In summon, the problems (probe failure and bus resource short) lie in the hmm. that seems wierd, are you trying to allocate the resource in the _probe function? You shouldn't need to unless you need to do special munging of the resources to properly identify the device.. and unless you return 0 from your _probe function, you will have to release the resrouce at the end of the _probe function... > ata driver in FreeBSD, which can recognize our HBA card because it records > the ID of this HBA. By getting rid of the switch case of this ID in probe > function of ata-pci.c, you can take over the HBA completely. > > Here, I would like to report my solution (not tested yet) on a previous > question about how to transfer physical address into kernel virtual address > in FreeBSD: That is what the bus_space api is for... The method you propose is a hack and not very useful for ensuring that your driver run on other platforms... > -----????????----- > ??????: John-Mark Gurney [mailto:gurney_j@resnet.uoregon.edu] > ????????: 2006??6??30?? 6:36 > ??????: hongz@promisechina.com > ????: freebsd-hackers@freebsd.org > ????: Re: Help:why bus resource shortage? > > hongz@promisechina.com wrote this message on Thu, Jun 15, 2006 at 14:55 > +0800: > > I failed to get the pci bus resource after the driver is loaded (sc->r_mem > > is NULL after bus_alloc_resource_any is called). Is it because bus > resources > > have been consumed by other drivers? Or other something happened? Please > > help me on this! > > Please provide a verbose boot (boot -v) output of the pci card... > > > rid = 0x10; > > You really should be using PCIR_BAR macro instead of hard coding it... > > > sc->r_mem = bus_alloc_resource_any(sc->dev, SYS_RES_MEMORY, &rid, > > RF_ACTIVE); > > > > if (!sc->r_mem) return ENOMEM; > > > > > > > > The pci resources on our cards: > > > > shasta0: port 0x2400-0x247f, > > 0x2000-0x20ff mem 0xe9021000-0xe9021fff, 0xe9000000-0xe901ffff irq 17 at > > device 5.0 on pci2 > > The resources could be in a different order than listed... Are you > sure the memory resource is in the first bar possition? -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."