diff options
author | Brian Horton <brianh@linux.ibm.com> | 2015-03-02 12:12:28 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-03-11 00:45:57 -0500 |
commit | bda236e6e0c7d3aa5165160abbd5ead92ac0a68e (patch) | |
tree | 3aeb5c836873cacb78083b25a98092c5a4a86a4c /src/usr/errl | |
parent | 788ec2a6d01df562f38352443bacd68c9cb0c633 (diff) | |
download | talos-hostboot-bda236e6e0c7d3aa5165160abbd5ead92ac0a68e.tar.gz talos-hostboot-bda236e6e0c7d3aa5165160abbd5ead92ac0a68e.zip |
change error log to SEL processing
for hostboot runtime, do not send eSEL (AMI bug)
for hostboot ipl, send down SEL following eSEL
Change-Id: I86ee9766e27548c3f7f72fbdbfd76c8a8be7da73
RTC: 124971
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/16107
Tested-by: Jenkins Server
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: Brian Silver <bsilver@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/errl')
-rw-r--r-- | src/usr/errl/errlmanager_common.C | 43 |
1 files changed, 39 insertions, 4 deletions
diff --git a/src/usr/errl/errlmanager_common.C b/src/usr/errl/errlmanager_common.C index a64ed3beb..fb4175092 100644 --- a/src/usr/errl/errlmanager_common.C +++ b/src/usr/errl/errlmanager_common.C @@ -100,7 +100,9 @@ void ErrlManager::sendErrLogToBmc(errlHndl_t &io_err) l_sensorType, unused ); if( e ) { - TRACFCOMP(g_trac_errl, ERR_MRK"Failed to get sensor type for sensor %d",l_sensorNumber); + TRACFCOMP(g_trac_errl, + ERR_MRK"Failed to get sensor type for sensor %d", + l_sensorNumber); // since we are in the commit path, lets just delete this // error and move on. delete e; @@ -130,12 +132,45 @@ void ErrlManager::sendErrLogToBmc(errlHndl_t &io_err) break; } + uint8_t l_eventDirType = IPMISEL::event_transition; + uint8_t l_eventOffset = IPMISEL::event_data1_trans_to_non_recoverable; + switch (io_err->sev()) + { + case ERRORLOG::ERRL_SEV_INFORMATIONAL: + l_eventDirType = IPMISEL::event_transition; + l_eventOffset = IPMISEL::event_data1_trans_informational; + break; + case ERRL_SEV_RECOVERED: + l_eventDirType = IPMISEL::event_transition; + l_eventOffset = IPMISEL::event_data1_trans_to_ok; + break; + case ERRL_SEV_PREDICTIVE: + l_eventDirType = IPMISEL::event_predictive; + l_eventOffset = IPMISEL::event_data1_trans_to_noncrit_from_ok; + break; + case ERRL_SEV_UNRECOVERABLE: + l_eventDirType = IPMISEL::event_transition; + l_eventOffset = IPMISEL::event_data1_trans_to_non_recoverable; + break; + case ERRL_SEV_CRITICAL_SYS_TERM: + l_eventDirType = IPMISEL::event_transition; + l_eventOffset = IPMISEL::event_data1_trans_to_crit_from_non_r; + break; + case ERRL_SEV_UNKNOWN: + l_eventDirType = IPMISEL::event_state; + l_eventOffset = IPMISEL::event_data1_asserted; + break; + } + // send it to the BMC over IPMI TRACFCOMP(g_trac_errl, INFO_MRK - "sendErrLogToBmc: sensor %.2x/%.2x, size %d", - l_sensorType, l_sensorNumber, l_pelSize); + "sendErrLogToBmc: sensor %.2x/%.2x event %x/%x, size %d", + l_sensorType, l_sensorNumber, + l_eventDirType, l_eventOffset, + l_pelSize); IPMISEL::sendESEL(l_pelData, l_pelSize, - io_err->eid(), IPMISEL::event_unspecified, + io_err->eid(), + l_eventDirType, l_eventOffset, l_sensorType, l_sensorNumber); // free the buffer |