summaryrefslogtreecommitdiff
path: root/usr/src/uts
diff options
context:
space:
mode:
authorZhi-Jun Robin Fu <Zhijun.Fu@Sun.COM>2009-12-16 10:28:50 +0800
committerZhi-Jun Robin Fu <Zhijun.Fu@Sun.COM>2009-12-16 10:28:50 +0800
commit51ac2e32f1bc4e49f5f721696c89dde51feeebab (patch)
tree61b23f14b13f238aaf3035eee44b4a743511a7ef /usr/src/uts
parenteac223cc141d147b18d5f11977ade425411c5116 (diff)
downloadillumos-gate-51ac2e32f1bc4e49f5f721696c89dde51feeebab.tar.gz
6909993 bootup panic at assertion failed: rcdip != NULL, file: ../../intel/io/pci/pci_boot.c, line: 3362
Diffstat (limited to 'usr/src/uts')
-rw-r--r--usr/src/uts/intel/io/pci/pci_boot.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/usr/src/uts/intel/io/pci/pci_boot.c b/usr/src/uts/intel/io/pci/pci_boot.c
index a50d147f25..8c4bb1954a 100644
--- a/usr/src/uts/intel/io/pci/pci_boot.c
+++ b/usr/src/uts/intel/io/pci/pci_boot.c
@@ -1957,7 +1957,14 @@ process_devfunc(uchar_t bus, uchar_t dev, uchar_t func, uchar_t header,
pci_cfgacc_add_workaround(bdf, secbus, subbus);
}
- if (mcfg_mem_base != NULL) {
+ /*
+ * Only populate bus_t if this is a PCIE platform, and
+ * the device is sitting under a PCIE root complex(RC) .
+ * Some particular machines have both PCIE RC and PCI
+ * hostbridge, in which case only devices under PCIE RC
+ * get their bus_t populated.
+ */
+ if ((mcfg_mem_base != NULL) && (pcie_get_rc_dip(dip) != NULL)) {
ck804_fix_aer_ptr(dip, bdf);
(void) pcie_init_bus(dip, bdf, PCIE_BUS_INITIAL);
}