summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Weisenbeck <bweisenb@us.ibm.com>2013-04-01 14:12:19 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-04-03 11:37:36 -0500
commit37a2e17a5c84b9828a1edcafdbbf528b435c71d5 (patch)
tree10ed8088b935c816b0d430e75c73541a33ace3d8
parentcb09cefc89425d13fbc587c984c54ca1fc065a26 (diff)
downloadtalos-hostboot-37a2e17a5c84b9828a1edcafdbbf528b435c71d5.tar.gz
talos-hostboot-37a2e17a5c84b9828a1edcafdbbf528b435c71d5.zip
PRD: GLOBALUNITXSTPFIR fix for hostboot
Change-Id: I946292648f0d02531b427211d25d045b4114bc24 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/3817 Tested-by: Jenkins Server Reviewed-by: Zane Shelley <zshelle@us.ibm.com> Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/3842
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Proc.rule2
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/prdfP8Proc.C29
2 files changed, 23 insertions, 8 deletions
diff --git a/src/usr/diag/prdf/common/plat/pegasus/Proc.rule b/src/usr/diag/prdf/common/plat/pegasus/Proc.rule
index ef0f27553..e49b737fc 100755
--- a/src/usr/diag/prdf/common/plat/pegasus/Proc.rule
+++ b/src/usr/diag/prdf/common/plat/pegasus/Proc.rule
@@ -90,7 +90,7 @@ chip Proc
name "Virtual Global Unit Checkstop FIR";
scomaddr 0x51040001;
capture group default;
- capture req funccall("CoreConfigured");
+ capture req funccall("CoreConfiguredAndNotHostboot");
};
# Import all of the chiplet registers
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Proc.C b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Proc.C
index 5b0bdbd6b..6028add82 100755
--- a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Proc.C
+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Proc.C
@@ -197,14 +197,20 @@ int32_t CheckForRecovered(ExtensibleChip * i_chip,
int32_t CheckForRecoveredSev(ExtensibleChip * i_chip,
uint32_t & o_sev)
{
+ int32_t o_rc = SUCCESS;
+
SCAN_COMM_REGISTER_CLASS * l_rer = NULL;
SCAN_COMM_REGISTER_CLASS * l_TPrer = NULL;
- SCAN_COMM_REGISTER_CLASS * l_unitxstp = NULL;
- int32_t o_rc = SUCCESS;
+ // FIXME 68302 - This needs a better check for FSP environment
+ // we could get a xstp during hostboot at a stage when GLOBALUNITXSTPFIR
+ // can't be accessed
+#ifndef __HOSTBOOT_MODULE
+ SCAN_COMM_REGISTER_CLASS * l_unitxstp = NULL;
l_unitxstp = i_chip->getRegister("GLOBALUNITXSTPFIR");
o_rc |= l_unitxstp->Read();
+#endif
l_rer = i_chip->getRegister("GLOBAL_RE_FIR");
o_rc |= l_rer->Read();
l_TPrer = i_chip->getRegister("TP_CHIPLET_RE_FIR");
@@ -232,12 +238,17 @@ int32_t CheckForRecoveredSev(ExtensibleChip * i_chip,
// error from TP (other than MCS chiplets)
o_sev = 3;
}
- else if((l_rer->GetBitFieldJustified(11,14) &
- l_unitxstp->GetBitFieldJustified(11,14)) == 0)
+ // FIXME 68302 - This needs a better check for FSP environment
+ // we could get a xstp during hostboot at a stage when GLOBALUNITXSTPFIR
+ // can't be accessed
+#ifndef __HOSTBOOT_MODULE
+ else if((l_rer->GetBitFieldJustified(16,16) &
+ l_unitxstp->GetBitFieldJustified(16,16)) == 0 )
{
// core recoverable
o_sev = 2;
}
+#endif
else
{
// core checkstop
@@ -343,10 +354,14 @@ int32_t GetCheckstopInfo( ExtensibleChip * i_chip,
} PRDF_PLUGIN_DEFINE( Proc, GetCheckstopInfo );
-int32_t CoreConfigured(ExtensibleChip * i_chip,
- bool & o_isCoreConfigured)
+int32_t CoreConfiguredAndNotHostboot(ExtensibleChip * i_chip,
+ bool & o_isCoreConfigured)
{
o_isCoreConfigured = false;
+#ifdef __HOSTBOOT_MODULE
+ // if in hostboot just return false to prevent the default reg capture
+ return SUCCESS;
+#endif
TargetHandleList l_coreList =
PlatServices::getConnected(i_chip->GetChipHandle(), TYPE_EX);
@@ -355,7 +370,7 @@ int32_t CoreConfigured(ExtensibleChip * i_chip,
o_isCoreConfigured = true;
return SUCCESS;
-} PRDF_PLUGIN_DEFINE(Proc, CoreConfigured);
+} PRDF_PLUGIN_DEFINE(Proc, CoreConfiguredAndNotHostboot);
/**
* @brief Call HWP and set the right dump type
OpenPOWER on IntegriCloud