diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2014-09-12 17:07:46 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-09-17 10:54:37 -0500 |
commit | 2e06c508897e6210ec249e7cbefe3e7e157cc4cf (patch) | |
tree | e0546fdc6fb7d3dacad6ef29752866001ede75db /src | |
parent | 982f36dabb04e3f8bafcd41892f2d318cdf24dbc (diff) | |
download | talos-hostboot-2e06c508897e6210ec249e7cbefe3e7e157cc4cf.tar.gz talos-hostboot-2e06c508897e6210ec249e7cbefe3e7e157cc4cf.zip |
PRD: Circumvent issue with channel fails before MP-IPLs
Change-Id: I2a73a2df40650aa25ae3c14968a3d76bb5f34912
CQ: SW275430
Backport: release-fips811
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/13355
Tested-by: Jenkins Server
Reviewed-by: Christopher T. Phan <cphan@us.ibm.com>
Reviewed-by: Prem Shanker Jha <premjha2@in.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Reviewed-by: Zane Shelley <zshelle@us.ibm.com>
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/13420
Diffstat (limited to 'src')
7 files changed, 70 insertions, 44 deletions
diff --git a/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C b/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C index 99dd14325..efc9376fc 100644 --- a/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C +++ b/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C @@ -197,6 +197,11 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, { #define PRDF_FUNC "[ErrDataService::GenerateSrcPfa] " + o_initiateHwudump = false; + o_dumpTrgt = NULL; + o_dumpErrl = NULL; + o_dumpErrlActions = 0; + #ifdef __HOSTBOOT_MODULE using namespace ERRORLOG; using namespace HWAS; @@ -715,19 +720,15 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, //************************************************************** PfaData pfaData; - TargetHandle_t dumpTrgt = NULL; initPfaData( sdc, i_attnType, deferDeconfig, actionFlag, severityParm, - prdGardErrType, pfaData, dumpTrgt ); - - // set returned dump target - o_dumpTrgt = dumpTrgt; + prdGardErrType, pfaData, o_dumpTrgt ); //************************************************************** // Check for Terminating the system for non mnfg conditions. //************************************************************** - ForceTerminate = checkForceTerm( sdc, dumpTrgt, pfaData ); + ForceTerminate = checkForceTerm( sdc, o_dumpTrgt, pfaData ); //************************************************************* // Check for Manufacturing Mode terminate here and then do @@ -808,7 +809,7 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, // deconfiguration, dump/FFDC collection, etc. if ( sdc.IsUnitCS() && !sdc.IsUsingSavedSdc() ) { - handleUnitCS( dumpTrgt, o_initiateHwudump ); + handleUnitCS( o_dumpTrgt, o_initiateHwudump ); } // Commit the Error log @@ -913,9 +914,11 @@ void ErrDataService::initPfaData( ServiceDataCollector & i_sdc, hwTableContent dumpContent; i_sdc.GetDumpRequest( dumpContent, o_dumpTrgt ); - o_pfa.msDumpInfo.content = dumpContent; - o_pfa.msDumpInfo.id = getHuid(o_dumpTrgt); + checkMpIplEligibility( i_attnType, o_dumpTrgt, dumpContent ); + + o_pfa.msDumpInfo.content = dumpContent; + o_pfa.msDumpInfo.id = getHuid(o_dumpTrgt); // Error log actions and severity o_pfa.errlActions = i_errlAct; diff --git a/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.H b/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.H index 919fe8804..913561986 100644 --- a/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.H +++ b/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.H @@ -246,6 +246,18 @@ class ErrDataService void deallocateDimms( SDC_MRU_LIST & i_mruList ); /** + * @brief Must check for MP-IPL eligibility before requesting SW or SH + * dumps. Otherwise, the dump content will need to be changed to + * HWPROC. + * @param i_attnType Primary attention type. + * @param i_dumpTrgt Dump target. + * @param io_dumpContent Dump content. + */ + void checkMpIplEligibility( ATTENTION_TYPE i_attnType, + TARGETING::TargetHandle_t i_dumpTrgt, + hwTableContent & io_dumpContent ); + + /** * @brief Checks for terminate conditions during non mnfg conditions. * @param i_sdc The service data collector. * @param i_dumpTrgt Dump Target. diff --git a/src/usr/diag/prdf/common/plat/pegasus/Mba.rule b/src/usr/diag/prdf/common/plat/pegasus/Mba.rule index 9b5e9b5ca..84ee5e2ce 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Mba.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Mba.rule @@ -5,7 +5,9 @@ # # OpenPOWER HostBoot Project # -# COPYRIGHT International Business Machines Corp. 2012,2014 +# Contributors Listed Below - COPYRIGHT 2012,2014 +# [+] International Business Machines Corp. +# # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -544,32 +546,32 @@ group gMbaSecureFir filter singlebit /** MBASECUREFIR[0] * MBASIRQ_INVALID_MBA_CAL0Q_ACCESS */ - (MbaSecureFir, bit(0)) ? callout2ndLvlMedThr1dumpSh; + (MbaSecureFir, bit(0)) ? secureFirCallout; /** MBASECUREFIR[1] * MBASIRQ_INVALID_MBA_CAL1Q_ACCESS */ - (MbaSecureFir, bit(1)) ? callout2ndLvlMedThr1dumpSh; + (MbaSecureFir, bit(1)) ? secureFirCallout; /** MBASECUREFIR[2] * MBASIRQ_INVALID_MBA_CAL2Q_ACCESS */ - (MbaSecureFir, bit(2)) ? callout2ndLvlMedThr1dumpSh; + (MbaSecureFir, bit(2)) ? secureFirCallout; /** MBASECUREFIR[3] * MBASIRQ_INVALID_MBA_CAL3Q_ACCESS */ - (MbaSecureFir, bit(3)) ? callout2ndLvlMedThr1dumpSh; + (MbaSecureFir, bit(3)) ? secureFirCallout; /** MBASECUREFIR[4] * MBASIRQ_INVALID_DDR_CONFIG_REG_ACCESS */ - (MbaSecureFir, bit(4)) ? callout2ndLvlMedThr1dumpSh; + (MbaSecureFir, bit(4)) ? secureFirCallout; /** MBASECUREFIR[5] * MBASIRQ_INVALID_SIR_MASK_OR_ACTION_REGISTER_ACCESS */ - (MbaSecureFir, bit(5)) ? callout2ndLvlMedThr1dumpSh; + (MbaSecureFir, bit(5)) ? secureFirCallout; }; ################################################################################ @@ -908,3 +910,12 @@ actionclass CalloutMbaAndDimmOnPort1 funccall("CalloutMbaAndDimmOnPort1"); threshold1; }; + +/** Callouts specific to MBASECUREFIR attentions. */ +actionclass secureFirCallout +{ + callout2ndLvlMed; + calloutSelfLow; + threshold1; +}; + diff --git a/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule b/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule index 78533fa21..47778c604 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule @@ -582,7 +582,7 @@ group gMbsFir filter singlebit /** MBSFIR[2] * MBS_FIR_REG_INVALID_ADDRESS_ERROR */ - (MbsFir, bit(2)) ? callout2ndLvlMedThr1dumpSh; + (MbsFir, bit(2)) ? calloutDmiBusTh1; /** MBSFIR[3] * MBS_FIR_REG_EXTERNAL_TIMEOUT @@ -1210,32 +1210,32 @@ group gMbsSecureFir filter singlebit /** MBSSECUREFIR[0] * MBSSIRQ_INVALID_MBSXCR_ACCESS */ - (MbsSecureFir, bit(0)) ? callout2ndLvlMedThr1dumpSh; + (MbsSecureFir, bit(0)) ? secureFirCallout; /** MBSSECUREFIR[1] * MBSSIRQ_INVALID_MBAXCR01_ACCESS */ - (MbsSecureFir, bit(1)) ? callout2ndLvlMedThr1dumpSh; + (MbsSecureFir, bit(1)) ? secureFirCallout; /** MBSSECUREFIR[2] * MBSSIRQ_INVALID_MBAXCR23_ACCESS */ - (MbsSecureFir, bit(2)) ? callout2ndLvlMedThr1dumpSh; + (MbsSecureFir, bit(2)) ? secureFirCallout; /** MBSSECUREFIR[3] * MBSSIRQ_INVALID_MBAXCRMS_ACCRESS */ - (MbsSecureFir, bit(3)) ? callout2ndLvlMedThr1dumpSh; + (MbsSecureFir, bit(3)) ? secureFirCallout; /** MBSSECUREFIR[4] * MBSSIRQ_SPARE (Spare) */ - (MbsSecureFir, bit(4)) ? callout2ndLvlMedThr1dumpSh; + (MbsSecureFir, bit(4)) ? secureFirCallout; /** MBSSECUREFIR[5] * MBSSIRQ_INVALID_SIR_MASK_OR_ACTION_REGISTER_ACCESS */ - (MbsSecureFir, bit(5)) ? callout2ndLvlMedThr1dumpSh; + (MbsSecureFir, bit(5)) ? secureFirCallout; }; ################################################################################ @@ -1475,3 +1475,12 @@ actionclass mbsfirBit30 threshold32pday; try( funccall("mbsfirBit30_dd1"), L4CalloutMedThr1UE); }; + +/** Callouts specific to MBSSECUREFIR attentions. */ +actionclass secureFirCallout +{ + callout2ndLvlMed; + calloutSelfLow; + threshold1; +}; + diff --git a/src/usr/diag/prdf/common/plat/pegasus/Proc_acts_PB.rule b/src/usr/diag/prdf/common/plat/pegasus/Proc_acts_PB.rule index db9d32b7d..2270862c4 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Proc_acts_PB.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Proc_acts_PB.rule @@ -3165,13 +3165,13 @@ actionclass calloutNxThr5pHr actionclass combinedResponseError { - funccall("analyzeMpIPL"); + dumpSH; funccall("combinedResponseCallout"); }; actionclass forceMpIpl { - funccall("analyzeMpIPL"); + dumpSH; callout2ndLvlMedThr1NoGard; }; diff --git a/src/usr/diag/prdf/framework/service/prdfRasServices.C b/src/usr/diag/prdf/framework/service/prdfRasServices.C index 9830aae77..d98ca1152 100644 --- a/src/usr/diag/prdf/framework/service/prdfRasServices.C +++ b/src/usr/diag/prdf/framework/service/prdfRasServices.C @@ -98,7 +98,16 @@ void ErrDataService::createInitialErrl( ATTENTION_TYPE i_attnType ) PRDF_GET_UINT64_FROM_UINT32( 0, 0 ) ); } -//-------------------------------------------------------------------- +//------------------------------------------------------------------------------ + +void ErrDataService::checkMpIplEligibility( ATTENTION_TYPE i_attnType, + TargetHandle_t i_dumpTrgt, + hwTableContent & io_dumpContent ) +{ + // no-op for Hostboot +} + +//------------------------------------------------------------------------------ bool ErrDataService::checkForceTerm( ServiceDataCollector & i_sdc, TargetHandle_t i_dumpTrgt, diff --git a/src/usr/diag/prdf/plat/pegasus/prdfPlatP8Proc.C b/src/usr/diag/prdf/plat/pegasus/prdfPlatP8Proc.C index f7e89331d..08bec0e54 100644 --- a/src/usr/diag/prdf/plat/pegasus/prdfPlatP8Proc.C +++ b/src/usr/diag/prdf/plat/pegasus/prdfPlatP8Proc.C @@ -43,24 +43,6 @@ namespace Proc { /** - * @brief Call HWP and set the right dump type - * @param i_chip P8 chip - * @param i_sc The step code data struct - * @returns Failure or Success - * @note - */ -int32_t analyzeMpIPL( ExtensibleChip * i_chip, - STEP_CODE_DATA_STRUCT & i_sc ) -{ - PRDF_ERR( "analyzeMpIPL functionality not supported during hostboot: " - "PROC = 0x%08x", i_chip->GetId() ); - - return SUCCESS; -} -PRDF_PLUGIN_DEFINE( Proc, analyzeMpIPL ); - - -/** * @brief Handle SLW Malfunction alert * @param i_chip P8 chip * @param i_sc The step code data struct |