summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf
diff options
context:
space:
mode:
authorChris Phan <cphan@us.ibm.com>2013-03-18 15:16:34 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-07-30 16:44:42 -0500
commit98fed744f18e2dad22ca9b5e8578c027d8bdf1d0 (patch)
tree075ea40cbf708f5ab54ee738d62cd40994e26290 /src/usr/diag/prdf
parente7987fefde72402ab4f6b3f76259535db650d7c5 (diff)
downloadtalos-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-xsrc/usr/diag/prdf/common/framework/service/prdfPfa5Data.h186
-rwxr-xr-xsrc/usr/diag/prdf/common/framework/service/prdf_ras_services.C135
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)
OpenPOWER on IntegriCloud