summaryrefslogtreecommitdiffstats
path: root/src/usr/errl/errlmanager_common.C
diff options
context:
space:
mode:
authorJaymes Wilks <mjwilks@us.ibm.com>2016-06-13 13:13:13 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-08-06 23:29:04 -0400
commit7227adfd3147dde9745df166eab9e8a73d56c717 (patch)
tree49d6549c244033cfb526d14b2cc3d805a67bcfa2 /src/usr/errl/errlmanager_common.C
parent16b5ea836e4fb7ba3daace47685b257e6f6a5a70 (diff)
downloadtalos-hostboot-7227adfd3147dde9745df166eab9e8a73d56c717.tar.gz
talos-hostboot-7227adfd3147dde9745df166eab9e8a73d56c717.zip
Generate procedure callout FSPSP55 for all bus callouts
In order to ensure that all Planar callouts connecting the MC and the centaur are included in the FRU list of the error log, add procedure callout FSPSP55 to all error logs for which a bus callout is encountered. Change-Id: I59e1fb02071d0d24d7b1ecfdd641562c781d5fa6 CQ:SW352374 ForwardPort: yes Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/25757 Reviewed-by: Matthew A. Ploetz <maploetz@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/27762 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr/errl/errlmanager_common.C')
-rw-r--r--src/usr/errl/errlmanager_common.C27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/usr/errl/errlmanager_common.C b/src/usr/errl/errlmanager_common.C
index 48f84eed6..431ca52fa 100644
--- a/src/usr/errl/errlmanager_common.C
+++ b/src/usr/errl/errlmanager_common.C
@@ -552,9 +552,12 @@ void ErrlManager::sendErrLogToBmc(errlHndl_t &io_err, bool i_sendSels)
// two pass algorithm to find the highest priority callout
// then send SELs for only the highest priority callouts
std::vector< HWAS::callout_ud_t* > l_callouts;
+ HWAS::callout_ud_t l_calloutToAdd; // used for EIBUS error
HWAS::callOutPriority l_priority = HWAS::SRCI_PRIORITY_NONE;
if (i_sendSels)
{
+ bool l_busCalloutEncountered = false; // flag bus callout
+
// look thru the errlog for any Callout UserDetail sections
// to later determine the sensor information for each SEL
// create a vector of callouts during the first pass
@@ -572,6 +575,14 @@ void ErrlManager::sendErrLogToBmc(errlHndl_t &io_err, bool i_sendSels)
HWAS::callout_ud_t *l_ud =
reinterpret_cast<HWAS::callout_ud_t*>((*it)->iv_pData);
+ // create a "fill in" procedure callout for all bus callouts
+ if (l_ud->type == HWAS::BUS_CALLOUT)
+ {
+ l_busCalloutEncountered = true;
+ l_calloutToAdd.type = HWAS::PROCEDURE_CALLOUT;
+ l_calloutToAdd.procedure = HWAS::EPUB_PRC_EIBUS_ERROR;
+ }
+
// if this callout is higher than any previous callout
if (l_ud->priority > l_priority)
{
@@ -588,6 +599,22 @@ void ErrlManager::sendErrLogToBmc(errlHndl_t &io_err, bool i_sendSels)
l_callouts.push_back(l_ud);
} // if callout
} // for each SectionVector
+ if (l_busCalloutEncountered)
+ {
+ // add EIBUS error procedure callout
+ // doing push_back after the loop and not during ensures that:
+ // 1) the iterator is not invalidated by the push_back
+ // 2) the push_back is done only once, even when there are
+ // multiple bus callouts (which is often). This would not
+ // be a major concern though since duplicates are removed
+ // in the next loop below.
+ l_callouts.push_back(&l_calloutToAdd);
+ // need to also consider this callout as a modifier of others
+ l_modifier.considerCallout(&l_calloutToAdd);
+ // our added callout always takes the highest priority seen
+ // so that it will not be dropped
+ l_calloutToAdd.priority = l_priority;
+ }
} // if i_sendSels
//Add additional user detail section to pel data after hw and procedure
OpenPOWER on IntegriCloud