diff options
author | Brian Horton <brianh@linux.ibm.com> | 2015-08-19 13:41:30 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-09-03 14:40:03 -0500 |
commit | 0579143faea0a19bd4133ce5179855ec7dc3c9b7 (patch) | |
tree | bb79013be84055a49f57913a8aa814ea20c5d776 /src/usr/errl/errlmanager.C | |
parent | 06e40c4aa3efe6f006dc7971ad58f08f42117ea3 (diff) | |
download | talos-hostboot-0579143faea0a19bd4133ce5179855ec7dc3c9b7.tar.gz talos-hostboot-0579143faea0a19bd4133ce5179855ec7dc3c9b7.zip |
fix issues with dup sel/esel
. call errlmanager ack inline/synchronously, so that we don't have
dup eSELs due to shutdown
. don't resend sensor SEL events for errorlogs read out of PNOR
Depends-On: Ia2b211d8ebf489e92f2bc3d281d92175a6b61f30
Change-Id: I32c8e49ef2e00567987cdf030a225b61e7077cf6
CQ: SW312094
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/19993
Tested-by: Jenkins Server
Tested-by: Jenkins OP Build CI
Tested-by: Jenkins OP HW
Tested-by: FSP CI Jenkins
Reviewed-by: WILLIAM G. HOFFA <wghoffa@us.ibm.com>
Reviewed-by: Richard J. Knight <rjknight@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/errl/errlmanager.C')
-rw-r--r-- | src/usr/errl/errlmanager.C | 50 |
1 files changed, 11 insertions, 39 deletions
diff --git a/src/usr/errl/errlmanager.C b/src/usr/errl/errlmanager.C index dea951ce4..dbca48014 100644 --- a/src/usr/errl/errlmanager.C +++ b/src/usr/errl/errlmanager.C @@ -386,6 +386,13 @@ void ErrlManager::errlogMsgHndlr () // Mark IPMI processing complete _clearFlag(*it, IPMI_FLAG); } + else if (_isFlagSet(*it, IPMI_NOSEL_FLAG)) + { + // send errorlog + sendErrLogToBmc(it->first, false); + // Mark IPMI processing complete + _clearFlag(*it, IPMI_NOSEL_FLAG); + } _updateErrlListIter(it); } #endif @@ -759,8 +766,6 @@ void ErrlManager::setHwasProcessCalloutFn(HWAS::processCalloutFn i_fn) ERRORLOG::theErrlManager::instance().iv_hwasProcessCalloutFn = i_fn; } -/////////////////////////////////////////////////////////////////////////////// -// Global function (not a method on an object) to commit the error log. void ErrlManager::errlResourceReady(errlManagerNeeds i_needs) { ERRORLOG::theErrlManager::instance().sendResourcesMsg(i_needs); @@ -810,39 +815,6 @@ void ErrlManager::sendResourcesMsg(errlManagerNeeds i_needs) return; } -/////////////////////////////////////////////////////////////////////////////// -// Global function (not a method on an object) to ack that the error log -// was sent to the BMC. -void ErrlManager::errlAckErrorlog(uint32_t i_eid) -{ - ERRORLOG::theErrlManager::instance().sendAckErrorlog(i_eid); - return; -} - -void ErrlManager::sendAckErrorlog(uint32_t i_eid) -{ - TRACFCOMP( g_trac_errl, ENTER_MRK"ErrlManager::sendAddErrorlog 0x%.8X", - i_eid); - - //Create a message to send to Host boot error message queue. - msg_t *msg = msg_allocate(); - msg->type = ERRLOG_COMMITTED_ACK_RESPONSE_TYPE; - //Pass along the eid of the error, shifted up to the first word - msg->data[0] = static_cast<uint64_t>(i_eid) << 32; - - //Send the msg asynchronously to error message queue to handle. - int rc = msg_send ( ERRORLOG::ErrlManager::iv_msgQ, msg ); - - //Return code is non-zero when the message queue is invalid - //or the message type is invalid. - if ( rc ) - { - TRACFCOMP( g_trac_errl, ERR_MRK "Failed (rc=%d) to send ack 0x%.8X message.", - rc, i_eid); - } - return; -} - bool ErrlManager::errlCommittedThisBoot() { @@ -918,10 +890,6 @@ void ErrlManager::errlogShutdown() iv_errlList.pop_front(); } // while items on iv_errlList list - // Ensure that all the error logs are pushed out to PNOR - // prior to the PNOR resource provider shutting down. - PNOR::flush(PNOR::HB_ERRLOGS); - // Un-register error log message queue from the shutdown INITSERVICE::unregisterShutdownEvent( iv_msgQ); @@ -939,6 +907,10 @@ void ErrlManager::errlogShutdown() // shutting down. // msg_q_destroy(iv_msgQ); + // Ensure that all the error logs are pushed out to PNOR + // prior to the PNOR resource provider shutting down. + PNOR::flush(PNOR::HB_ERRLOGS); + return; } |