Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Jul 2007 09:07:35 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-current@freebsd.org
Cc:        julian@elischer.org, "M. Warner Losh" <imp@bsdimp.com>, current@freebsd.org
Subject:   Re: fun fun fun. no networking
Message-ID:  <200707130907.37295.jhb@freebsd.org>
In-Reply-To: <20070527.235832.-267226920.imp@bsdimp.com>
References:  <4659DAD1.9040609@elischer.org> <20070527.235832.-267226920.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 28 May 2007 01:58:32 am M. Warner Losh wrote:
> In message: <4659DAD1.9040609@elischer.org>
>             Julian Elischer <julian@elischer.org> writes:
> : I finally rebooted my old laptop on a -current from about 3 weeks ago.
> : (I did the rebuild then but the machine has been off since)
> : and ta-da!  no network card..  it is a Dell inspiron 7500 with 
> : a pccard 'ed' device card..
> : 
> : Was there anything broken 3 weeks ago WRT old ed driver cards?
> : or pccd?
> : 
> : It come up saying "unknown card type".. Which is odd
> : as it always used to knwo what to do.
> : 
> : This machine has a local CVS mirror on it so 
> : even though it's offline, I'm rebuilding from 2 months ago..
> : (I couldn't just reboot to the old system as there is really only just 
> : room for one kernel directory on the root partition.)
> : 
> : More info when it comes back online
> 
> I think, but am not sure, this is related to some changes John made to
> acpi resource allocation.  I get weird port allocations due to some
> questionable assumptions on his part...  I've not had time to look
> into this in detail, but I see it on all cardbus cards that allocate
> I/O ports.  All of the ones that only do memory work great.

You can try this perhaps:

--- //depot/vendor/freebsd/src/sys/dev/acpica/acpi.c	2007/05/08 14:37:51
+++ //depot/user/jhb/acpipci/dev/acpica/acpi.c	2007/05/08 22:28:25
@@ -1030,17 +1030,18 @@
     }
 
     /*
-     * If this is an allocation of a specific range, see if we can satisfy
-     * the request from our system resource regions.  If we can't, pass the
-     * request up to the parent.
+     * Try to pass the request up to our parent first.  If that
+     * doesn't work, then see if we can satisfy the request via a
+     * suballocation from our system resource regions.
      */
-    if (start + count - 1 == end && rm != NULL)
+    res = BUS_ALLOC_RESOURCE(device_get_parent(bus), child, type, rid,
+	start, end, count, flags);
+    if (res == NULL && rm != NULL) {
 	res = rman_reserve_resource(rm, start, end, count, flags & ~RF_ACTIVE,
 	    child);
-    if (res == NULL) {
-	res = BUS_ALLOC_RESOURCE(device_get_parent(bus), child, type, rid,
-	    start, end, count, flags);
-    } else {
+	if (res == NULL)
+		goto out;
+
 	rman_set_rid(res, *rid);
 
 	/* If requested, activate the resource using the parent's method. */

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200707130907.37295.jhb>