summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Setje-Eilers <Jan.Setje-Eilers@Sun.COM>2010-08-02 20:18:43 -0700
committerJan Setje-Eilers <Jan.Setje-Eilers@Sun.COM>2010-08-02 20:18:43 -0700
commit90646fe827990338aed51dc77a3924e71412b74a (patch)
tree4dfc9b805612cd07a07b652596bcc13520ff66ba
parent5010b7f7d31dbab7bc89cb216aeb080b56ed2e5d (diff)
downloadillumos-gate-90646fe827990338aed51dc77a3924e71412b74a.tar.gz
6963704 seville: two pcieb nodes remain unconfigured on first config-free bootonnv_146
-rw-r--r--usr/src/uts/common/os/instance.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/usr/src/uts/common/os/instance.c b/usr/src/uts/common/os/instance.c
index 135a0fef60..c1d00ff2ba 100644
--- a/usr/src/uts/common/os/instance.c
+++ b/usr/src/uts/common/os/instance.c
@@ -1618,6 +1618,18 @@ e_ddi_borrow_instance(dev_info_t *cdip, in_node_t *cnp)
}
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;