Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 May 2012 21:07:11 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r235934 - head/sys/powerpc/mpc85xx
Message-ID:  <201205242107.q4OL7B7p060354@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marcel
Date: Thu May 24 21:07:10 2012
New Revision: 235934
URL: http://svn.freebsd.org/changeset/base/235934

Log:
  Just return if the size of the window is 0. This can happen when the
  FDT does not define all ranges possible for a particular node (e.g.
  PCI).
  While here, only update the trgt_mem and trgt_io pointers if there's
  no error. This avoids that we knowingly write an invalid target (= -1).

Modified:
  head/sys/powerpc/mpc85xx/mpc85xx.c

Modified: head/sys/powerpc/mpc85xx/mpc85xx.c
==============================================================================
--- head/sys/powerpc/mpc85xx/mpc85xx.c	Thu May 24 21:01:35 2012	(r235933)
+++ head/sys/powerpc/mpc85xx/mpc85xx.c	Thu May 24 21:07:10 2012	(r235934)
@@ -88,6 +88,9 @@ law_enable(int trgt, u_long addr, u_long
 	uint32_t bar, sr;
 	int i, law_max;
 
+	if (size == 0)
+		return (0);
+
 	law_max = law_getmax();
 	bar = _LAW_BAR(addr);
 	sr = _LAW_SR(trgt, size);
@@ -168,7 +171,10 @@ law_pci_target(struct resource *res, int
 	default:
 		rv = ENXIO;
 	}
-	*trgt_mem = *trgt_io = trgt;
+	if (rv == 0) {
+		*trgt_mem = trgt;
+		*trgt_io = trgt;
+	}
 	return (rv);
 }
 



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