Skip to content

Commit

Permalink
Add read only subtest at the end of exp_mss_memdiags
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
markypizz authored and dcrowell77 committed Jan 29, 2020
1 parent 5962066 commit 779761d
Show file tree
Hide file tree
Showing 4 changed files with 150 additions and 3 deletions.
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2015,2019 */
/* Contributors Listed Below - COPYRIGHT 2015,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -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;
Expand Down
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2019 */
/* Contributors Listed Below - COPYRIGHT 2019,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -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
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2019 */
/* Contributors Listed Below - COPYRIGHT 2019,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -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
Expand Up @@ -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>

0 comments on commit 779761d

Please sign in to comment.