diff options
author | Jaymes Wilks <mjwilks@us.ibm.com> | 2016-06-13 13:13:13 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-08-06 23:29:04 -0400 |
commit | 7227adfd3147dde9745df166eab9e8a73d56c717 (patch) | |
tree | 49d6549c244033cfb526d14b2cc3d805a67bcfa2 /src/usr/errl/errlmanager_common.C | |
parent | 16b5ea836e4fb7ba3daace47685b257e6f6a5a70 (diff) | |
download | talos-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.C | 27 |
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 |