diff options
author | anish <none@none> | 2006-11-20 18:58:04 -0800 |
---|---|---|
committer | anish <none@none> | 2006-11-20 18:58:04 -0800 |
commit | 0c64a9b435314788e185507d40ef9fae71507f5a (patch) | |
tree | 008e5e1c9fca1e66db367cb58fc6419211962dc3 /usr/src | |
parent | db37186d328b2ea89289aac30ae0be88a90cfa0c (diff) | |
download | illumos-gate-0c64a9b435314788e185507d40ef9fae71507f5a.tar.gz |
6493605 pcifm.c: better handling needed for MAM and UR
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/common/os/pcifm.c | 24 | ||||
-rw-r--r-- | usr/src/uts/i86pc/io/pciex/pcie_error.c | 2 |
2 files changed, 23 insertions, 3 deletions
diff --git a/usr/src/uts/common/os/pcifm.c b/usr/src/uts/common/os/pcifm.c index ee73b2075c..6e079655f2 100644 --- a/usr/src/uts/common/os/pcifm.c +++ b/usr/src/uts/common/os/pcifm.c @@ -49,6 +49,14 @@ uint32_t pcie_expected_ce_mask = PCIE_AER_CE_AD_NFE; uint32_t pcie_expected_ue_mask = 0x0; uint32_t pcie_expected_sue_mask = 0x0; +#if defined(__sparc) +uint32_t pcie_aer_uce_log_bits = PCIE_AER_UCE_LOG_BITS; +uint32_t pcie_aer_suce_log_bits = PCIE_AER_SUCE_LOG_BITS; +#else +uint32_t pcie_aer_uce_log_bits = PCIE_AER_UCE_LOG_BITS & ~PCIE_AER_UCE_UR; +uint32_t pcie_aer_suce_log_bits = \ + PCIE_AER_SUCE_LOG_BITS & ~PCIE_AER_SUCE_RCVD_MA; +#endif errorq_t *pci_target_queue = NULL; @@ -66,7 +74,11 @@ pci_fm_err_t pci_bdg_err_tbl[] = { PCI_DET_PERR, PCI_STAT_PERROR, NULL, DDI_FM_UNKNOWN, PCI_MDPE, PCI_STAT_S_PERROR, PCI_TARG_MDPE, DDI_FM_UNKNOWN, PCI_REC_SERR, PCI_STAT_S_SYSERR, NULL, DDI_FM_UNKNOWN, +#if !defined(__sparc) + PCI_MA, PCI_STAT_R_MAST_AB, PCI_TARG_MA, DDI_FM_OK, +#else PCI_MA, PCI_STAT_R_MAST_AB, PCI_TARG_MA, DDI_FM_UNKNOWN, +#endif PCI_REC_TA, PCI_STAT_R_TARG_AB, PCI_TARG_REC_TA, DDI_FM_UNKNOWN, PCI_SIG_TA, PCI_STAT_S_TARG_AB, NULL, DDI_FM_UNKNOWN, NULL, NULL, NULL, NULL, @@ -93,7 +105,11 @@ static pci_fm_err_t pciex_ue_err_tbl[] = { PCIEX_UC, PCIE_AER_UCE_UC, NULL, DDI_FM_OK, PCIEX_ECRC, PCIE_AER_UCE_ECRC, NULL, DDI_FM_UNKNOWN, PCIEX_CA, PCIE_AER_UCE_CA, NULL, DDI_FM_UNKNOWN, +#if !defined(__sparc) + PCIEX_UR, PCIE_AER_UCE_UR, NULL, DDI_FM_OK, +#else PCIEX_UR, PCIE_AER_UCE_UR, NULL, DDI_FM_UNKNOWN, +#endif PCIEX_POIS, PCIE_AER_UCE_PTLP, NULL, DDI_FM_UNKNOWN, NULL, NULL, NULL, NULL, }; @@ -102,7 +118,11 @@ static pci_fm_err_t pcie_sue_err_tbl[] = { PCIEX_S_TA_SC, PCIE_AER_SUCE_TA_ON_SC, NULL, DDI_FM_UNKNOWN, PCIEX_S_MA_SC, PCIE_AER_SUCE_MA_ON_SC, NULL, DDI_FM_UNKNOWN, PCIEX_S_RTA, PCIE_AER_SUCE_RCVD_TA, NULL, DDI_FM_UNKNOWN, +#if !defined(__sparc) + PCIEX_S_RMA, PCIE_AER_SUCE_RCVD_MA, NULL, DDI_FM_OK, +#else PCIEX_S_RMA, PCIE_AER_SUCE_RCVD_MA, NULL, DDI_FM_UNKNOWN, +#endif PCIEX_S_USC, PCIE_AER_SUCE_USC_ERR, NULL, DDI_FM_UNKNOWN, PCIEX_S_USCMD, PCIE_AER_SUCE_USC_MSG_DATA_ERR, NULL, DDI_FM_FATAL, PCIEX_S_UDE, PCIE_AER_SUCE_UC_DATA_ERR, NULL, DDI_FM_UNKNOWN, @@ -1944,7 +1964,7 @@ pcie_error_report(dev_info_t *dip, ddi_fm_error_t *derr, pci_erpt_t *erpt_p) pcie_adv_regs->pcie_adv_bdf = 0; if ((pcie_adv_regs->pcie_ue_status & - PCIE_AER_UCE_LOG_BITS) != + pcie_aer_uce_log_bits) != pciex_ue_err_tbl[i].reg_bit) { PCI_FM_SEV_INC(pciex_ue_err_tbl[i].flags); pcie_ereport_post(dip, derr, erpt_p, buf, @@ -2006,7 +2026,7 @@ pcie_error_report(dev_info_t *dip, ddi_fm_error_t *derr, pci_erpt_t *erpt_p) pcie_sue_err_tbl[i].err_class); if ((pcie_bdg_regs->pcie_sue_status & - PCIE_AER_SUCE_LOG_BITS) != + pcie_aer_suce_log_bits) != pcie_sue_err_tbl[i].reg_bit) { PCI_FM_SEV_INC(pcie_sue_err_tbl[i].flags); ddi_fm_ereport_post(dip, buf, derr->fme_ena, diff --git a/usr/src/uts/i86pc/io/pciex/pcie_error.c b/usr/src/uts/i86pc/io/pciex/pcie_error.c index e2d7c96278..b46ed0c86b 100644 --- a/usr/src/uts/i86pc/io/pciex/pcie_error.c +++ b/usr/src/uts/i86pc/io/pciex/pcie_error.c @@ -93,7 +93,7 @@ ushort_t pcie_root_error_cmd_default = \ */ uint32_t pcie_aer_uce_mask = 0; uint32_t pcie_aer_ce_mask = PCIE_AER_CE_AD_NFE; -uint32_t pcie_aer_suce_mask = 0; +uint32_t pcie_aer_suce_mask = PCIE_AER_SUCE_RCVD_MA; /* * PCI-Express related severity (AER only) |