diff options
author | Chris Phan <cphan@us.ibm.com> | 2013-03-18 15:16:34 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-07-30 16:44:42 -0500 |
commit | 98fed744f18e2dad22ca9b5e8578c027d8bdf1d0 (patch) | |
tree | 075ea40cbf708f5ab54ee738d62cd40994e26290 /src/usr/diag/prdf | |
parent | e7987fefde72402ab4f6b3f76259535db650d7c5 (diff) | |
download | talos-hostboot-98fed744f18e2dad22ca9b5e8578c027d8bdf1d0.tar.gz talos-hostboot-98fed744f18e2dad22ca9b5e8578c027d8bdf1d0.zip |
PRDF: set DELAYED_DECONFIG when in mdia mode
This may be changed again from
Refactoring of RAS Services RTC: 63892
Change-Id: If22f334be9d0f0246d074b39ac4f1837095110b4
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/3610
Tested-by: Jenkins Server
Reviewed-by: Christopher T. Phan <cphan@us.ibm.com>
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Reviewed-by: BENJAMIN J. WEISENBECK <bweisenb@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Reviewed-by: Zane Shelley <zshelle@us.ibm.com>
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/5591
Diffstat (limited to 'src/usr/diag/prdf')
-rwxr-xr-x | src/usr/diag/prdf/common/framework/service/prdfPfa5Data.h | 186 | ||||
-rwxr-xr-x | src/usr/diag/prdf/common/framework/service/prdf_ras_services.C | 135 |
2 files changed, 126 insertions, 195 deletions
diff --git a/src/usr/diag/prdf/common/framework/service/prdfPfa5Data.h b/src/usr/diag/prdf/common/framework/service/prdfPfa5Data.h index 93df9aa0c..9e79aa1c8 100755 --- a/src/usr/diag/prdf/common/framework/service/prdfPfa5Data.h +++ b/src/usr/diag/prdf/common/framework/service/prdfPfa5Data.h @@ -208,34 +208,34 @@ struct PfaData Reserved_2 :8; // PRD Service Data Collector Flags - uint32_t MP_DUMP_REQ :1, - MP_RESET_REQ :1, - MP_FATAL :1, - REBOOT_MSG :1, - DUMP :1, - UERE :1, - SUE :1, - CRUMB :1, - AT_THRESHOLD :1, - DEGRADED :1, - SERVICE_CALL :1, - TRACKIT :1, - TERMINATE :1, - LOGIT :1, - MEMORY_STEERED :1, - FLOODING :1, - THERMAL_EVENT :1, - UNIT_CHECKSTOP :1, - USING_SAVED_SDC :1, - LAST_CORE_TERMINATE :1, - FORCE_LATENT_CS :1, - DEFER_DECONFIG_MASTER :1, - DEFER_DECONFIG :1, - CM_MODE :1, - TERMINATE_ON_CS :1, - HCDB_SUPPORT :1, - SIGNATURE_SUPPORT :1, - Reserved :5; + uint32_t MP_DUMP_REQ :1, + MP_RESET_REQ :1, + MP_FATAL :1, + REBOOT_MSG :1, + DUMP :1, + UERE :1, + SUE :1, + CRUMB :1, + AT_THRESHOLD :1, + DEGRADED :1, + SERVICE_CALL :1, + TRACKIT :1, + TERMINATE :1, + LOGIT :1, + MEMORY_STEERED :1, + FLOODING :1, + THERMAL_EVENT :1, + UNIT_CHECKSTOP :1, + USING_SAVED_SDC :1, + LAST_CORE_TERMINATE :1, + FORCE_LATENT_CS :1, + Reserved_0 :1, + DEFER_DECONFIG :1, + CM_MODE :1, + TERMINATE_ON_CS :1, + HCDB_SUPPORT :1, + SIGNATURE_SUPPORT :1, + Reserved :5; // 1 TRUE // 0 FALSE // @@ -287,34 +287,34 @@ struct PfaData (i_right.Reserved_2) ) << - ( (i_right.MP_DUMP_REQ << 31) | - (i_right.MP_RESET_REQ << 30) | - (i_right.MP_FATAL << 29) | - (i_right.REBOOT_MSG << 28) | - (i_right.DUMP << 27) | - (i_right.UERE << 26) | - (i_right.SUE << 25) | - (i_right.CRUMB << 24) | - (i_right.AT_THRESHOLD << 23) | - (i_right.DEGRADED << 22) | - (i_right.SERVICE_CALL << 21) | - (i_right.TRACKIT << 20) | - (i_right.TERMINATE << 19) | - (i_right.LOGIT << 18) | - (i_right.MEMORY_STEERED << 17) | - (i_right.FLOODING << 16) | - (i_right.THERMAL_EVENT << 15) | - (i_right.UNIT_CHECKSTOP << 14) | //MP09c - (i_right.USING_SAVED_SDC << 13) | //MP08 - (i_right.LAST_CORE_TERMINATE << 12) | //MP10 - (i_right.FORCE_LATENT_CS << 11) | //MP11 - (i_right.DEFER_DECONFIG_MASTER << 10) | //MP12 - (i_right.DEFER_DECONFIG << 9) | //MP12 - (i_right.CM_MODE << 8) | //MP12 - (i_right.TERMINATE_ON_CS << 7) | //mp78 - (i_right.HCDB_SUPPORT << 6) | //mp15 - (i_right.SIGNATURE_SUPPORT << 5) | - (i_right.Reserved) + ( (i_right.MP_DUMP_REQ << 31) | + (i_right.MP_RESET_REQ << 30) | + (i_right.MP_FATAL << 29) | + (i_right.REBOOT_MSG << 28) | + (i_right.DUMP << 27) | + (i_right.UERE << 26) | + (i_right.SUE << 25) | + (i_right.CRUMB << 24) | + (i_right.AT_THRESHOLD << 23) | + (i_right.DEGRADED << 22) | + (i_right.SERVICE_CALL << 21) | + (i_right.TRACKIT << 20) | + (i_right.TERMINATE << 19) | + (i_right.LOGIT << 18) | + (i_right.MEMORY_STEERED << 17) | + (i_right.FLOODING << 16) | + (i_right.THERMAL_EVENT << 15) | + (i_right.UNIT_CHECKSTOP << 14) | + (i_right.USING_SAVED_SDC << 13) | + (i_right.LAST_CORE_TERMINATE << 12) | + (i_right.FORCE_LATENT_CS << 11) | + (i_right.Reserved_0 << 10) | + (i_right.DEFER_DECONFIG << 9) | + (i_right.CM_MODE << 8) | + (i_right.TERMINATE_ON_CS << 7) | + (i_right.HCDB_SUPPORT << 6) | + (i_right.SIGNATURE_SUPPORT << 5) | + (i_right.Reserved ) ) //<< i_right.ComponentDataLabel[0] << i_right.ComponentDataLabel[1] << @@ -364,43 +364,43 @@ struct PfaData >> l_tmp[4] >> l_tmp[5]; - i_right.PFA_errlActions = (l_tmp[1] >> 16) & 0xFFFF; - i_right.PFA_errlSeverity = (l_tmp[1] >> 8) & 0xFF; - i_right.MP_DUMP_REQ = (l_tmp[2] >> 31) & 0x01; - i_right.MP_RESET_REQ = (l_tmp[2] >> 30) & 0x01; - i_right.MP_FATAL = (l_tmp[2] >> 29) & 0x01; - i_right.REBOOT_MSG = (l_tmp[2] >> 28) & 0x01; - i_right.DUMP = (l_tmp[2] >> 27) & 0x01; - i_right.UERE = (l_tmp[2] >> 26) & 0x01; - i_right.SUE = (l_tmp[2] >> 25) & 0x01; - i_right.CRUMB = (l_tmp[2] >> 24) & 0x01; - i_right.AT_THRESHOLD = (l_tmp[2] >> 23) & 0x01; - i_right.DEGRADED = (l_tmp[2] >> 22) & 0x01; - i_right.SERVICE_CALL = (l_tmp[2] >> 21) & 0x01; - i_right.TRACKIT = (l_tmp[2] >> 20) & 0x01; - i_right.TERMINATE = (l_tmp[2] >> 19) & 0x01; - i_right.LOGIT = (l_tmp[2] >> 18) & 0x01; - i_right.MEMORY_STEERED = (l_tmp[2] >> 17) & 0x01; - i_right.FLOODING = (l_tmp[2] >> 16) & 0x01; - i_right.THERMAL_EVENT = (l_tmp[2] >> 15) & 0x01; //pw02 - i_right.UNIT_CHECKSTOP = (l_tmp[2] >> 14) & 0x01; //pw02 //MP09c - i_right.USING_SAVED_SDC = (l_tmp[2] >> 13) & 0x01; //MP08 - i_right.LAST_CORE_TERMINATE = (l_tmp[2] >> 12) & 0x01; //MP10 - i_right.FORCE_LATENT_CS = (l_tmp[2] >> 11) & 0x01; //MP11 - i_right.DEFER_DECONFIG_MASTER = (l_tmp[2] >> 10) & 0x01; //MP12 - i_right.DEFER_DECONFIG = (l_tmp[2] >> 9) & 0x01; //MP12 - i_right.CM_MODE = (l_tmp[2] >> 8) & 0x01; //MP12 - i_right.TERMINATE_ON_CS = (l_tmp[2] >> 7) & 0x01; //mp78 - i_right.HCDB_SUPPORT = (l_tmp[2] >> 6) & 0x01; //mp15 - i_right.SIGNATURE_SUPPORT = (l_tmp[2] >> 5) & 0x01; - i_right.ErrorCount = (l_tmp[3] >> 16) & 0xFFFF; - i_right.Threshold = (l_tmp[3]) & 0xFFFF; - i_right.PRDServiceActionCounter = (l_tmp[4] >> 24) & 0xFF; - i_right.ErrorType = (l_tmp[4] >> 16) & 0xFF; - i_right.homGardState = (l_tmp[4] >> 8) & 0xFF; - i_right.PRD_AttnTypes = (l_tmp[5] >> 24) & 0xFF; - i_right.PRD_SecondAttnTypes = (l_tmp[5] >> 16) & 0xFF; - i_right.reasonCode = (l_tmp[5]) & 0xFFFF; //MP06 a + i_right.PFA_errlActions = (l_tmp[1] >> 16) & 0xFFFF; + i_right.PFA_errlSeverity = (l_tmp[1] >> 8) & 0xFF; + i_right.MP_DUMP_REQ = (l_tmp[2] >> 31) & 0x01; + i_right.MP_RESET_REQ = (l_tmp[2] >> 30) & 0x01; + i_right.MP_FATAL = (l_tmp[2] >> 29) & 0x01; + i_right.REBOOT_MSG = (l_tmp[2] >> 28) & 0x01; + i_right.DUMP = (l_tmp[2] >> 27) & 0x01; + i_right.UERE = (l_tmp[2] >> 26) & 0x01; + i_right.SUE = (l_tmp[2] >> 25) & 0x01; + i_right.CRUMB = (l_tmp[2] >> 24) & 0x01; + i_right.AT_THRESHOLD = (l_tmp[2] >> 23) & 0x01; + i_right.DEGRADED = (l_tmp[2] >> 22) & 0x01; + i_right.SERVICE_CALL = (l_tmp[2] >> 21) & 0x01; + i_right.TRACKIT = (l_tmp[2] >> 20) & 0x01; + i_right.TERMINATE = (l_tmp[2] >> 19) & 0x01; + i_right.LOGIT = (l_tmp[2] >> 18) & 0x01; + i_right.MEMORY_STEERED = (l_tmp[2] >> 17) & 0x01; + i_right.FLOODING = (l_tmp[2] >> 16) & 0x01; + i_right.THERMAL_EVENT = (l_tmp[2] >> 15) & 0x01; + i_right.UNIT_CHECKSTOP = (l_tmp[2] >> 14) & 0x01; + i_right.USING_SAVED_SDC = (l_tmp[2] >> 13) & 0x01; + i_right.LAST_CORE_TERMINATE = (l_tmp[2] >> 12) & 0x01; + i_right.FORCE_LATENT_CS = (l_tmp[2] >> 11) & 0x01; + i_right.Reserved_0 = (l_tmp[2] >> 10) & 0x01; + i_right.DEFER_DECONFIG = (l_tmp[2] >> 9) & 0x01; + i_right.CM_MODE = (l_tmp[2] >> 8) & 0x01; + i_right.TERMINATE_ON_CS = (l_tmp[2] >> 7) & 0x01; + i_right.HCDB_SUPPORT = (l_tmp[2] >> 6) & 0x01; + i_right.SIGNATURE_SUPPORT = (l_tmp[2] >> 5) & 0x01; + i_right.ErrorCount = (l_tmp[3] >> 16) & 0xFFFF; + i_right.Threshold = (l_tmp[3] ) & 0xFFFF; + i_right.PRDServiceActionCounter = (l_tmp[4] >> 24) & 0xFF; + i_right.ErrorType = (l_tmp[4] >> 16) & 0xFF; + i_right.homGardState = (l_tmp[4] >> 8) & 0xFF; + i_right.PRD_AttnTypes = (l_tmp[5] >> 24) & 0xFF; + i_right.PRD_SecondAttnTypes = (l_tmp[5] >> 16) & 0xFF; + i_right.reasonCode = (l_tmp[5] ) & 0xFFFF; i_left >> i_right.PfaCalloutCount; //mp16 m for (uint32_t i = 0; i < i_right.PfaCalloutCount; i++) diff --git a/src/usr/diag/prdf/common/framework/service/prdf_ras_services.C b/src/usr/diag/prdf/common/framework/service/prdf_ras_services.C index 516cf8e97..4dd58d9d8 100755 --- a/src/usr/diag/prdf/common/framework/service/prdf_ras_services.C +++ b/src/usr/diag/prdf/common/framework/service/prdf_ras_services.C @@ -546,16 +546,12 @@ errlHndl_t ErrDataService::GenerateSrcPfa(ATTENTION_TYPE attn_type, // Callout loop to set up Reason code and SRC word 9 //************************************************************** - //FIXME relevant PlatServices function defintions are not available yet - //bool myCM_FUNCTIONAL = true; - // Must go thru callout list to look for RIOPORT procedure callouts, // since they require the port info to be in SRC Word 9 bool HW = false; bool SW = false; bool SW_High = false; bool SecondLevel = false; - bool l_memBuffInCallouts = false; uint32_t SrcWord7 = 0; uint32_t SrcWord9 = 0; fspmrulist = sdc.GetMruList(); @@ -590,60 +586,10 @@ errlHndl_t ErrDataService::GenerateSrcPfa(ATTENTION_TYPE attn_type, calloutsPlusDimms = calloutsPlusDimms + partCount -1; HW = true; //hardware callout - // If we are in Concurrent Maintenance Mode, we will need to disable - // Deferred Deconfig, if the callouts are not HWSV_CM_FUNCTIONAL. - - /* FIXME: RTC 50063 PlatServices::inCMMode() not available yet - if (PlatServices::inCMMode()) - { - if (partCount < 1) - { - // Something wrong with memmru - myCM_FUNCTIONAL = false; - PRDF_TRAC( "PRDTRACE: RasServices MemMru has no callouts" ); - } - else - { - for ( TargetHandleList::iterator it = partList.begin(); - it != partList.end(); it++ ) - { - if ( !PlatServices::isCM_FUNCTIONAL(*it) ) - { - myCM_FUNCTIONAL = false; - PRDF_TRAC( PRDF_FUNC"isCM_FUNCTIONAL is false for ID: 0x%08x", - PlatServices::getHuid(*it) ); - break; - } - } - } - } - */ } else // PRDcalloutData::TYPE_TARGET { HW = true; // Hardware callout - - TargetHandle_t target = thiscallout.getTarget(); - if (( TYPE_MEMBUF == PlatServices::getTargetType(target) ) || - ( TYPE_MBA == PlatServices::getTargetType(target) )) - l_memBuffInCallouts = true; - - // If we are in Concurrent Maintenance Mode, - // we will need to disable the - // Deferred Deconfig, if the callouts are not HWSV_CM_FUNCTIONAL. - // FIXME PlatServices::inCMMode() not avaialble yet - #if 0 - if (PlatServices::inCMMode()) - { - // FIXME PlatServices::isCM_FUNCTIONAL not avaialble yet - if ( !PlatServices::isCM_FUNCTIONAL(l_thisChipHandle) ) - { - myCM_FUNCTIONAL = false; - PRDF_TRAC( "PRDTRACE: RasServices CM not functional for ID: %x", - PlatServices::getHuid(l_thisChipHandle) ); - } - } - #endif } } @@ -684,26 +630,23 @@ errlHndl_t ErrDataService::GenerateSrcPfa(ATTENTION_TYPE attn_type, SrcWord7 = i_sdc.GetAttentionType() << 8; SrcWord7 |= i_sdc.GetCauseAttentionType(); - //************************************************************** + //-------------------------------------------------------------------------- // Check for IPL Diag Mode and set up for Deferred Deconfig - //************************************************************** + //-------------------------------------------------------------------------- - //TODO TargetHandle conversion -defferredDeconfigMasterNot avaialable yet -#if 0 - hutlIplStepManager* stepManager = PlatServices::getDeferredDeconfigMaster(); - if ( NULL != stepManager ) - { - iplDiagMode = true; - if ( (MACHINE_CHECK != attn_type || !terminateOnCheckstop) && - myCM_FUNCTIONAL && - (HWSV_NO_GARD != gardState || - GardResolution::DeconfigNoGard == prdGardErrType ) ) //Allow Deferred Deconfig for IPL Diag when No Gard action is needed - { - deferDeconfig = true; - deconfigState = HWSV_DECONFIG; - deconfigSched = HWSV::HWSV_DECONFIG_DEFER; - } +#ifdef __HOSTBOOT_MODULE + + iplDiagMode = PlatServices::isInMdiaMode(); + // Deferred Deconfig should be used throughout all of Hostboot (both + // checkForIplAttns() and MDIA). + if ( (HWSV::HWSV_NO_GARD != gardState || + GardResolution::DeconfigNoGard == prdGardErrType ) ) + { + deferDeconfig = true; + deconfigState = HWSV::HWSV_DECONFIG; + // NOTE: deconfigSched is not actually used in Hostboot. Will remove in + // the refactoring effort. } #endif @@ -761,28 +704,17 @@ errlHndl_t ErrDataService::GenerateSrcPfa(ATTENTION_TYPE attn_type, thiscallout = (*i).callout; if ( PRDcalloutData::TYPE_TARGET == thiscallout.getType() ) { - TargetHandle_t target = thiscallout.getTarget(); - // Don't deconfig a Memory Controller for Bus Errors (Mc and SuperNova - // both in Callouts) for Mem Diag. Note still deconfg the SuperNova. HWSV::hwsvDeconfigEnum thisDeconfigState = deconfigState; - TYPE l_targetType = PlatServices::getTargetType(target); - if ( HWSV::HWSV_DECONFIG == deconfigState && - l_memBuffInCallouts && - (l_targetType == TYPE_MCS)) - //In P8 only 1:1 connection between Mem Buf and Mem ctrl - { - thisDeconfigState = HWSV::HWSV_NO_DECONFIG; - } #ifdef __HOSTBOOT_MODULE - // FIXME: this will change once mdia mode support is in - if(true == iplDiagMode) + // Special case for Hostboot. + if ( deferDeconfig ) { - thisDeconfigState = HWSV::HWSV_DEFER_DECONFIG; + thisDeconfigState = HWAS::DELAYED_DECONFIG; } #endif - PRDF_HW_ADD_CALLOUT(target, + PRDF_HW_ADD_CALLOUT(thiscallout.getTarget(), thispriority, thisDeconfigState, gardState, @@ -935,23 +867,22 @@ errlHndl_t ErrDataService::GenerateSrcPfa(ATTENTION_TYPE attn_type, pfaData.MEMORY_STEERED = (sdc.IsMemorySteered()==true)? 1:0; pfaData.FLOODING = (sdc.IsFlooding()==true)? 1:0; - pfaData.ErrorCount = sdc.GetHits(); + pfaData.ErrorCount = sdc.GetHits(); pfaData.PRDServiceActionCounter = serviceActionCounter; - pfaData.Threshold = sdc.GetThreshold(); - pfaData.ErrorType = prdGardErrType; - pfaData.homGardState = gardState; - pfaData.PRD_AttnTypes = attn_type; - pfaData.PRD_SecondAttnTypes = i_sdc.GetCauseAttentionType(); - pfaData.THERMAL_EVENT = (sdc.IsThermalEvent()==true)? 1:0; - pfaData.UNIT_CHECKSTOP = (sdc.IsUnitCS()==true)? 1:0; - pfaData.USING_SAVED_SDC = (sdc.IsUsingSavedSdc()==true)? 1:0; - pfaData.FORCE_LATENT_CS = (i_sdc.IsForceLatentCS()==true)? 1:0; - pfaData.DEFER_DECONFIG_MASTER = (iplDiagMode==true)? 1:0; - pfaData.DEFER_DECONFIG = (deferDeconfig==true)? 1:0; - pfaData.CM_MODE = 0; //FIXME Need to change this initialization - pfaData.TERMINATE_ON_CS = (terminateOnCheckstop==true)? 1:0; - pfaData.reasonCode = sdc.GetReasonCode(); - pfaData.PfaCalloutCount = calloutcount; + pfaData.Threshold = sdc.GetThreshold(); + pfaData.ErrorType = prdGardErrType; + pfaData.homGardState = gardState; + pfaData.PRD_AttnTypes = attn_type; + pfaData.PRD_SecondAttnTypes = i_sdc.GetCauseAttentionType(); + pfaData.THERMAL_EVENT = (sdc.IsThermalEvent()==true)? 1:0; + pfaData.UNIT_CHECKSTOP = (sdc.IsUnitCS()==true)? 1:0; + pfaData.USING_SAVED_SDC = (sdc.IsUsingSavedSdc()==true)? 1:0; + pfaData.FORCE_LATENT_CS = (i_sdc.IsForceLatentCS()==true)? 1:0; + pfaData.DEFER_DECONFIG = (deferDeconfig==true)? 1:0; + pfaData.CM_MODE = 0; //FIXME RTC 50063 + pfaData.TERMINATE_ON_CS = (terminateOnCheckstop==true)? 1:0; + pfaData.reasonCode = sdc.GetReasonCode(); + pfaData.PfaCalloutCount = calloutcount; // First clear out the PFA Callout list from previous SRC for (uint32_t j = 0; j < MruListLIMIT; ++j) |