summaryrefslogtreecommitdiffstats
path: root/src/usr/diag
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/diag')
-rw-r--r--src/usr/diag/mdia/mdiasm.C27
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:
OpenPOWER on IntegriCloud