diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2018-09-27 13:28:49 -0500 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2018-10-01 14:59:36 -0500 |
commit | 829943397a902f61a29ff3076e34687ebaf71af0 (patch) | |
tree | f3addf89aef975cfd20a499a556131bd091e9f45 | |
parent | aac8421a2554ee5a82b56c69c4d92d77d546a7c0 (diff) | |
download | talos-hostboot-829943397a902f61a29ff3076e34687ebaf71af0.tar.gz talos-hostboot-829943397a902f61a29ff3076e34687ebaf71af0.zip |
PRD: Capture extra FFDC for current memory mirroring config
Change-Id: I9f6b0496cb299793c5970cf26d2c628b678672c3
CQ: SW446377
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/66743
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/66809
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
4 files changed, 36 insertions, 1 deletions
diff --git a/src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C b/src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C index f29cb7850..72cf24527 100644 --- a/src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C +++ b/src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C @@ -28,6 +28,7 @@ #include <prdfExtensibleChip.H> #include <prdfPluginDef.H> #include <prdfPluginMap.H> +#include <UtilHash.H> // for Util::hashString // Platform includes #include <prdfCenMbaDataBundle.H> @@ -73,6 +74,12 @@ PRDF_PLUGIN_DEFINE( cen_centaur, Initialize ); int32_t PreAnalysis( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & io_sc, bool & o_analyzed ) { + // The hardware team requested that we capture the MCFIR in the FFDC. + ExtensibleChip * dmiChip = getConnectedParent( i_chip, TYPE_DMI ); + ExtensibleChip * miChip = getConnectedParent( dmiChip, TYPE_MI ); + miChip->CaptureErrorData( io_sc.service_data->GetCaptureData(), + Util::hashString("MirrorConfig") ); + // Check for a channel failure before analyzing this chip. o_analyzed = MemUtils::analyzeChnlFail<TYPE_MEMBUF>( i_chip, io_sc ); diff --git a/src/usr/diag/prdf/common/plat/p9/p9_mcs.rule b/src/usr/diag/prdf/common/plat/p9/p9_mcs.rule index 9a972b7c4..a24defe12 100644 --- a/src/usr/diag/prdf/common/plat/p9/p9_mcs.rule +++ b/src/usr/diag/prdf/common/plat/p9/p9_mcs.rule @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2016,2017 +# Contributors Listed Below - COPYRIGHT 2016,2018 # [+] International Business Machines Corp. # # @@ -54,6 +54,7 @@ chip p9_mcs reset (&, 0x05010801); mask (|, 0x05010805); capture group default; + capture group MirrorConfig; }; register MCFIR_MASK @@ -61,6 +62,7 @@ chip p9_mcs name "P9 MCS target MCFIR MASK"; scomaddr 0x05010803; capture group default; + capture group MirrorConfig; }; register MCFIR_ACT0 @@ -69,6 +71,7 @@ chip p9_mcs scomaddr 0x05010806; capture group default; capture req nonzero("MCFIR"); + capture group MirrorConfig; }; register MCFIR_ACT1 @@ -77,6 +80,7 @@ chip p9_mcs scomaddr 0x05010807; capture group default; capture req nonzero("MCFIR"); + capture group MirrorConfig; }; # Include registers not defined by the xml diff --git a/src/usr/diag/prdf/common/plat/p9/p9_mcs_regs.rule b/src/usr/diag/prdf/common/plat/p9/p9_mcs_regs.rule index 132407cad..61b7ad105 100644 --- a/src/usr/diag/prdf/common/plat/p9/p9_mcs_regs.rule +++ b/src/usr/diag/prdf/common/plat/p9/p9_mcs_regs.rule @@ -57,6 +57,7 @@ name "P9 MCS target MEMCFG REG"; scomaddr 0x0501080a; capture group default; + capture group MirrorConfig; }; register MCFGPA @@ -64,6 +65,7 @@ name "P9 MCS target MCFGPA"; scomaddr 0x0501080b; capture group default; + capture group MirrorConfig; }; register MCFGPM @@ -71,6 +73,7 @@ name "P9 MCS target MCFGPM"; scomaddr 0x0501080c; capture group default; + capture group MirrorConfig; }; register MCFGPMA @@ -78,5 +81,6 @@ name "P9 MCS target MCFGPMA"; scomaddr 0x0501080d; capture group default; + capture group MirrorConfig; }; diff --git a/src/usr/diag/prdf/common/plat/p9/prdfP9Dmi_common.C b/src/usr/diag/prdf/common/plat/p9/prdfP9Dmi_common.C index 801b25f89..03a0a913e 100644 --- a/src/usr/diag/prdf/common/plat/p9/prdfP9Dmi_common.C +++ b/src/usr/diag/prdf/common/plat/p9/prdfP9Dmi_common.C @@ -28,6 +28,7 @@ #include <prdfExtensibleChip.H> #include <prdfPluginDef.H> #include <prdfPluginMap.H> +#include <UtilHash.H> // for Util::hashString // Platform includes #include <prdfMemUtils.H> @@ -50,6 +51,25 @@ namespace p9_dmi //############################################################################## /** + * @brief Analysis code that is called before the main analyze() function. + * @param i_chip A DMI chip. + * @param io_sc The step code data struct. + * @param o_analyzed True if analysis is done on this chip, false otherwise. + * @return Non-SUCCESS if an internal function fails, SUCCESS otherwise. + */ +int32_t PreAnalysis( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & io_sc, + bool & o_analyzed ) +{ + // The hardware team requested that we capture the MCFIR in the FFDC. + ExtensibleChip * miChip = getConnectedParent( i_chip, TYPE_MI ); + miChip->CaptureErrorData( io_sc.service_data->GetCaptureData(), + Util::hashString("MirrorConfig") ); + + return SUCCESS; +} +PRDF_PLUGIN_DEFINE( p9_dmi, PreAnalysis ); + +/** * @brief Plugin function called after analysis is complete but before PRD * exits. * @param i_chip A DMI chip. |