Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 9 Sep 2011 15:22:08 -0400 (EDT)
From:      Daniel Eischen <deischen@freebsd.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        adrian@freebsd.org, freebsd-current@freebsd.org, Warner Losh <imp@freebsd.org>
Subject:   Re: ath0 no longer attaches, cardbus problems?
Message-ID:  <Pine.GSO.4.64.1109091511450.16436@sea.ntplx.net>
In-Reply-To: <Pine.GSO.4.64.1109081638370.10964@sea.ntplx.net>
References:  <Pine.GSO.4.64.1108242007100.23746@sea.ntplx.net> <201109080942.03413.jhb@freebsd.org> <Pine.GSO.4.64.1109081243320.10252@sea.ntplx.net> <201109081359.56584.jhb@freebsd.org> <Pine.GSO.4.64.1109081638370.10964@sea.ntplx.net>

next in thread | previous in thread | raw e-mail | index | archive | help
I found the commit that broke ath for me, r222753,
specifically, the change to /dev/cardbus/cardbus_cis.c.

To be sure, I updated to head using svn, and applied
the patch included below.  ath attaches and works.  Without
the patch, ath does not attach.

On another note, I've no idea why updating from a local
CVS repo lead me down a wrong path.  It seems wrong that
a 'cvs update -P -d -A -D "31 Mar 2011"' works and
a 'cvs update -P -d -A -D "1 Apr 2011"' does not work.
r222753 did not occur until much later (June 6).
Once John asked me to try r220195, I switched to using
svn.  When that worked, it seemed strange to me because
nothing else committed after that on Mar 31 should have
broke ath.

Anyway, culprit found.  Now what is the correct fix?


Index: sys/dev/cardbus/cardbus_cis.c
===================================================================
--- sys/dev/cardbus/cardbus_cis.c	(revision 225463)
+++ sys/dev/cardbus/cardbus_cis.c	(working copy)
@@ -441,6 +441,7 @@
  {
  	if (res != CIS_CONFIG_SPACE) {
  		bus_release_resource(child, SYS_RES_MEMORY, rid, res);
+		bus_delete_resource(child, SYS_RES_MEMORY, rid);
  	}
  }

@@ -477,7 +478,11 @@
  	}

  	/* allocate the memory space to read CIS */
+#if 0
  	res = bus_alloc_resource_any(child, SYS_RES_MEMORY, rid,
+#else
+	res = bus_alloc_resource(child, SYS_RES_MEMORY, rid, 0, ~0, 1,
+#endif
  	    rman_make_alignment_flags(4096) | RF_ACTIVE);
  	if (res == NULL) {
  		device_printf(cbdev, "Unable to allocate resource "

-- 
DE



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