svn commit: r231149 - head/sys/powerpc/ofw

Nathan Whitehorn nwhitehorn at FreeBSD.org
Tue Feb 7 19:14:14 UTC 2012


Author: nwhitehorn
Date: Tue Feb  7 19:14:13 2012
New Revision: 231149
URL: http://svn.freebsd.org/changeset/base/231149

Log:
  The bus resource adjustment API is not meant to work on active resources.
  Return an error if a driver attempts this, and, if INVARIANTS is on,
  panic.
  
  Reviewed by:	jhb

Modified:
  head/sys/powerpc/ofw/ofw_pci.c

Modified: head/sys/powerpc/ofw/ofw_pci.c
==============================================================================
--- head/sys/powerpc/ofw/ofw_pci.c	Tue Feb  7 19:13:47 2012	(r231148)
+++ head/sys/powerpc/ofw/ofw_pci.c	Tue Feb  7 19:14:13 2012	(r231149)
@@ -431,7 +431,11 @@ ofw_pci_adjust_resource(device_t bus, de
 {
 	struct rman *rm = NULL;
 	struct ofw_pci_softc *sc = device_get_softc(bus);
-	int error;
+
+	KASSERT(!(rman_get_flags(res) & RF_ACTIVE),
+	    ("active resources cannot be adjusted"));
+	if (rman_get_flags(res) & RF_ACTIVE)
+		return (EINVAL);
 
 	switch (type) {
 	case SYS_RES_MEMORY:
@@ -447,21 +451,7 @@ ofw_pci_adjust_resource(device_t bus, de
 	if (!rman_is_region_manager(res, rm))
 		return (EINVAL);
 
-	error = rman_adjust_resource(res, start, end);
-	if (error)
-		return (error);
-
-	if (rman_get_flags(res) & RF_ACTIVE) {
-		/* Remap memory resources */
-		error = ofw_pci_deactivate_resource(bus, child, type,
-		    rman_get_rid(res), res);
-		if (error)
-			return (error);
-		error = ofw_pci_activate_resource(bus, child, type,
-		    rman_get_rid(res), res);
-	}
-
-	return (error);
+	return (rman_adjust_resource(res, start, end));
 }
 	
 


More information about the svn-src-head mailing list