summaryrefslogtreecommitdiffstats
path: root/src/usr/errl/errlmanager.C
diff options
context:
space:
mode:
authorBrian Horton <brianh@linux.ibm.com>2015-08-19 13:41:30 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-09-03 14:40:03 -0500
commit0579143faea0a19bd4133ce5179855ec7dc3c9b7 (patch)
treebb79013be84055a49f57913a8aa814ea20c5d776 /src/usr/errl/errlmanager.C
parent06e40c4aa3efe6f006dc7971ad58f08f42117ea3 (diff)
downloadtalos-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.C50
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;
}
OpenPOWER on IntegriCloud