summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/framework
diff options
context:
space:
mode:
authorChris Phan <cphan@us.ibm.com>2014-03-10 14:28:50 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-03-20 14:01:24 -0500
commitdd911ee39fd8e3d4fd7a6157bdb0745e97462569 (patch)
tree705c0decc5e7345a3e66a7f5afb409c2dc683462 /src/usr/diag/prdf/framework
parente7ac12283e3b48c9ee0dbe4361e6cc591c06a957 (diff)
downloadtalos-hostboot-dd911ee39fd8e3d4fd7a6157bdb0745e97462569.tar.gz
talos-hostboot-dd911ee39fd8e3d4fd7a6157bdb0745e97462569.zip
PRD: Add CFAM FSI Status Reg 0x1007 to PLL data capture
Change-Id: I99c83f5da87ed32b8d6f2271ee6eb17c5ff461fe RTC: 98680 Backport: release-fips810 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9463 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Reviewed-by: Zane Shelley <zshelle@us.ibm.com> Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9754
Diffstat (limited to 'src/usr/diag/prdf/framework')
-rw-r--r--src/usr/diag/prdf/framework/service/prdfPlatServices.C64
1 files changed, 63 insertions, 1 deletions
diff --git a/src/usr/diag/prdf/framework/service/prdfPlatServices.C b/src/usr/diag/prdf/framework/service/prdfPlatServices.C
index 730cc350e..5a7f4455c 100644
--- a/src/usr/diag/prdf/framework/service/prdfPlatServices.C
+++ b/src/usr/diag/prdf/framework/service/prdfPlatServices.C
@@ -38,12 +38,15 @@
#include <prdfCenAddress.H>
#include <prdfCenDqBitmap.H>
+#include <iipServiceDataCollector.h>
+#include <UtilHash.H>
#include <diag/mdia/mdia.H>
#include <diag/mdia/mdiamevent.H>
#include <errno.h>
#include <sys/time.h>
#include <time.h>
+#include <targeting/common/targetservice.H>
using namespace TARGETING;
@@ -230,7 +233,66 @@ TARGETING::TargetHandle_t getMasterCore( TARGETING::TargetHandle_t i_procTgt )
#undef PRDF_FUNC
}
-//------------------------------------------------------------------------------
+//##############################################################################
+//## util functions
+//##############################################################################
+
+void captureFsiStatusReg( ExtensibleChip * i_chip,
+ STEP_CODE_DATA_STRUCT & io_sc )
+{
+ #define PRDF_FUNC "[PlatServices::captureFsiStatusReg] "
+
+ do
+ {
+ // HB doesn't allow cfam access on master proc
+ TargetHandle_t l_procTgt = i_chip->GetChipHandle();
+
+ if( TYPE_PROC == getTargetType(l_procTgt) )
+ {
+ TargetHandle_t l_pMasterProcChip = NULL;
+ targetService().
+ masterProcChipTargetHandle( l_pMasterProcChip );
+
+ if( l_pMasterProcChip == l_procTgt )
+ {
+ PRDF_DTRAC( PRDF_FUNC"can't access CFAM from master "
+ "proc: 0x%.8X", i_chip->GetId() );
+ break;
+ }
+ }
+
+ errlHndl_t errH = NULL;
+ ecmdDataBufferBase cfamData(32);
+ uint32_t u32Data = 0;
+
+ PRD_FAPI_TO_ERRL(errH,
+ fapiGetCfamRegister,
+ PlatServices::getFapiTarget(i_chip->GetChipHandle()),
+ 0x00001007,
+ cfamData);
+
+ if(errH)
+ {
+ PRDF_ERR( PRDF_FUNC"chip: 0x%.8X, failed to get "
+ "CFAM_FSI_STATUS: 0x%X",
+ i_chip->GetId(), cfamData.getWord( 0 ) );
+ PRDF_COMMIT_ERRL(errH, ERRL_ACTION_SA|ERRL_ACTION_REPORT);
+ break;
+ }
+
+ u32Data = cfamData.getWord(0);
+ BIT_STRING_ADDRESS_CLASS bs (0, 32, (CPU_WORD *) &u32Data);
+
+ io_sc.service_data->GetCaptureData().Add(
+ i_chip->GetChipHandle(),
+ ( Util::hashString("CFAM_FSI_STATUS") ^
+ i_chip->getSignatureOffset() ),
+ bs);
+ } while(0);
+
+ #undef PRDF_FUNC
+}
+
} // end namespace PlatServices
OpenPOWER on IntegriCloud