diff options
| author | Chris Phan <cphan@us.ibm.com> | 2014-03-10 14:28:50 -0500 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-03-20 14:01:24 -0500 |
| commit | dd911ee39fd8e3d4fd7a6157bdb0745e97462569 (patch) | |
| tree | 705c0decc5e7345a3e66a7f5afb409c2dc683462 /src/usr/diag/prdf/framework | |
| parent | e7ac12283e3b48c9ee0dbe4361e6cc591c06a957 (diff) | |
| download | talos-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.C | 64 |
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 |

