summaryrefslogtreecommitdiffstats
path: root/src/import
diff options
context:
space:
mode:
authorMark Pizzutillo <Mark.Pizzutillo@ibm.com>2020-01-10 15:57:10 -0500
committerDaniel M Crowell <dcrowell@us.ibm.com>2020-01-29 15:19:28 -0600
commit779761d1c5e0d143e1b2d7bc1da248345d2dffb8 (patch)
tree99da53377c7f832cea9d32bfe5a1e63732b7b439 /src/import
parent5962066104e3a4aa84440f73af50efc67f674fc2 (diff)
downloadtalos-hostboot-779761d1c5e0d143e1b2d7bc1da248345d2dffb8.tar.gz
talos-hostboot-779761d1c5e0d143e1b2d7bc1da248345d2dffb8.zip
Add read only subtest at the end of exp_mss_memdiags
Change-Id: I280e814e7013b8d8844655c20f19b410ff7c2516 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/89612 Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Louis Stermole <stermole@us.ibm.com> Dev-Ready: Mark Pizzutillo <mark.pizzutillo@ibm.com> Reviewed-by: Jennifer A Stofer <stofer@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/90002 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import')
-rw-r--r--src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_mss_memdiag.C12
-rw-r--r--src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/mcbist/exp_memdiags.C72
-rw-r--r--src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/mcbist/exp_memdiags.H33
-rw-r--r--src/import/chips/ocmb/explorer/procedures/xml/attribute_info/exp_attributes.xml36
4 files changed, 150 insertions, 3 deletions
diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_mss_memdiag.C b/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_mss_memdiag.C
index 14b9af119..f2452efdd 100644
--- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_mss_memdiag.C
+++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_mss_memdiag.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015,2019 */
+/* Contributors Listed Below - COPYRIGHT 2015,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -51,9 +51,19 @@ extern "C"
///
fapi2::ReturnCode exp_mss_memdiag( const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target )
{
+ uint8_t l_post_memdiags_subtest = 0;
+
FAPI_INF("Start exp_mss_memdiag on: %s", mss::c_str( i_target ));
FAPI_TRY(mss::memdiags::mss_initialize_memory(i_target));
+ FAPI_TRY(mss::attr::get_post_memdiags_read_subtest(i_target, l_post_memdiags_subtest));
+
+ // Perform subtest if attribute is set to
+ if (l_post_memdiags_subtest == fapi2::ENUM_ATTR_MSS_POST_MEMDIAGS_READ_SUBTEST_ENABLE)
+ {
+ FAPI_TRY(mss::exp::memdiags::perform_read_only_subtest(i_target));
+ }
+
fapi_try_exit:
FAPI_INF("End exp_mss_memdiag on %s", mss::c_str( i_target ));
return fapi2::current_err;
diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/mcbist/exp_memdiags.C b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/mcbist/exp_memdiags.C
index ba40143c5..c4e2f807e 100644
--- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/mcbist/exp_memdiags.C
+++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/mcbist/exp_memdiags.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2019 */
+/* Contributors Listed Below - COPYRIGHT 2019,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -66,4 +66,74 @@ fapi2::ReturnCode operation<mss::mc_type::EXPLORER>::multi_port_init_internal()
} // namespace memdiags
+namespace exp
+{
+
+namespace memdiags
+{
+
+///
+/// @brief Process the result from the mcbist sf_read subtest after memdiags
+///
+/// @param[in] i_target OCMB target for traces
+/// @param[in] l_fail_behavior_attr
+/// @param[in,out] io_rc ReturnCode from sf_read
+/// @return fapi2::ReturnCode
+///
+fapi2::ReturnCode process_subtest_result(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target,
+ const uint8_t l_fail_behavior_attr,
+ fapi2::ReturnCode& io_rc)
+{
+ // Check RC
+ if ((l_fail_behavior_attr == fapi2::ENUM_ATTR_MSS_POST_MEMDIAGS_READ_SUBTEST_FAIL_BEHAVIOR_TRACE)
+ && (io_rc != fapi2::FAPI2_RC_SUCCESS))
+ {
+ // Trace + Bad RC: Log as recovered, return success, set io_rc back to success
+ FAPI_ERR("%s Error code 0x%08lx from post-memdiags mcbist read subtest", mss::c_str(i_target), uint32_t(io_rc));
+ fapi2::logError(io_rc, fapi2::FAPI2_ERRL_SEV_RECOVERED);
+
+ io_rc = fapi2::FAPI2_RC_SUCCESS;
+
+ return fapi2::FAPI2_RC_SUCCESS;
+ }
+
+ // Else, we will just try the RC as-is
+ FAPI_TRY(io_rc, "%s Error from post-memdiags mcbist read subtest", mss::c_str(i_target));
+
+fapi_try_exit:
+ return fapi2::current_err;
+}
+
+///
+/// @brief Perform a read only mcbist subtest at the end of memdiags
+///
+/// @param[in] i_target OCMB Chip
+/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS iff success, else error
+///
+fapi2::ReturnCode perform_read_only_subtest(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target)
+{
+ fapi2::ReturnCode l_rc = fapi2::FAPI2_RC_SUCCESS;
+ uint8_t l_fail_behavior = 0;
+
+ auto l_stop_conditions = mss::mcbist::stop_conditions<mss::mc_type::EXPLORER>();
+
+ // Pause on unrecoverable error
+ l_stop_conditions.set_pause_on_ue(mss::ON);
+
+ // sf_read will run, poll for completion and return result ReturnCode
+ l_rc = mss::memdiags::sf_read<mss::mc_type::EXPLORER>(i_target, l_stop_conditions);
+
+ // Get fail behavior attr and process the result
+ FAPI_TRY(mss::attr::get_post_memdiags_read_subtest(i_target, l_fail_behavior));
+ FAPI_TRY(process_subtest_result(i_target, l_fail_behavior, l_rc));
+
+ return fapi2::FAPI2_RC_SUCCESS;
+
+fapi_try_exit:
+ return fapi2::current_err;
+}
+
+} // memdiags
+} // exp
+
} // namespace mss
diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/mcbist/exp_memdiags.H b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/mcbist/exp_memdiags.H
index 8feb8123c..a53b7c312 100644
--- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/mcbist/exp_memdiags.H
+++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/mcbist/exp_memdiags.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2019 */
+/* Contributors Listed Below - COPYRIGHT 2019,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -45,4 +45,35 @@
// This file is still necessary to put traits and generic code together
+namespace mss
+{
+namespace exp
+{
+namespace memdiags
+{
+
+///
+/// @brief Process the result from the mcbist sf_read subtest after memdiags
+///
+/// @param[in] i_target OCMB target for traces
+/// @param[in] l_fail_behavior_attr
+/// @param[in, out] i_rc ReturnCode from sf_read
+/// @return fapi2::ReturnCode
+///
+fapi2::ReturnCode process_subtest_result(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target,
+ const uint8_t l_fail_behavior_attr,
+ fapi2::ReturnCode& io_rc);
+
+///
+/// @brief Perform a read only mcbist subtest at the end of memdiags
+///
+/// @param[in] i_target OCMB Chip
+/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS iff success, else error
+///
+fapi2::ReturnCode perform_read_only_subtest(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target);
+
+} // memdiags
+} // exp
+} // mss
+
#endif
diff --git a/src/import/chips/ocmb/explorer/procedures/xml/attribute_info/exp_attributes.xml b/src/import/chips/ocmb/explorer/procedures/xml/attribute_info/exp_attributes.xml
index a65155d69..61ff45e98 100644
--- a/src/import/chips/ocmb/explorer/procedures/xml/attribute_info/exp_attributes.xml
+++ b/src/import/chips/ocmb/explorer/procedures/xml/attribute_info/exp_attributes.xml
@@ -487,4 +487,40 @@
<mssAccessorName>check_for_ready_timeout</mssAccessorName>
</attribute>
+ <attribute>
+ <id>ATTR_MSS_POST_MEMDIAGS_READ_SUBTEST</id>
+ <targetType>TARGET_TYPE_OCMB_CHIP</targetType>
+ <description>
+ Whether to run post-memdiags read-only subtest
+ </description>
+ <valueType>uint8</valueType>
+ <enum>
+ DISABLE = 0,
+ ENABLE = 1
+ </enum>
+ <default>ENABLE</default>
+ <platInit/>
+ <overrideOnly/>
+ <mssAccessorName>post_memdiags_read_subtest</mssAccessorName>
+ </attribute>
+
+ <attribute>
+ <id>ATTR_MSS_POST_MEMDIAGS_READ_SUBTEST_FAIL_BEHAVIOR</id>
+ <targetType>TARGET_TYPE_OCMB_CHIP</targetType>
+ <description>
+ Behvaior to perform if read subtest post-memdiags does not get a good result.
+ EXIT = fapi_try_exit out with error code
+ TRACE = FAPI_ERR that test failed, return success code
+ </description>
+ <valueType>uint8</valueType>
+ <enum>
+ EXIT = 0,
+ TRACE = 1
+ </enum>
+ <default>EXIT</default>
+ <platInit/>
+ <overrideOnly/>
+ <mssAccessorName>post_memdiags_read_subtest_fail_behavior</mssAccessorName>
+ </attribute>
+
</attributes>
OpenPOWER on IntegriCloud