diff options
Diffstat (limited to 'src')
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. |