diff options
author | Benjamin Weisenbeck <bweisenb@us.ibm.com> | 2013-04-01 14:12:19 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-04-03 11:37:36 -0500 |
commit | 37a2e17a5c84b9828a1edcafdbbf528b435c71d5 (patch) | |
tree | 10ed8088b935c816b0d430e75c73541a33ace3d8 | |
parent | cb09cefc89425d13fbc587c984c54ca1fc065a26 (diff) | |
download | talos-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-x | src/usr/diag/prdf/common/plat/pegasus/Proc.rule | 2 | ||||
-rwxr-xr-x | src/usr/diag/prdf/common/plat/pegasus/prdfP8Proc.C | 29 |
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 |