Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 1 Mar 2015 04:26:48 +0000 (UTC)
From:      Ryan Stone <rstone@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r279471 - stable/10/sys/dev/pci
Message-ID:  <201503010426.t214Qm0d000607@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rstone
Date: Sun Mar  1 04:26:47 2015
New Revision: 279471
URL: https://svnweb.freebsd.org/changeset/base/279471

Log:
  MFC r264091
  
     Correct a PCI enumeration bug introduced in r264011
  
     Ensure that first_func is set to 0 on every iteration of the PCI slot
     enumeration loop after the first.  There is a continue statement that would
     cause first_func to stay at 1 any PCI device where slot 0 has no functions
     until we find a slot that does have a function.  This would cause us to
     not enumerate the first PCI function on the device.
  
     Credit to markj@ for spotting the bug.
  
     X-MFC-With: r264011

Modified:
  stable/10/sys/dev/pci/pci.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/pci/pci.c
==============================================================================
--- stable/10/sys/dev/pci/pci.c	Sun Mar  1 04:22:06 2015	(r279470)
+++ stable/10/sys/dev/pci/pci.c	Sun Mar  1 04:26:47 2015	(r279471)
@@ -3344,7 +3344,7 @@ pci_add_children(device_t dev, int domai
 	KASSERT(dinfo_size >= sizeof(struct pci_devinfo),
 	    ("dinfo_size too small"));
 	maxslots = PCIB_MAXSLOTS(pcib);
-	for (s = 0; s <= maxslots; s++) {
+	for (s = 0; s <= maxslots; s++, first_func = 0) {
 		pcifunchigh = 0;
 		f = 0;
 		DELAY(1);
@@ -3356,9 +3356,6 @@ pci_add_children(device_t dev, int domai
 		for (f = first_func; f <= pcifunchigh; f++)
 			pci_identify_function(pcib, dev, domain, busno, s, f,
 			    dinfo_size);
-
-		/* For slots after slot 0 we need to check for function 0. */
-		first_func = 0;
 	}
 #undef REG
 }



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