diff options
Diffstat (limited to 'src/usr/diag')
-rw-r--r-- | src/usr/diag/mdia/mdiasm.C | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/usr/diag/mdia/mdiasm.C b/src/usr/diag/mdia/mdiasm.C index 4d6c451ae..a946c2bda 100644 --- a/src/usr/diag/mdia/mdiasm.C +++ b/src/usr/diag/mdia/mdiasm.C @@ -47,6 +47,7 @@ #include <initservice/initserviceif.H> #include <sys/time.h> #include <p9c_mss_maint_cmds.H> +#include <dimmBadDqBitmapFuncs.H> using namespace TARGETING; using namespace ERRORLOG; @@ -897,12 +898,32 @@ bool StateMachine::executeWorkItem(WorkFlowProperties * i_wfp) // do the appropriate thing based on the phase for this target case RESTORE_DRAM_REPAIRS: + { + TargetHandle_t target = getTarget( *i_wfp); + TYPE trgtType = target->getAttr<ATTR_TYPE>(); - //TODO RTC 136126 - //rc = PRDF::restoreDramRepairs(getTarget(*i_wfp)); + // MBA target + if ( TYPE_MBA == trgtType ) + { + rc = PRDF::restoreDramRepairs<TYPE_MBA>( target ); + } + // MCBIST target + else + { + // Get the connected MCAs. + TargetHandleList mcaList; + getChildAffinityTargets( mcaList, target, CLASS_UNIT, + TYPE_MCA ); + for ( auto & mca : mcaList ) + { + MDIA_SLOW( "sm: restoreDramRepairs(0x%08x)", + get_huid(mca) ); + rc = PRDF::restoreDramRepairs<TYPE_MCA>( mca ); + } + } break; - + } case START_PATTERN_0: case START_PATTERN_1: case START_PATTERN_2: |