summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/plat/mem/prdfP9Mcbist.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/diag/prdf/plat/mem/prdfP9Mcbist.C')
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfP9Mcbist.C38
1 files changed, 14 insertions, 24 deletions
diff --git a/src/usr/diag/prdf/plat/mem/prdfP9Mcbist.C b/src/usr/diag/prdf/plat/mem/prdfP9Mcbist.C
index 47349feab..2d43025d3 100644
--- a/src/usr/diag/prdf/plat/mem/prdfP9Mcbist.C
+++ b/src/usr/diag/prdf/plat/mem/prdfP9Mcbist.C
@@ -78,27 +78,6 @@ int32_t PostAnalysis( ExtensibleChip * i_mcbChip,
{
#define PRDF_FUNC "[p9_mcbist::PostAnalysis] "
- #ifndef __HOSTBOOT_RUNTIME
-
- // Send command complete to MDIA.
- // This must be done in post analysis after attentions have been cleared.
-
- McbistDataBundle * mcbdb = getMcbistDataBundle( i_mcbChip );
-
- if ( mcbdb->iv_sendCmdCompleteMsg )
- {
- mcbdb->iv_sendCmdCompleteMsg = false;
-
- int32_t rc = mdiaSendEventMsg( i_mcbChip->getTrgt(),
- MDIA::COMMAND_COMPLETE );
- if ( SUCCESS != rc )
- {
- PRDF_ERR( PRDF_FUNC "mdiaSendEventMsg(COMMAND_COMPLETE) failed" );
- }
- }
-
- #endif // not __HOSTBOOT_RUNTIME
-
return SUCCESS; // Always return SUCCESS for this plugin.
#undef PRDF_FUNC
@@ -123,9 +102,20 @@ int32_t McbistCmdComplete( ExtensibleChip * i_mcbChip,
#define PRDF_FUNC "[p9_mcbist::McbistCmdComplete] "
// Tell the TD controller there was a command complete attention.
- getMcbistDataBundle(i_mcbChip)->getTdCtlr()->handleCmdComplete( io_sc );
-
- return SUCCESS; // Always return SUCCESS for this plugin.
+ McbistDataBundle * db = getMcbistDataBundle( i_mcbChip );
+ if ( SUCCESS != db->getTdCtlr()->handleCmdComplete(io_sc) )
+ {
+ // Something failed. It is possible the command complete attention has
+ // not been cleared. Make the rule code do it.
+ return SUCCESS;
+ }
+ else
+ {
+ // Everything was successful. Whether we started a new command or told
+ // MDIA to do it, the command complete bit has already been cleared.
+ // Don't do it again.
+ return PRD_NO_CLEAR_FIR_BITS;
+ }
#undef PRDF_FUNC
}
OpenPOWER on IntegriCloud