summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2017-03-31 14:48:55 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2017-04-10 12:04:50 -0400
commit6e5d170315054ed04c7a3ba7144990fe3860e882 (patch)
treed2416d9f5b7d713e3deabed1f0e1520a46b4414d /src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C
parent1b0650f12154392f8c305880d4d0e6b17ea9106f (diff)
downloadtalos-hostboot-6e5d170315054ed04c7a3ba7144990fe3860e882.tar.gz
talos-hostboot-6e5d170315054ed04c7a3ba7144990fe3860e882.zip
PRD: resume background scrub at runtime
Change-Id: Iaab3339de860215349fdae815496097c03413563 RTC: 171875 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/38714 Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com> Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39001 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C')
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C
index d6d704f13..335838ba7 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C
+++ b/src/usr/diag/prdf/plat/mem/prdfMemTdCtlr.C
@@ -28,6 +28,7 @@
// Platform includes
#include <prdfMemAddress.H>
#include <prdfMemCaptureData.H>
+#include <prdfMemScrubUtils.H>
#include <prdfP9McbistExtraSig.H>
#include <prdfParserEnums.H>
@@ -101,6 +102,30 @@ uint32_t MemTdCtlr<T>::handleCmdComplete( STEP_CODE_DATA_STRUCT & io_sc )
break;
}
+ #ifdef __HOSTBOOT_RUNTIME
+
+ // If the queue is still empty then it is possible that background
+ // scrubbing only stopped for FFDC. In that case, simply resume the
+ // command instead of starting a new one.
+ if ( iv_queue.empty() )
+ {
+ // It is possible to get here if we were running a TD procedure
+ // and the PRD service is reset. Therefore, we much check if
+ // background scrubbing was actually configured.
+ bool isBgScrub;
+ o_rc = isBgScrubConfig<T>( iv_chip, isBgScrub );
+ if ( SUCCESS != o_rc )
+ {
+ PRDF_ERR( PRDF_FUNC "isBgScrubConfig(0x%08x) failed",
+ iv_chip->getHuid() );
+ break;
+ }
+
+ if ( isBgScrub ) iv_resumeBgScrub = true;
+ }
+
+ #endif
+
// If the command completed successfully with no error, the error
// log will not have any useful information. Therefore, do not
// commit the error log. This is done to avoid useless
OpenPOWER on IntegriCloud