diff options
Diffstat (limited to 'src/import/chips/p9/procedures/hwp')
3 files changed, 15 insertions, 9 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/memdiags.C b/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/memdiags.C index 532eb330a..508f98901 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/memdiags.C +++ b/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/memdiags.C @@ -640,7 +640,7 @@ fapi_try_exit: /// @param[in] i_target the target /// @param[in] i_end whether to end, and where (default = don't stop at end of rank) /// @param[in] i_stop stop conditions (default - 0 meaning 'don't change conditions') -/// @param[in] i_speed the speed to scrub (default - NO_CHANGE meaning leave speed untouched) +/// @param[in] i_speed the speed to scrub (default - SAME_SPEED meaning leave speed untouched) /// @return FAPI2_RC_SUCCESS iff ok /// @note overloaded as there's no 'invalid' state for thresholds. /// @@ -723,14 +723,20 @@ fapi2::ReturnCode continue_cmd( const fapi2::Target<TARGET_TYPE_MCBIST>& i_targe } // Thresholds - FAPI_TRY( mss::mcbist::load_thresholds(i_target, i_stop) ); + // According to API definition, 0 means don't change conditions + if( i_stop != stop_conditions::DONT_CHANGE) + { + FAPI_TRY( mss::mcbist::load_thresholds(i_target, i_stop) ); + } // Setup speed FAPI_TRY( l_program.change_speed(i_target, i_speed) ); - // Clear the program complete FIR - FAPI_TRY( mss::putScom(i_target, MCBIST_MCBISTFIRQ_AND, - fapi2::buffer<uint64_t>().setBit<MCBIST_MCBISTFIRQ_MCBIST_PROGRAM_COMPLETE>().invert()) ); + // Load new speed unless we aren't changing it + if( i_speed != speed::SAME_SPEED ) + { + FAPI_TRY( load_mcbparm(i_target, l_program) ); + } // Tickle the resume from pause FAPI_TRY( mss::mcbist::resume(i_target) ); diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/memdiags.H b/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/memdiags.H index f74c68d70..c6d609f02 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/memdiags.H +++ b/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/memdiags.H @@ -387,16 +387,15 @@ fapi2::ReturnCode targeted_scrub( const fapi2::Target<T>& i_target, /// @param[in] i_target the target /// @param[in] i_end whether to end, and where (default - don't stop at end of rank) /// @param[in] i_stop stop conditions (default - 0 meaning 'don't change conditions') -/// @param[in] i_speed the speed to scrub (default - NO_CHANGE meaning leave speed untouched) +/// @param[in] i_speed the speed to scrub (default - SAME_SPEED meaning leave speed untouched) /// @return FAPI2_RC_SUCCESS iff ok /// template< fapi2::TargetType T > fapi2::ReturnCode continue_cmd( const fapi2::Target<T>& i_target, - const end_boundary i_end = end_boundary::NONE, - const stop_conditions& i_stop = stop_conditions(), + const end_boundary i_end = end_boundary::DONT_CHANGE, + const stop_conditions& i_stop = stop_conditions(stop_conditions::DONT_CHANGE), const speed i_speed = speed::SAME_SPEED ); } // namespace #endif - diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/settings.H b/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/settings.H index 5db0c2e28..f2f5496c7 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/settings.H +++ b/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/settings.H @@ -90,6 +90,7 @@ class stop_conditions // Many of the config fields share a disable bit pattern, so we define it here static constexpr uint64_t DISABLE = 0b1111; static constexpr uint64_t MAX_THRESHOLD = 0b1110; + static constexpr uint64_t DONT_CHANGE = 0; private: |