summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/ccs/ccs.C18
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/shared/mss_const.H1
2 files changed, 19 insertions, 0 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/ccs/ccs.C b/src/import/chips/p9/procedures/hwp/memory/lib/ccs/ccs.C
index 89e4be5ee..316d7dc9b 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/ccs/ccs.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/ccs/ccs.C
@@ -38,6 +38,11 @@
#include <mss.H>
#include <lib/ccs/ccs.H>
#include <lib/fir/check.H>
+#include <lib/phy/mss_lrdimm_training.H>
+
+#ifdef LRDIMM_CAPABLE
+ #include <lib/workarounds/quad_encode_workarounds.H>
+#endif
using fapi2::TARGET_TYPE_MCBIST;
using fapi2::TARGET_TYPE_MCA;
@@ -335,6 +340,19 @@ fapi2::ReturnCode execute( const fapi2::Target<TARGET_TYPE_MCBIST>& i_target,
}
}
+#if LRDIMM_CAPABLE
+
+ if(mss::workarounds::contains_command_mrs(i_program.iv_instructions))
+ {
+ // Get ranks in pair bombs out if we can't get any ranks in this pair, so we should be safe here
+ for (const auto& p : i_ports)
+ {
+ FAPI_TRY(mss::workarounds::fix_shadow_register_corruption(p));
+ }
+ }
+
+#endif
+
fapi_try_exit:
i_program.iv_instructions.clear();
return fapi2::current_err;
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/shared/mss_const.H b/src/import/chips/p9/procedures/hwp/memory/lib/shared/mss_const.H
index db61b8afb..bf84c1662 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/shared/mss_const.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/shared/mss_const.H
@@ -207,6 +207,7 @@ enum ffdc_function_codes
// LR helper functions
FINE_RECORDER_ADD_RESULTS = 119,
FINE_RECORDER_FIND_EYE = 120,
+ FIX_SHADOW_REGISTER = 121,
// LR training function
DWL_CALL_OUT = 130,
OpenPOWER on IntegriCloud