summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2014-09-12 17:07:46 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-09-17 10:54:37 -0500
commit2e06c508897e6210ec249e7cbefe3e7e157cc4cf (patch)
treee0546fdc6fb7d3dacad6ef29752866001ede75db /src
parent982f36dabb04e3f8bafcd41892f2d318cdf24dbc (diff)
downloadtalos-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')
-rw-r--r--src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C21
-rw-r--r--src/usr/diag/prdf/common/framework/service/prdfRasServices_common.H12
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Mba.rule25
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule23
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Proc_acts_PB.rule4
-rw-r--r--src/usr/diag/prdf/framework/service/prdfRasServices.C11
-rw-r--r--src/usr/diag/prdf/plat/pegasus/prdfPlatP8Proc.C18
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
OpenPOWER on IntegriCloud