6963704 seville: two pcieb nodes remain unconfigured on first config-free boot onnv_146
authorJan Setje-Eilers <Jan.Setje-Eilers@Sun.COM>
Mon, 02 Aug 2010 20:18:43 -0700
changeset 13000 51b1767a74cb
parent 12999 be78c44bc4ea
child 13001 235f324ca5a7
6963704 seville: two pcieb nodes remain unconfigured on first config-free boot
usr/src/uts/common/os/instance.c
--- a/usr/src/uts/common/os/instance.c	Mon Aug 02 20:12:32 2010 -0600
+++ b/usr/src/uts/common/os/instance.c	Mon Aug 02 20:18:43 2010 -0700
@@ -1618,6 +1618,18 @@
 	}
 
 	if (alias && (anp = e_ddi_path_to_instance(alias)) != NULL) {
+		/*
+		 * Since pcieb nodes can split and merge, it is dangerous
+		 * to borrow and instance for them. However since they do
+		 * not expose their instance numbers it is safe to never
+		 * borrow one.
+		 */
+		if (anp->in_drivers->ind_driver_name &&
+		    (strcmp(anp->in_drivers->ind_driver_name, "pcieb") == 0)) {
+			DDI_MP_DBG((CE_NOTE, "not borrowing pcieb: "
+			    "%s alias: %s", curr, alias));
+			goto out;
+		}
 		DDI_MP_DBG((CE_NOTE, "borrowing current: %s alias: %s",
 		    curr, alias));
 		cnp->in_drivers = anp->in_drivers;