diff options
| author | Dan Crowell <dcrowell@us.ibm.com> | 2018-08-06 08:41:35 -0500 |
|---|---|---|
| committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-08-19 22:24:57 -0500 |
| commit | 5675c7315db0c79fa464149ea38cde09f3195130 (patch) | |
| tree | 0245f5a028edc609a5b9e0e6bf76203319189daa /src/usr/errl | |
| parent | 207de5cbd30e805f2f15dc9f2f4bc7e63e774796 (diff) | |
| download | talos-hostboot-5675c7315db0c79fa464149ea38cde09f3195130.tar.gz talos-hostboot-5675c7315db0c79fa464149ea38cde09f3195130.zip | |
Add flag to HWAS Callout for SMP repair indicator
Used one of the reserved bytes of the callout structure to hold
a flag that will indicate if the SMP bus being called out is
completely down, and thus eligible for concurrent repair.
Change-Id: I299e3393529e811aa006a087de51165b79038201
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/63946
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/errl')
| -rw-r--r-- | src/usr/errl/errlentry.C | 11 | ||||
| -rw-r--r-- | src/usr/errl/errludcallout.C | 4 | ||||
| -rw-r--r-- | src/usr/errl/plugins/errludcallout.H | 11 |
3 files changed, 21 insertions, 5 deletions
diff --git a/src/usr/errl/errlentry.C b/src/usr/errl/errlentry.C index 3d183b923..d16ba7dab 100644 --- a/src/usr/errl/errlentry.C +++ b/src/usr/errl/errlentry.C @@ -422,7 +422,8 @@ void ErrlEntry::addPartCallout(const TARGETING::Target *i_target, void ErrlEntry::addBusCallout(const TARGETING::Target *i_target_endp1, const TARGETING::Target *i_target_endp2, const HWAS::busTypeEnum i_busType, - const HWAS::callOutPriority i_priority) + const HWAS::callOutPriority i_priority, + const HWAS::CalloutFlag_t i_flag) { TRACFCOMP(g_trac_errl, ENTER_MRK"addBusCallout(%p, %p, %d, 0x%x)", i_target_endp1, i_target_endp2, i_busType, i_priority); @@ -439,7 +440,7 @@ void ErrlEntry::addBusCallout(const TARGETING::Target *i_target_endp1, ErrlUserDetailsCallout( pData1, size1, pData2, size2, i_busType, - i_priority).addToLog(this); + i_priority, i_flag).addToLog(this); if( ep1 ) { @@ -456,7 +457,8 @@ void ErrlEntry::addBusCallout(const TARGETING::Target *i_target_endp1, void ErrlEntry::addBusCallout(const TARGETING::EntityPath & i_target_endp1, const TARGETING::EntityPath & i_target_endp2, const HWAS::busTypeEnum i_busType, - const HWAS::callOutPriority i_priority) + const HWAS::callOutPriority i_priority, + const HWAS::CalloutFlag_t i_flag) { char * l_target_endp1_path_str = nullptr; char * l_target_endp2_path_str = nullptr; @@ -491,7 +493,8 @@ void ErrlEntry::addBusCallout(const TARGETING::EntityPath & i_target_endp1, &i_target_endp2, size2, i_busType, - i_priority).addToLog(this); + i_priority, + i_flag).addToLog(this); } else diff --git a/src/usr/errl/errludcallout.C b/src/usr/errl/errludcallout.C index 3e8c0b522..0ba9e1570 100644 --- a/src/usr/errl/errludcallout.C +++ b/src/usr/errl/errludcallout.C @@ -112,7 +112,8 @@ ErrlUserDetailsCallout::ErrlUserDetailsCallout( const void *i_pTarget2Data, uint32_t i_target2DataLength, const HWAS::busTypeEnum i_busType, - const HWAS::callOutPriority i_priority) + const HWAS::callOutPriority i_priority, + const HWAS::CalloutFlag_t i_flag) { TRACDCOMP(g_trac_errl, "BusCallout entry"); @@ -127,6 +128,7 @@ ErrlUserDetailsCallout::ErrlUserDetailsCallout( pData = reinterpret_cast<HWAS::callout_ud_t *> (reallocUsrBuf(pDataLength)); pData->type = HWAS::BUS_CALLOUT; + pData->flag = i_flag; pData->busType = i_busType; pData->priority = i_priority; char * l_ptr = (char *)(++pData); diff --git a/src/usr/errl/plugins/errludcallout.H b/src/usr/errl/plugins/errludcallout.H index 4df646c7b..9ebea5e64 100644 --- a/src/usr/errl/plugins/errludcallout.H +++ b/src/usr/errl/plugins/errludcallout.H @@ -362,6 +362,17 @@ case HWAS::_type: i_parser.PrintString( "Priority", #_type); break; break; } // switch priority #undef case_PRIORITY + + switch (pData->flag) + { +#define case_FLAG(_type) \ + case HWAS::_type: i_parser.PrintString( "Flag", #_type); break; + case_FLAG(FLAG_LINK_DOWN) + case(HWAS::FLAG_NONE): break; //do not print anything + default: + i_parser.PrintNumber( "Flag", "UNKNOWN: 0x%X", + ntohl(pData->flag) ); + } // switch partType } // parse friend class ErrlUserDetailsParserSensor; |

