diff options
author | Zhi-Jun Robin Fu <Zhijun.Fu@Sun.COM> | 2009-12-16 10:28:50 +0800 |
---|---|---|
committer | Zhi-Jun Robin Fu <Zhijun.Fu@Sun.COM> | 2009-12-16 10:28:50 +0800 |
commit | 51ac2e32f1bc4e49f5f721696c89dde51feeebab (patch) | |
tree | 61b23f14b13f238aaf3035eee44b4a743511a7ef /usr/src/uts | |
parent | eac223cc141d147b18d5f11977ade425411c5116 (diff) | |
download | illumos-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.c | 9 |
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); } |