summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/plat/mem/prdfMemVcm.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/diag/prdf/plat/mem/prdfMemVcm.C')
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemVcm.C140
1 files changed, 61 insertions, 79 deletions
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemVcm.C b/src/usr/diag/prdf/plat/mem/prdfMemVcm.C
index 611bd42fa..74ec3dfed 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemVcm.C
+++ b/src/usr/diag/prdf/plat/mem/prdfMemVcm.C
@@ -39,67 +39,16 @@ using namespace PlatServices;
//##############################################################################
//
-// Specializations for MCA
+// Generic Specializations
//
//##############################################################################
-template<>
-uint32_t VcmEvent<TYPE_MCA>::startCmd()
-{
- #define PRDF_FUNC "[VcmEvent::startCmd] "
-
- uint32_t o_rc = SUCCESS;
-
- // No stop conditions.
- mss::mcbist::stop_conditions<> stopCond;
-
- // Start the time based scrub procedure on this master rank.
- o_rc = startTdScrub<TYPE_MCA>( iv_chip, iv_rank, MASTER_RANK, stopCond );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "startTdScrub(0x%08x,0x%2x) failed",
- iv_chip->getHuid(), getKey() );
- }
-
- return o_rc;
-
- #undef PRDF_FUNC
-}
-
-template<>
-uint32_t VcmEvent<TYPE_OCMB_CHIP>::startCmd()
-{
- #define PRDF_FUNC "[VcmEvent::startCmd] "
-
- uint32_t o_rc = SUCCESS;
-
- PRDF_ERR( PRDF_FUNC "Function not supported yet" );
- /* TODO RTC 208262
- // No stop conditions.
- mss::mcbist::stop_conditions stopCond;
-
- // Start the time based scrub procedure on this master rank.
- o_rc = startTdScrub<TYPE_MCA>( iv_chip, iv_rank, MASTER_RANK, stopCond );
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "startTdScrub(0x%08x,0x%2x) failed",
- iv_chip->getHuid(), getKey() );
- }
- */
-
- return o_rc;
-
- #undef PRDF_FUNC
-}
-
-//------------------------------------------------------------------------------
-
-template<>
-uint32_t VcmEvent<TYPE_MCA>::handlePhaseComplete( const uint32_t & i_eccAttns,
- STEP_CODE_DATA_STRUCT & io_sc,
- bool & o_done )
+template<TARGETING::TYPE T>
+uint32_t VcmEvent<T>::handlePhaseComplete( const uint32_t & i_eccAttns,
+ STEP_CODE_DATA_STRUCT & io_sc,
+ bool & o_done )
{
- #define PRDF_FUNC "[VcmEvent<TYPE_MCA>::handlePhaseComplete] "
+ #define PRDF_FUNC "[VcmEvent<T>::handlePhaseComplete] "
uint32_t o_rc = SUCCESS;
@@ -126,36 +75,39 @@ uint32_t VcmEvent<TYPE_MCA>::handlePhaseComplete( const uint32_t & i_eccAttns,
#undef PRDF_FUNC
}
-template<>
+template
+uint32_t VcmEvent<TYPE_MCA>::handlePhaseComplete( const uint32_t & i_eccAttns,
+ STEP_CODE_DATA_STRUCT & io_sc,
+ bool & o_done );
+template
uint32_t VcmEvent<TYPE_OCMB_CHIP>::handlePhaseComplete(
const uint32_t & i_eccAttns,
STEP_CODE_DATA_STRUCT & io_sc,
- bool & o_done )
+ bool & o_done );
+
+//##############################################################################
+//
+// Specializations for MCA
+//
+//##############################################################################
+
+template<>
+uint32_t VcmEvent<TYPE_MCA>::startCmd()
{
- #define PRDF_FUNC "[VcmEvent<TYPE_OCMB_CHIP>::handlePhaseComplete] "
+ #define PRDF_FUNC "[VcmEvent::startCmd] "
uint32_t o_rc = SUCCESS;
- PRDF_ERR( PRDF_FUNC "Function not supported yet" );
- /* TODO RTC 208262
- do
- {
- if ( TD_PHASE_2 == iv_phase )
- {
- // Determine if the chip mark has been verified.
- o_rc = (i_eccAttns & MAINT_MCE) ? verified(io_sc)
- : falseAlarm(io_sc);
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "verified()/falseAlarm() failed" );
- break;
- }
-
- o_done = true; // Procedure is complete.
- }
+ // No stop conditions.
+ mss::mcbist::stop_conditions<> stopCond;
- } while (0);
- */
+ // Start the time based scrub procedure on this master rank.
+ o_rc = startTdScrub<TYPE_MCA>( iv_chip, iv_rank, MASTER_RANK, stopCond );
+ if ( SUCCESS != o_rc )
+ {
+ PRDF_ERR( PRDF_FUNC "startTdScrub(0x%08x,0x%2x) failed",
+ iv_chip->getHuid(), getKey() );
+ }
return o_rc;
@@ -510,6 +462,36 @@ uint32_t VcmEvent<TYPE_MBA>::handlePhaseComplete( const uint32_t & i_eccAttns,
#undef PRDF_FUNC
}
+//##############################################################################
+//
+// Specializations for OCMB
+//
+//##############################################################################
+
+template<>
+uint32_t VcmEvent<TYPE_OCMB_CHIP>::startCmd()
+{
+ #define PRDF_FUNC "[VcmEvent::startCmd] "
+
+ uint32_t o_rc = SUCCESS;
+
+ // No stop conditions.
+ mss::mcbist::stop_conditions<> stopCond;
+
+ // Start the time based scrub procedure on this master rank.
+ o_rc = startTdScrub<TYPE_OCMB_CHIP>( iv_chip, iv_rank, MASTER_RANK,
+ stopCond );
+ if ( SUCCESS != o_rc )
+ {
+ PRDF_ERR( PRDF_FUNC "startTdScrub(0x%08x,0x%2x) failed",
+ iv_chip->getHuid(), getKey() );
+ }
+
+ return o_rc;
+
+ #undef PRDF_FUNC
+}
+
//------------------------------------------------------------------------------
} // end namespace PRDF
OpenPOWER on IntegriCloud