svn commit: r201280 - head/sys/dev/cardbus

John Baldwin jhb at FreeBSD.org
Wed Dec 30 20:49:13 UTC 2009


Author: jhb
Date: Wed Dec 30 20:49:13 2009
New Revision: 201280
URL: http://svn.freebsd.org/changeset/base/201280

Log:
  Delete the CIS resource after releasing it.  This is needed when the CIS is
  stored in a BAR since the CIS BAR is mapped before the PCI bus driver
  enumerates all the BARs.  Without this change, the PCI bus driver would
  attempt to initialize a BAR that was already allocated resulting in a panic.

Modified:
  head/sys/dev/cardbus/cardbus_cis.c

Modified: head/sys/dev/cardbus/cardbus_cis.c
==============================================================================
--- head/sys/dev/cardbus/cardbus_cis.c	Wed Dec 30 20:47:14 2009	(r201279)
+++ head/sys/dev/cardbus/cardbus_cis.c	Wed Dec 30 20:49:13 2009	(r201280)
@@ -430,6 +430,7 @@ cardbus_read_tuple_finish(device_t cbdev
 {
 	if (res != CIS_CONFIG_SPACE) {
 		bus_release_resource(child, SYS_RES_MEMORY, rid, res);
+		bus_delete_resource(child, SYS_RES_MEMORY, rid);
 	}
 }
 
@@ -492,8 +493,8 @@ cardbus_read_tuple_init(device_t cbdev, 
 				device_printf(cbdev, "Bad header in rom %d: "
 				    "[%x] %04x\n", romnum, imagebase +
 				    CARDBUS_EXROM_SIGNATURE, romsig);
-				bus_release_resource(child, SYS_RES_MEMORY,
-				    *rid, res);
+				cardbus_read_tuple_finish(cbdev, child, *rid,
+				    res);
 				*rid = 0;
 				return (NULL);
 			}


More information about the svn-src-head mailing list