diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2013-07-29 12:52:29 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-08-19 08:56:05 -0500 |
commit | 8efaa82ce48d80d3bf134cdd6832aa798cbfa4c9 (patch) | |
tree | e3e60035195791b12bd34382dcc189ca1d765c85 /src/usr/diag | |
parent | aa5d43c3ac6da6dd2bbee883e17ff9b0d1d8ff15 (diff) | |
download | talos-hostboot-8efaa82ce48d80d3bf134cdd6832aa798cbfa4c9.tar.gz talos-hostboot-8efaa82ce48d80d3bf134cdd6832aa798cbfa4c9.zip |
PRD: RasServices refactoring part 2
Cleaned up PFA data.
Change-Id: I02033c9357f421f649c08b47a3b7e89f8fcf3825
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/5702
Reviewed-by: Zane Shelley <zshelle@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Reviewed-by: Christopher T. Phan <cphan@us.ibm.com>
Tested-by: Jenkins Server
Squashed: I2f78af8f7c351cb208667f92acd9eff5c001905c
Squashed: I87ae14d3e579eb25b46c416d74eabf5a6cdb629b
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/5750
Diffstat (limited to 'src/usr/diag')
9 files changed, 538 insertions, 816 deletions
diff --git a/src/usr/diag/prdf/common/framework/resolution/xspprdGardResolution.h b/src/usr/diag/prdf/common/framework/resolution/xspprdGardResolution.h index 5ef17ec06..05750444b 100755 --- a/src/usr/diag/prdf/common/framework/resolution/xspprdGardResolution.h +++ b/src/usr/diag/prdf/common/framework/resolution/xspprdGardResolution.h @@ -69,7 +69,7 @@ public: DeconfigNoGard = 4 }; - inline static const char* ToString(ErrorType i_type) + inline static const char* ToString( uint32_t i_type ) { switch (i_type) { @@ -78,7 +78,7 @@ public: case Fatal: return "Fatal"; case CheckStopOnlyGard: return "CheckStopOnlyGard"; case DeconfigNoGard: return "DeconfigNoGard"; - default: return "Unknown_ErrorType"; + default: return "Undefined"; } } diff --git a/src/usr/diag/prdf/common/framework/service/iipServiceDataCollector.h b/src/usr/diag/prdf/common/framework/service/iipServiceDataCollector.h index d183cf11f..debf5e7ee 100755 --- a/src/usr/diag/prdf/common/framework/service/iipServiceDataCollector.h +++ b/src/usr/diag/prdf/common/framework/service/iipServiceDataCollector.h @@ -94,25 +94,36 @@ typedef std::vector<SdcCallout> SDC_MRU_LIST; #ifndef __HOSTBOOT_MODULE -struct HcdbChangeItem { - TARGETING::TargetHandle_t iv_phcdbtargetHandle ; - hcdb::comp_subtype_t iv_compSubType; - comp_id_t iv_compType; - HcdbChangeItem() : iv_phcdbtargetHandle(NULL), iv_compSubType(hcdb::LBST_ABIST) {} - HcdbChangeItem(TARGETING::TargetHandle_t i_pTargetHandle, hcdb::comp_subtype_t i_compSubType, comp_id_t i_compType) - : iv_phcdbtargetHandle(i_pTargetHandle), iv_compSubType(i_compSubType), iv_compType(i_compType){} +struct HcdbChangeItem +{ + TARGETING::TargetHandle_t target; + hcdb::comp_subtype_t compSubType; + comp_id_t compType; + + HcdbChangeItem() : + target(NULL), compSubType(hcdb::LBST_ABIST) + {} + + HcdbChangeItem( TARGETING::TargetHandle_t i_target, + hcdb::comp_subtype_t i_compSubType, comp_id_t i_compType ) : + target(i_target), compSubType(i_compSubType), compType(i_compType) + {} }; typedef std::vector<HcdbChangeItem> HCDB_CHANGE_LIST; #endif -struct SignatureList { - TARGETING::TargetHandle_t iv_pSignatureHandle; - uint32_t iv_signature; - SignatureList() : iv_pSignatureHandle(NULL), iv_signature(0) {} - SignatureList(TARGETING::TargetHandle_t i_pTargetHandle , uint32_t i_signature) - : iv_pSignatureHandle(i_pTargetHandle), iv_signature(i_signature){} +struct SignatureList +{ + TARGETING::TargetHandle_t target; + uint32_t signature; + + SignatureList() : target(NULL), signature(0) {} + + SignatureList( TARGETING::TargetHandle_t i_target, uint32_t i_signature ) : + target(i_target), signature(i_signature) + {} }; typedef std::vector<SignatureList> PRDF_SIGNATURES; @@ -134,26 +145,20 @@ public: //mk03c PRDF_SDC_FLAGS_MAP // flag positions - PRDF_SDC_FLAG(FORCE_LATENT_CS, 0x80000) // mp07 PRDF_SDC_FLAG(USING_SAVED_SDC, 0x40000) // mp05 PRDF_SDC_FLAG(PROC_CORE_CS, 0x20000) // mp03 PRDF_SDC_FLAG(UNIT_CS, 0x20000) // mp06 a (Note this is intentionally the same value as PROC_CORE_CS) PRDF_SDC_FLAG(THERMAL_EVENT, 0x10000) // pw01 - PRDF_SDC_FLAG(MP_DUMP_REQ, 0x08000) // rc09 - PRDF_SDC_FLAG(MP_RESET_REQ, 0x04000) // dg08 - PRDF_SDC_FLAG(MP_FATAL, 0x02000) // dg08 PRDF_SDC_FLAG(DONT_COMMIT_ERRL, 0x01000) // mp02 PRDF_SDC_FLAG(DUMP, 0x00800) // dg04 PRDF_SDC_FLAG(UERE, 0x00400) // dg02 PRDF_SDC_FLAG(SUE, 0x00200) // dg02 - PRDF_SDC_FLAG(CRUMB, 0x00100) PRDF_SDC_FLAG(AT_THRESHOLD, 0x00080) PRDF_SDC_FLAG(DEGRADED, 0x00040) PRDF_SDC_FLAG(SERVICE_CALL, 0x00020) PRDF_SDC_FLAG(TRACKIT, 0x00010) PRDF_SDC_FLAG(TERMINATE, 0x00008) PRDF_SDC_FLAG(LOGIT, 0x00004) - PRDF_SDC_FLAG(MEMORY_STEERED, 0x00002) PRDF_SDC_FLAG(FLOODING, 0x00001) PRDF_SDC_FLAGS_MAP_END @@ -172,7 +177,6 @@ public: <li> terminate() == false <li> IsDegraded() == false <li> IsServiceCall() == false - <li> IsMemorySteered == false <li> IsMfgTracking() == true <li> IsLogging() == true </ul> @@ -476,51 +480,6 @@ public: */ bool IsServiceCall(void) const { return (flags & SERVICE_CALL)!=0 ? true:false; } -// dg12d - start - /* - Indicate that mainstore has had redundent memory steered in - <ul> - <br><b>Parameter: </b> offset: offset in card vpd to write bitPos - <br><b>Parameter: </b> bitPos: bit position steered in this extent - <br><b>Returns: </b> None. - <br><b>Requirements:</b> None. - <br><b>Promises: </b> IsMemorySteered() == true, this object contains - VPD data that needs to be transferred to VPD - <br><b>Exceptions: </b> None. - </ul><br> - */ -// void SetMemorySteered(uint32_t offset, uint32_t bitPos); - - /** - Query for mainstore redundent steering - <ul> - <br><b>Parameters: </b> None. - <br><b>Returns: </b> [true | false] - <br><b>Requirements:</b> None. - <br><b>Promises: </b> GetRbsVpdData() returns new data to be - transfered to VPD - <br><b>Notes: </b> Depreciated - always returns false - </ul><br> - */ - bool IsMemorySteered(void) const { return (flags & MEMORY_STEERED)!=0 ? true:false; } - - /* - Get the latest RBS vpd data - <ul> - <br><b>Parameters: </b> None. - <br><b>Returns: </b> Bitstring - <br><b>Requirements:</b> None. - <br><b>Promises: </b> None. - <br><b>Exceptions: </b> None. - <br><b>Notes: </b> if SetMemorySteered() has not been called or - IsMemorySteered() == false then this - returns data that indicates that nothing has - been steered - </ul><br> - */ -// const BIT_STRING_CLASS & GetRbsVpdData(void) const { return rbsVpd; } -// dg12d - end - /** Indicate the chip where analysis begain <ul> @@ -597,33 +556,6 @@ public: */ uint8_t GetThreshold(void) const { return threshold; } - //mp04 a Start - /** - Indicate the Reason Code (for the SRC) for this error - <ul> - <br><b>Parameters: </b> reasonCode - <br><b>Returns: </b> None. - <br><b>Requirements:</b> None. - <br><b>Promises: </b> GetReasonCode() == i_reasonCode - <br><b>Exceptions: </b> None. - </ul><br> - */ - void SetReasonCode(uint16_t i_reasonCode) { reasonCode = i_reasonCode; } - - /** - Get the Reason Code value for this error - <ul> - <br><b>Parameters: </b> None. - <br><b>Returns: </b> reasonCode value - <br><b>Requirements:</b> SetReasonCode() - <br><b>Promises: </b> None. - <br><b>Exceptions: </b> None. - <br><b>Notes: </b> optional - </ul><br> - */ - uint16_t GetReasonCode(void) const { return reasonCode; } - //mp04 a Stop - /** Indicate that PRD is being called faster than SP can send error logs <ul> @@ -673,31 +605,6 @@ public: GardResolution::ErrorType QueryGard(void); /** - Indicate that there may be a valid "Cookie Crumb" from I/O initialization - <ul> - <br><b>Parameters: </b> None - <br><b>Returns: </b> None - <br><b>Requirements:</b> None - <br><b>Promises: </b> MaybeCrumb() == true - <br><b>Exceptions: </b> None. - </ul><br> - */ - void SeekCrumb(void) { flags |= CRUMB; } - - /** - Indicates wether service should look for a "cookie crumb" from I/O init - <ul> - <br><b>Parameters: </b> None - <br><b>Returns: </b> [true(1)|false(0)] - <br><b>Requirements:</b> None - <br><b>Promises: </b> None - <br><b>Exceptions: </b> None. - </ul><br> - */ - bool MaybeCrumb(void) const { return (flags & CRUMB)!=0 ? true:false;} - - // dg02 - start - /** Set Error type as Special Uncorrectable Error SUE <ul> <br><b>Parameters: </b> None @@ -745,8 +652,6 @@ public: */ bool IsUERE(void) const { return (flags & UERE)!=0 ? true:false;} - // dg02 - end - /** Set a flag <ul> @@ -770,7 +675,6 @@ public: */ bool GetFlag(Flag flag) { return ((flags & flag)!=0);} - /** Clear a flag <ul> @@ -803,36 +707,6 @@ public: */ void SetTOE(Timer& theTime) { ivCurrentEventTime = theTime; } - /** - Is this an MP Fatal error - <ul> - <br><b>Paramter: </b> None - <br><b>Returns: </b> [true | false] - <br><b>Requirments: </b> None. - <br><b>Promises: </b> None. - <br><b>Exceptions: </b> None. - </ul><br> - */ - bool IsMpFatal(void) const { return (flags & MP_FATAL)!=0 ? true:false; } - - /** - Is an MP Reset requested? - <ul> - <br><b>Paramter: </b> None - <br><b>Returns: </b> [true | false] - <br><b>Requirments: </b> None. - <br><b>Promises: </b> None. - <br><b>Exceptions: </b> None. - </ul><br> - */ - bool IsMpResetReq(void) const { return (flags & MP_RESET_REQ)!=0 ? true:false; } - // dg08 end - - /** - Is an MP Dump requested? - */ - bool IsMpDumpReq(void) const { return (flags & MP_DUMP_REQ) != 0 ? true:false; } // rc09a - /** Is an Thermal Event Flag on? */ bool IsThermalEvent(void) const { return (flags & THERMAL_EVENT) != 0 ? true:false; } @@ -846,7 +720,6 @@ public: bool IsUsingSavedSdc (void) const { return (flags & USING_SAVED_SDC) != 0 ? true:false; } /** Is a Force Lantent Check Stop flag on? */ - bool IsForceLatentCS (void) const { return (flags & FORCE_LATENT_CS) != 0 ? true:false; } #ifndef __HOSTBOOT_MODULE @@ -920,7 +793,6 @@ private: // Data uint32_t flags; //mp01 c from uint16_t uint8_t hitCount; uint8_t threshold; - uint16_t reasonCode; //mp04 TARGETING::TargetHandle_t startingPoint; // dg12d BIT_STRING_BUFFER_CLASS rbsVpd; GardResolution::ErrorType errorType; diff --git a/src/usr/diag/prdf/common/framework/service/iipServiceDataCollector.inl b/src/usr/diag/prdf/common/framework/service/iipServiceDataCollector.inl index 2cd10def4..0a65d537a 100755 --- a/src/usr/diag/prdf/common/framework/service/iipServiceDataCollector.inl +++ b/src/usr/diag/prdf/common/framework/service/iipServiceDataCollector.inl @@ -37,7 +37,6 @@ ServiceDataCollector::ServiceDataCollector() : flags(TRACKIT | LOGIT), hitCount(0), threshold(0), - reasonCode(0), startingPoint(NULL), errorType(GardResolution::NoGard), ivpDumpRequestChipHandle(NULL), diff --git a/src/usr/diag/prdf/common/framework/service/prdfPfa5Data.h b/src/usr/diag/prdf/common/framework/service/prdfPfa5Data.h index 94eb66fd0..2407abd4f 100755 --- a/src/usr/diag/prdf/common/framework/service/prdfPfa5Data.h +++ b/src/usr/diag/prdf/common/framework/service/prdfPfa5Data.h @@ -35,9 +35,10 @@ namespace PRDF { const uint32_t PFA5_Format = 0x50464135; -const uint32_t MruListLIMIT = 8; + +const uint32_t MruListLIMIT = 8; const uint32_t HcdbListLIMIT = 8; -const uint32_t SignatureListLIMIT = 8; +const uint32_t SigListLIMIT = 8; // Size of PRD Capture Data #ifdef __HOSTBOOT_MODULE @@ -68,363 +69,250 @@ enum ErrlSubsect struct MsDumpStruct { - int32_t DumpContent; - HUID DumpId; - - friend UtilStream& operator<<(UtilStream& i_left, MsDumpStruct& i_right) - { - i_left << i_right.DumpContent << i_right.DumpId; + int32_t content; + HUID id; - return i_left; - }; - - friend UtilStream& operator>>(UtilStream& i_left, MsDumpStruct& i_right) - { - i_left >> i_right.DumpContent >>i_right.DumpId; + friend UtilStream& operator<<( UtilStream& i_left, MsDumpStruct& i_right ) + { + i_left << i_right.content << i_right.id; + return i_left; + }; - return i_left; - }; + friend UtilStream& operator>>( UtilStream& i_left, MsDumpStruct& i_right ) + { + i_left >> i_right.content >>i_right.id; + return i_left; + }; }; -struct PfaCalloutListStruct +struct PfaMruListStruct { - uint32_t Callout; - uint8_t MRUtype; // See enum PRDcallout::MruType - uint8_t MRUpriority; // in srci/fsp/srci.H - // SRCI_PRIORITY_LOW = 1 - // SRCI_PRIORITY_MEDC = 2 - // SRCI_PRIORITY_MEDB = 3 - // SRCI_PRIORITY_MEDA = 4 - // SRCI_PRIORITY_MED = 5 - // SRCI_PRIORITY_HIGH = 6 - uint8_t Reserved_3; - uint8_t Reserved_4; - - friend UtilStream& operator<<(UtilStream& i_left, - PfaCalloutListStruct& i_right) - { - i_left << i_right.Callout << i_right.MRUtype << i_right.MRUpriority - << i_right.Reserved_3 << i_right.Reserved_4; - - return i_left; - }; - - friend UtilStream& operator>>(UtilStream& i_left, - PfaCalloutListStruct& i_right) - { - i_left >> i_right.Callout >> i_right.MRUtype >> i_right.MRUpriority - >> i_right.Reserved_3 >> i_right.Reserved_4; - return i_left; - }; + uint32_t callout; // 32-bit representation of HUID, MemoryMru, symbolic FRU + uint8_t type; // See enum PRDcallout::MruType + uint8_t priority; // See enum srciPriority (in srci/fsp/srci.H) + friend UtilStream& operator<<( UtilStream& i_left, + PfaMruListStruct& i_right ) + { + i_left << i_right.callout << i_right.type << i_right.priority; + return i_left; + }; + + friend UtilStream& operator>>( UtilStream& i_left, + PfaMruListStruct& i_right ) + { + i_left >> i_right.callout >> i_right.type >> i_right.priority; + return i_left; + }; }; -//NOTE: The addition of the hcdb data requires additonal PFA data and -// error log parsing. This is triggered / indicated by a new -// PFA data bit,HCDB_SUPPORT. Support is for fips720 and beyond. struct PfaHcdbListStruct { - HUID hcdbId ; + HUID hcdbId; uint32_t compSubType; uint32_t compType; - uint32_t hcdbReserved1; - uint32_t hcdbReserved2; - friend UtilStream& operator<<(UtilStream& i_left, - PfaHcdbListStruct& i_right) + friend UtilStream& operator<<( UtilStream& i_left, + PfaHcdbListStruct& i_right ) { - i_left << i_right.hcdbId << i_right.compSubType << i_right.compType - << i_right.hcdbReserved1 << i_right.hcdbReserved2; + i_left << i_right.hcdbId << i_right.compSubType << i_right.compType; return i_left; }; - friend UtilStream& operator>>(UtilStream& i_left, - PfaHcdbListStruct& i_right) + friend UtilStream& operator>>( UtilStream& i_left, + PfaHcdbListStruct& i_right ) { - i_left >> i_right.hcdbId >> i_right.compSubType >> i_right.compType - >> i_right.hcdbReserved1 >> i_right.hcdbReserved2; + i_left >> i_right.hcdbId >> i_right.compSubType >> i_right.compType; return i_left; }; }; -struct PfaSignatureListStruct +struct PfaSigListStruct { - HUID chipId ; + HUID chipId; uint32_t signature; - friend UtilStream& operator<<(UtilStream& i_left, - PfaSignatureListStruct& i_right) + friend UtilStream& operator<<( UtilStream& i_left, + PfaSigListStruct& i_right ) { i_left << i_right.chipId << i_right.signature; return i_left; }; - friend UtilStream& operator>>(UtilStream& i_left, - PfaSignatureListStruct& i_right) + friend UtilStream& operator>>( UtilStream& i_left, + PfaSigListStruct& i_right ) { i_left >> i_right.chipId >> i_right.signature; return i_left; }; }; -/********************************************************************* - * NOTE: the MsDumpLabel and its information must be first in this - * structure. Attn handling is dependent on this ordering. - **********************************************************************/ struct PfaData { - //0x0000 - uint32_t MsDumpLabel[2]; - MsDumpStruct MsDumpInfo; - - uint32_t PFA_errlActions :16,// Error Log Actions Parm - // ERRL_ACTION_NONE = 0x0000 - // ERRL_ACTION_SA = 0x8000 - // ERRL_ACTION_HIDDEN = 0x4000 - // ERRL_ACTION_REPORT = 0x2000 - // ERRL_ACTION_REPORT_HMC_ONLY = 0x1000 - // ERRL_ACTION_CALL_HOME = 0x0800 - // ERRL_ACTION_FNM_REQ = 0x0400 - // ERRL_ACTION_HYP_GARD = 0x0200 - // ERRL_ACTION_OS_RECONFIG = 0x0100 - PFA_errlSeverity :8,// Error Log Severity Parm - // See errlSeverity in errltypes.H - // ERRL_SEV_INFORMATIONAL = 0, - // ERRL_SEV_RECOVERED = 0x10 - // ERRL_SEV_PREDICTIVE = 0x20 - // ERRL_SEV_PREDICTIVE_DEGRADED = 0x21 - // ERRL_SEV_PREDICTIVE_CORRECTABLE = 0x22 - // ERRL_SEV_PREDICTIVE_CORRECTABLE2 = 0x23 - // ERRL_SEV_PREDICTIVE_REDUNDANCY_LOST = 0x24 - // ERRL_SEV_UNRECOVERABLE1 = 0x41 - // ERRL_SEV_UNRECOVERABLE2 = 0x44 - // ERRL_SEV_UNRECOVERABLE3 = 0x45 - // ERRL_SEV_UNRECOVERABLE4 = 0x48 - // ERRL_SEV_DIAGNOSTIC_ERROR1 = 0x60 - // ERRL_SEV_DIAGNOSTIC_ERROR2 = 0x61 - // ERRL_SEV_UNRECOVERABLE = 0x70 - // ERRL_SEV_UNRECOVERABLE_REIPL = 0x71 - // ERRL_SEV_RESERVED = 0xFF - - - Reserved_2 :8; - - // PRD Service Data Collector Flags - uint32_t MP_DUMP_REQ :1, - MP_RESET_REQ :1, - MP_FATAL :1, - REBOOT_MSG :1, - DUMP :1, - UERE :1, - SUE :1, - CRUMB :1, - AT_THRESHOLD :1, - DEGRADED :1, - SERVICE_CALL :1, - TRACKIT :1, - TERMINATE :1, - LOGIT :1, - MEMORY_STEERED :1, - FLOODING :1, - THERMAL_EVENT :1, - UNIT_CHECKSTOP :1, - USING_SAVED_SDC :1, - LAST_CORE_TERMINATE :1, - FORCE_LATENT_CS :1, - Reserved_0 :1, - DEFER_DECONFIG :1, - CM_MODE :1, - TERMINATE_ON_CS :1, - HCDB_SUPPORT :1, - SIGNATURE_SUPPORT :1, - Reserved :5; - // 1 TRUE - // 0 FALSE - // - //0x00xx - //uint32_t ComponentDataLabel[2];// Label to show start of Component data. - uint32_t ErrorCount :16, - // PRD Hits on this Error since IPL. - Threshold :16; - // PRD Threshold for this error (MAKMAK how represent interval?) - - uint32_t PRDServiceActionCounter :8, - // PRD Service Action Counter - ErrorType :8, - // Error type gard was called with (see xspprdGardResolution.h) - homGardState :8, - // homGardEnum in src/hwsv/server/hwsvTypes.H - // HOM_NO_GARD = 0 - // HOM_DECONFIG_GARD =1 - // HOM_BYPASS_GARD = 2 - Reserved_5 :8; //MP01 c - SystemType not needed - - uint32_t PRD_AttnTypes :8, - // 0x00 NULL - // 0x01 CheckStop Attn - // 0x02 Recoverable Attn - // 0x03 Special Attn - PRD_SecondAttnTypes :8, - // 0x00 NULL - // 0x01 CheckStop Attn - // 0x02 Recoverable Attn - // 0x03 Special Attn - - reasonCode :16; //MP06 a - - uint32_t PfaCalloutCount; // The number of MRUs below. - PfaCalloutListStruct PfaCalloutList[MruListLIMIT]; //full list of MRUs and flags. - uint32_t hcdbListCount; //mp15 a - PfaHcdbListStruct PfaHcdbList[HcdbListLIMIT]; - uint32_t signatureCount; - PfaSignatureListStruct PfaSignatureList[SignatureListLIMIT]; - //pw01 - friend UtilStream& operator<<(UtilStream& i_left, PfaData& i_right) - { - i_left << i_right.MsDumpLabel[0] << i_right.MsDumpLabel[1] - << i_right.MsDumpInfo - << - ( (i_right.PFA_errlActions << 16) | - (i_right.PFA_errlSeverity << 8) | - (i_right.Reserved_2) - ) - << - ( (i_right.MP_DUMP_REQ << 31) | - (i_right.MP_RESET_REQ << 30) | - (i_right.MP_FATAL << 29) | - (i_right.REBOOT_MSG << 28) | - (i_right.DUMP << 27) | - (i_right.UERE << 26) | - (i_right.SUE << 25) | - (i_right.CRUMB << 24) | - (i_right.AT_THRESHOLD << 23) | - (i_right.DEGRADED << 22) | - (i_right.SERVICE_CALL << 21) | - (i_right.TRACKIT << 20) | - (i_right.TERMINATE << 19) | - (i_right.LOGIT << 18) | - (i_right.MEMORY_STEERED << 17) | - (i_right.FLOODING << 16) | - (i_right.THERMAL_EVENT << 15) | - (i_right.UNIT_CHECKSTOP << 14) | - (i_right.USING_SAVED_SDC << 13) | - (i_right.LAST_CORE_TERMINATE << 12) | - (i_right.FORCE_LATENT_CS << 11) | - (i_right.Reserved_0 << 10) | - (i_right.DEFER_DECONFIG << 9) | - (i_right.CM_MODE << 8) | - (i_right.TERMINATE_ON_CS << 7) | - (i_right.HCDB_SUPPORT << 6) | - (i_right.SIGNATURE_SUPPORT << 5) | - (i_right.Reserved ) - ) - //<< i_right.ComponentDataLabel[0] << i_right.ComponentDataLabel[1] - << - ( (i_right.ErrorCount << 16) | - (i_right.Threshold) - ) - << - ( (i_right.PRDServiceActionCounter << 24) | - (i_right.ErrorType << 16) | - (i_right.homGardState << 8) | - (i_right.Reserved_5) - ) - << - ( (i_right.PRD_AttnTypes << 24) | - (i_right.PRD_SecondAttnTypes << 16) | - (i_right.reasonCode) - ) - << i_right.PfaCalloutCount; - for (uint32_t i = 0; i < i_right.PfaCalloutCount; i++) - i_left << i_right.PfaCalloutList[i]; - - if ( 0 != i_right.HCDB_SUPPORT ) //mp16 a - { - i_left << i_right.hcdbListCount; //mp15 a - for (uint32_t i = 0; i < i_right.hcdbListCount; i++) //mp15 a - i_left << i_right.PfaHcdbList[i]; //mp15 a - } - - if ( 0 != i_right.SIGNATURE_SUPPORT ) //mp16 a - { - i_left << i_right.signatureCount; - for (uint32_t i = 0; i < i_right.signatureCount; i++) - i_left << i_right.PfaSignatureList[i]; - } - - return i_left; - }; - - friend UtilStream& operator>>(UtilStream& i_left, PfaData& i_right) - { - uint32_t l_tmp[6]; - i_left >> i_right.MsDumpLabel[0] >> i_right.MsDumpLabel[1] - >> i_right.MsDumpInfo - >> l_tmp[1] - >> l_tmp[2] - >> l_tmp[3] - >> l_tmp[4] - >> l_tmp[5]; - - i_right.PFA_errlActions = (l_tmp[1] >> 16) & 0xFFFF; - i_right.PFA_errlSeverity = (l_tmp[1] >> 8) & 0xFF; - i_right.MP_DUMP_REQ = (l_tmp[2] >> 31) & 0x01; - i_right.MP_RESET_REQ = (l_tmp[2] >> 30) & 0x01; - i_right.MP_FATAL = (l_tmp[2] >> 29) & 0x01; - i_right.REBOOT_MSG = (l_tmp[2] >> 28) & 0x01; - i_right.DUMP = (l_tmp[2] >> 27) & 0x01; - i_right.UERE = (l_tmp[2] >> 26) & 0x01; - i_right.SUE = (l_tmp[2] >> 25) & 0x01; - i_right.CRUMB = (l_tmp[2] >> 24) & 0x01; - i_right.AT_THRESHOLD = (l_tmp[2] >> 23) & 0x01; - i_right.DEGRADED = (l_tmp[2] >> 22) & 0x01; - i_right.SERVICE_CALL = (l_tmp[2] >> 21) & 0x01; - i_right.TRACKIT = (l_tmp[2] >> 20) & 0x01; - i_right.TERMINATE = (l_tmp[2] >> 19) & 0x01; - i_right.LOGIT = (l_tmp[2] >> 18) & 0x01; - i_right.MEMORY_STEERED = (l_tmp[2] >> 17) & 0x01; - i_right.FLOODING = (l_tmp[2] >> 16) & 0x01; - i_right.THERMAL_EVENT = (l_tmp[2] >> 15) & 0x01; - i_right.UNIT_CHECKSTOP = (l_tmp[2] >> 14) & 0x01; - i_right.USING_SAVED_SDC = (l_tmp[2] >> 13) & 0x01; - i_right.LAST_CORE_TERMINATE = (l_tmp[2] >> 12) & 0x01; - i_right.FORCE_LATENT_CS = (l_tmp[2] >> 11) & 0x01; - i_right.Reserved_0 = (l_tmp[2] >> 10) & 0x01; - i_right.DEFER_DECONFIG = (l_tmp[2] >> 9) & 0x01; - i_right.CM_MODE = (l_tmp[2] >> 8) & 0x01; - i_right.TERMINATE_ON_CS = (l_tmp[2] >> 7) & 0x01; - i_right.HCDB_SUPPORT = (l_tmp[2] >> 6) & 0x01; - i_right.SIGNATURE_SUPPORT = (l_tmp[2] >> 5) & 0x01; - i_right.ErrorCount = (l_tmp[3] >> 16) & 0xFFFF; - i_right.Threshold = (l_tmp[3] ) & 0xFFFF; - i_right.PRDServiceActionCounter = (l_tmp[4] >> 24) & 0xFF; - i_right.ErrorType = (l_tmp[4] >> 16) & 0xFF; - i_right.homGardState = (l_tmp[4] >> 8) & 0xFF; - i_right.PRD_AttnTypes = (l_tmp[5] >> 24) & 0xFF; - i_right.PRD_SecondAttnTypes = (l_tmp[5] >> 16) & 0xFF; - i_right.reasonCode = (l_tmp[5] ) & 0xFFFF; - - i_left >> i_right.PfaCalloutCount; //mp16 m - for (uint32_t i = 0; i < i_right.PfaCalloutCount; i++) - i_left >> i_right.PfaCalloutList[i]; - - if ( 0 != i_right.HCDB_SUPPORT ) //mp16 a - { - i_left >> i_right.hcdbListCount; //mp15 a - for (uint32_t i = 0; i < i_right.hcdbListCount; i++) //mp15 a - i_left >> i_right.PfaHcdbList[i]; //mp15 a - } - - if ( 0 != i_right.SIGNATURE_SUPPORT ) //mp16 a - { - i_left >> i_right.signatureCount; - for (uint32_t i = 0; i < i_right.signatureCount; i++) - i_left >> i_right.PfaSignatureList[i]; - } - - return i_left; - }; - //--pw01 + // Dump info + // NOTE: The msDumpLabel and its information must be first in this + // structure. ATTN handling is dependent on this ordering. + uint32_t msDumpLabel[2]; + MsDumpStruct msDumpInfo; + + // Error log actions and severity + uint32_t errlActions :16, // See enum errlActions (in errltypes.H) + errlSeverity : 8, // See enum errlSeverity (in errltypes.H) + serviceActionCounter : 8; // Number of service actions requested + // by PRD. + + // PRD Service Data Collector Flags (1:true, 0:false) + uint32_t DUMP :1, + UERE :1, + SUE :1, + AT_THRESHOLD :1, + DEGRADED :1, + SERVICE_CALL :1, + TRACKIT :1, + TERMINATE :1, + LOGIT :1, + FLOODING :1, + THERMAL_EVENT :1, + UNIT_CHECKSTOP :1, + USING_SAVED_SDC :1, + LAST_CORE_TERMINATE :1, + DEFER_DECONFIG :1, + CM_MODE :1, + Reserved :16; + + // Thresholding + uint32_t errorCount :16, // Number of occurrences of this attention + threshold :16; // Theshold for this attention + + // Attention types and GARD state. + uint32_t priAttnType : 8, // primary attention type + secAttnType : 8, // secondary attention type + prdGardErrType : 8, // See enum GardResolution::ErrorType + hwasGardState : 8; // See enum hwsvGardEnum (in hwsvTypes.H) + + uint32_t mruListCount; // Total number of MRUs. + PfaMruListStruct mruList[MruListLIMIT]; // Full list of MRUs. + + uint32_t hcdbListCount; // Total number of MRUs. + PfaHcdbListStruct hcdbList[HcdbListLIMIT]; // Full list of HCDB changes. + + uint32_t sigListCount; // Total number of multi-signatures. + PfaSigListStruct sigList[SigListLIMIT]; // Full list of multi-signatures. + + /** + * @brief Default constructor + */ + PfaData() + { + memset( &mruList[0], 0x00, sizeof(PfaMruListStruct) * MruListLIMIT ); + memset( &hcdbList[0], 0x00, sizeof(PfaHcdbListStruct) * HcdbListLIMIT ); + memset( &sigList[0], 0x00, sizeof(PfaSigListStruct) * SigListLIMIT ); + } + + friend UtilStream& operator<<(UtilStream& i_left, PfaData& i_right) + { + i_left << i_right.msDumpLabel[0] << i_right.msDumpLabel[1] + << i_right.msDumpInfo; + + i_left << ( (i_right.errlActions << 16) | + (i_right.errlSeverity << 8) | + (i_right.serviceActionCounter ) ); + + i_left << ( (i_right.DUMP << 31) | + (i_right.UERE << 30) | + (i_right.SUE << 29) | + (i_right.AT_THRESHOLD << 28) | + (i_right.DEGRADED << 27) | + (i_right.SERVICE_CALL << 26) | + (i_right.TRACKIT << 25) | + (i_right.TERMINATE << 24) | + (i_right.LOGIT << 23) | + (i_right.FLOODING << 22) | + (i_right.THERMAL_EVENT << 21) | + (i_right.UNIT_CHECKSTOP << 20) | + (i_right.USING_SAVED_SDC << 19) | + (i_right.LAST_CORE_TERMINATE << 18) | + (i_right.DEFER_DECONFIG << 17) | + (i_right.CM_MODE << 16) | + (i_right.Reserved ) ); + + i_left << ( (i_right.errorCount << 16) | + (i_right.threshold ) ); + + i_left << ( (i_right.priAttnType << 24) | + (i_right.secAttnType << 16) | + (i_right.prdGardErrType << 8) | + (i_right.hwasGardState ) ); + + i_left << i_right.mruListCount; + for ( uint32_t i = 0; i < i_right.mruListCount; i++ ) + i_left << i_right.mruList[i]; + + i_left << i_right.hcdbListCount; + for ( uint32_t i = 0; i < i_right.hcdbListCount; i++ ) + i_left << i_right.hcdbList[i]; + + i_left << i_right.sigListCount; + for ( uint32_t i = 0; i < i_right.sigListCount; i++ ) + i_left << i_right.sigList[i]; + + return i_left; + }; + + friend UtilStream& operator>>(UtilStream& i_left, PfaData& i_right) + { + uint32_t l_tmp[5]; + i_left >> i_right.msDumpLabel[0] >> i_right.msDumpLabel[1] + >> i_right.msDumpInfo + >> l_tmp[1] + >> l_tmp[2] + >> l_tmp[3] + >> l_tmp[4]; + + i_right.errlActions = (l_tmp[1] >> 16) & 0xFFFF; + i_right.errlSeverity = (l_tmp[1] >> 8) & 0xFF; + i_right.serviceActionCounter = (l_tmp[1] ) & 0xFF; + + i_right.DUMP = (l_tmp[2] >> 31) & 0x01; + i_right.UERE = (l_tmp[2] >> 30) & 0x01; + i_right.SUE = (l_tmp[2] >> 29) & 0x01; + i_right.AT_THRESHOLD = (l_tmp[2] >> 28) & 0x01; + i_right.DEGRADED = (l_tmp[2] >> 27) & 0x01; + i_right.SERVICE_CALL = (l_tmp[2] >> 26) & 0x01; + i_right.TRACKIT = (l_tmp[2] >> 25) & 0x01; + i_right.TERMINATE = (l_tmp[2] >> 24) & 0x01; + i_right.LOGIT = (l_tmp[2] >> 23) & 0x01; + i_right.FLOODING = (l_tmp[2] >> 22) & 0x01; + i_right.THERMAL_EVENT = (l_tmp[2] >> 21) & 0x01; + i_right.UNIT_CHECKSTOP = (l_tmp[2] >> 20) & 0x01; + i_right.USING_SAVED_SDC = (l_tmp[2] >> 19) & 0x01; + i_right.LAST_CORE_TERMINATE = (l_tmp[2] >> 18) & 0x01; + i_right.DEFER_DECONFIG = (l_tmp[2] >> 17) & 0x01; + i_right.CM_MODE = (l_tmp[2] >> 16) & 0x01; + + i_right.errorCount = (l_tmp[3] >> 16) & 0xFFFF; + i_right.threshold = (l_tmp[3] ) & 0xFFFF; + + i_right.priAttnType = (l_tmp[4] >> 24) & 0xFF; + i_right.secAttnType = (l_tmp[4] >> 16) & 0xFF; + i_right.prdGardErrType = (l_tmp[4] >> 8) & 0xFF; + i_right.hwasGardState = (l_tmp[4] ) & 0xFF; + + i_left >> i_right.mruListCount; + for ( uint32_t i = 0; i < i_right.mruListCount; i++ ) + i_left >> i_right.mruList[i]; + + i_left >> i_right.hcdbListCount; + for ( uint32_t i = 0; i < i_right.hcdbListCount; i++ ) + i_left >> i_right.hcdbList[i]; + + i_left >> i_right.sigListCount; + for ( uint32_t i = 0; i < i_right.sigListCount; i++ ) + i_left >> i_right.sigList[i]; + + return i_left; + }; + }; struct CaptureDataClass diff --git a/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C b/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C index 421d4fa4b..e1e1358ef 100644 --- a/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C +++ b/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C @@ -74,7 +74,6 @@ char * ThermalFilename = NULL; #endif -PfaData pfaData; bool ErrDataService::terminateOnCheckstop = true; bool previousWasRecovered = false; Timer previousEventTime; @@ -115,7 +114,7 @@ RasServices::~RasServices() void ErrDataService::Initialize() { savedLatentSdc = false; - serviceActionCounter = 0; + iv_serviceActionCounter = 0; } void RasServices::Initialize() @@ -271,7 +270,7 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, bool iplDiagMode = false; bool deferDeconfig = false; - ++serviceActionCounter; + ++iv_serviceActionCounter; uint16_t PRD_Reason_Code = 0; uint32_t dumpPlid = 0; @@ -306,9 +305,8 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, ((!sdc.IsUERE() ) && (!sdc.IsSUE() ) ) { - if //if LtntMck and last recoverable Stored use it. - ((latentMachineCheck || sdc.IsForceLatentCS() ) && - (savedLatentSdc ) ) + // If LtntMck and last recoverable Stored use it. + if ( latentMachineCheck && savedLatentSdc ) { gardErrType = GARD_Func; sdc = latentSdc; @@ -408,8 +406,8 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, severityParm = ERRL_SEV_INFORMATIONAL; actionFlag = (actionFlag | ERRL_ACTION_HIDDEN); } - else if (sdc.IsServiceCall() || //At Thresold - (sdc.IsMpFatal() && sdc.GetCauseAttentionType() != SPECIAL) ) + else if ( sdc.IsServiceCall() || //At Thresold + (sdc.GetCauseAttentionType() != SPECIAL) ) { severityParm = ERRL_SEV_PREDICTIVE; } @@ -432,7 +430,7 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, else if (i_attnType == SPECIAL) { //SMA path on Special attn - if (sdc.IsMpFatal() && (sdc.IsLogging() || sdc.IsServiceCall() ) ) + if ( sdc.IsLogging() || sdc.IsServiceCall() ) { severityParm = ERRL_SEV_UNRECOVERABLE; savedLatentSdc = true; //Save this SDC as Latent SDC @@ -579,37 +577,29 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, //////////////////////////////////////////////////////////////// //Set the PRD Reason Code based on the flags set in the above callout loop. //////////////////////////////////////////////////////////////// - uint16_t SDC_Reason_Code = sdc.GetReasonCode(); - if (SDC_Reason_Code == 0) // If the analysis code has not set its own - // Reason Code. + + if (HW == true && SW == true) { - if (HW == true && SW == true) - { - if (SW_High == true) - PRD_Reason_Code = PRDF_DETECTED_FAIL_SOFTWARE_PROBABLE; - else - PRD_Reason_Code = PRDF_DETECTED_FAIL_HARDWARE_PROBABLE; - } - else if (HW == true && SW == false && SecondLevel == true) - PRD_Reason_Code = PRDF_DETECTED_FAIL_HARDWARE_PROBABLE; - else if (HW == true && SW == false && SecondLevel == false) - PRD_Reason_Code = PRDF_DETECTED_FAIL_HARDWARE; - else if (HW == false && SW == true) - PRD_Reason_Code = PRDF_DETECTED_FAIL_SOFTWARE; + if (SW_High == true) + PRD_Reason_Code = PRDF_DETECTED_FAIL_SOFTWARE_PROBABLE; else - { - // If we get here both HW and SW flags were false. Callout may be - // Second Level Support only, or a procedure not checked in the SW - // flag code. PRD_Reason_Code = PRDF_DETECTED_FAIL_HARDWARE_PROBABLE; - } } + else if (HW == true && SW == false && SecondLevel == true) + PRD_Reason_Code = PRDF_DETECTED_FAIL_HARDWARE_PROBABLE; + else if (HW == true && SW == false && SecondLevel == false) + PRD_Reason_Code = PRDF_DETECTED_FAIL_HARDWARE; + else if (HW == false && SW == true) + PRD_Reason_Code = PRDF_DETECTED_FAIL_SOFTWARE; else - { //Set to Reason Code in SDC, set by the chip analysis code. - PRD_Reason_Code = SDC_Reason_Code; + { + // If we get here both HW and SW flags were false. Callout may be + // Second Level Support only, or a procedure not checked in the SW + // flag code. + PRD_Reason_Code = PRDF_DETECTED_FAIL_HARDWARE_PROBABLE; } - SrcWord7 = i_sdc.GetAttentionType() << 8; + SrcWord7 = i_sdc.GetAttentionType() << 8; SrcWord7 |= i_sdc.GetCauseAttentionType(); //-------------------------------------------------------------------------- @@ -678,7 +668,6 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, // Add each mru/callout to the error log. //************************************************************** fspmrulist = sdc.GetMruList(); - uint32_t calloutcount = fspmrulist.size(); for ( SDC_MRU_LIST::iterator i = fspmrulist.begin(); i < fspmrulist.end(); ++i ) { @@ -757,7 +746,7 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, } #ifndef __HOSTBOOT_MODULE - // FIXME: need to investigate whether or not to add HCDB to Hostboot + // FIXME: RTC 51618 Need to add HCDB to Hostboot //************************************************************** // setChangeState for HomIds in the HCDB change list @@ -768,7 +757,7 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, //FIXME comp_id_t, l_pchipHandle commented to avoid warning //TargetHandle_t l_pchipHandle = (*i).iv_phcdbtargetHandle; // comp_id_t thisCompId = (*i).iv_compType; - hcdb::comp_subtype_t thisCompSubType = (*i).iv_compSubType; + hcdb::comp_subtype_t thisCompSubType = i->compSubType; if (hcdb::SUBTYPE_ANY == thisCompSubType) { //PlatServices::setHcdbChangeState(l_pchipHandle);//FIXME functions commneted for now in wrapper @@ -796,182 +785,39 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, //************************************************************** // Build Dump Flags and PFA5 data //************************************************************** - //MP01 a Start - pfaData.MsDumpLabel[0] = 0x4D532020; //start of MS Dump flags - pfaData.MsDumpLabel[1] = 0x44554D50; // 'MS DUMP' - - TargetHandle_t l_dumpHandle = NULL; -#ifdef __HOSTBOOT_MODULE - sdc.GetDumpRequest( l_dumpHandle ); -#else - hwTableContent l_dumpRequestContent; //not used but needed to call GetDumpRequest - sdc.GetDumpRequest( l_dumpRequestContent, l_dumpHandle ); - pfaData.MsDumpInfo.DumpContent = l_dumpRequestContent; -#endif - - pfaData.MsDumpInfo.DumpId = PlatServices::getHuid(l_dumpHandle); - TYPE l_targetType = PlatServices::getTargetType(l_dumpHandle); - - if (i_sdc.IsMpDumpReq()) - { - pfaData.MP_DUMP_REQ = 1; - } - else - { - pfaData.MP_DUMP_REQ = 0; - } - if (i_sdc.IsMpResetReq()) - { - pfaData.MP_RESET_REQ = 1; - } - else - { - pfaData.MP_RESET_REQ = 0; - } - //Pass Error Log Action Flag to attn handling, so it know what actions to commit - - pfaData.MP_FATAL = (i_sdc.IsMpFatal()==true)? 1:0; - - pfaData.PFA_errlActions = actionFlag; - pfaData.PFA_errlSeverity = severityParm; - - pfaData.REBOOT_MSG = 0; // Not supported?? - pfaData.DUMP = (sdc.IsDump()==true)? 1:0; - pfaData.UERE = (sdc.IsUERE()==true)? 1:0; - pfaData.SUE = (sdc.IsSUE()==true)? 1:0; - pfaData.CRUMB = (sdc.MaybeCrumb()==true)? 1:0; - pfaData.AT_THRESHOLD = (sdc.IsAtThreshold()==true)? 1:0; - pfaData.DEGRADED = (sdc.IsDegraded()==true)? 1:0; - pfaData.SERVICE_CALL = (sdc.IsServiceCall()==true)? 1:0; - pfaData.TRACKIT = (sdc.IsMfgTracking()==true)? 1:0; - pfaData.TERMINATE = (sdc.Terminate()==true)? 1:0; - pfaData.LOGIT = (sdc.IsLogging()==true)? 1:0; - pfaData.MEMORY_STEERED = (sdc.IsMemorySteered()==true)? 1:0; - pfaData.FLOODING = (sdc.IsFlooding()==true)? 1:0; - - pfaData.ErrorCount = sdc.GetHits(); - pfaData.PRDServiceActionCounter = serviceActionCounter; - pfaData.Threshold = sdc.GetThreshold(); - pfaData.ErrorType = prdGardErrType; - pfaData.homGardState = gardState; - pfaData.PRD_AttnTypes = i_attnType; - pfaData.PRD_SecondAttnTypes = i_sdc.GetCauseAttentionType(); - pfaData.THERMAL_EVENT = (sdc.IsThermalEvent()==true)? 1:0; - pfaData.UNIT_CHECKSTOP = (sdc.IsUnitCS()==true)? 1:0; - pfaData.USING_SAVED_SDC = (sdc.IsUsingSavedSdc()==true)? 1:0; - pfaData.FORCE_LATENT_CS = (i_sdc.IsForceLatentCS()==true)? 1:0; - pfaData.DEFER_DECONFIG = (deferDeconfig==true)? 1:0; - pfaData.CM_MODE = 0; //FIXME RTC 50063 - pfaData.TERMINATE_ON_CS = (terminateOnCheckstop==true)? 1:0; - pfaData.reasonCode = sdc.GetReasonCode(); - pfaData.PfaCalloutCount = calloutcount; - - // First clear out the PFA Callout list from previous SRC - for (uint32_t j = 0; j < MruListLIMIT; ++j) - { - pfaData.PfaCalloutList[j].Callout = 0; - pfaData.PfaCalloutList[j].MRUtype = 0; - pfaData.PfaCalloutList[j].MRUpriority = 0; - } - - // Build the mru list into PFA data Callout list - uint32_t n = 0; - fspmrulist = sdc.GetMruList(); - for ( SDC_MRU_LIST::iterator i = fspmrulist.begin(); - i < fspmrulist.end(); ++i ) - { - if ( n < MruListLIMIT ) - { - pfaData.PfaCalloutList[n].MRUpriority = (uint8_t)(*i).priority; - pfaData.PfaCalloutList[n].Callout = i->callout.flatten(); - pfaData.PfaCalloutList[n].MRUtype = i->callout.getType(); - - ++n; - } - } -#ifndef __HOSTBOOT_MODULE - // FIXME: need to investigate whether or not we need to add HCDB support in Hostboot - // First clear out the HCDB from previous SRC - for (uint32_t j = 0; j < HcdbListLIMIT; ++j) - { - pfaData.PfaHcdbList[j].hcdbId = 0;//Resetting entity path - pfaData.PfaHcdbList[j].compSubType = 0; - pfaData.PfaHcdbList[j].compType = 0; - pfaData.PfaHcdbList[j].hcdbReserved1 = 0; - pfaData.PfaHcdbList[j].hcdbReserved2 = 0; - } - - // Build the HCDB list into PFA data - n = 0; - hcdbList = sdc.GetHcdbList(); - pfaData.hcdbListCount = hcdbList.size(); - for (HCDB_CHANGE_LIST::iterator i = hcdbList.begin(); i < hcdbList.end(); ++i) - { - if (n < HcdbListLIMIT) - { - pfaData.PfaHcdbList[n].hcdbId = PlatServices::getHuid((*i).iv_phcdbtargetHandle); - pfaData.PfaHcdbList[n].compSubType = (*i).iv_compSubType; - pfaData.PfaHcdbList[n].compType = (*i).iv_compType; - ++n; - } - else - break; - } - // Set flag so we know to parse the hcdb data - pfaData.HCDB_SUPPORT = 1; -#endif // if not __HOSTBOOT_MODULE + PfaData pfaData; + TargetHandle_t dumpTrgt = NULL; - PRDF_SIGNATURES signatureList = sdc.GetSignatureList(); - // First clear out the HCDB from previous SRC - for (uint32_t j = 0; j < SignatureListLIMIT; ++j) - { - pfaData.PfaSignatureList[j].chipId = 0;//Resetting the chipPath - pfaData.PfaSignatureList[j].signature = 0; - } + initPfaData( sdc, i_attnType, deferDeconfig, actionFlag, severityParm, + prdGardErrType, gardState, pfaData, dumpTrgt ); - // Build the signature list into PFA data - n = 0; - signatureList = sdc.GetSignatureList(); - pfaData.signatureCount = signatureList.size(); - for (PRDF_SIGNATURES::iterator i = signatureList.begin(); i < signatureList.end(); ++i) - { - if (n < SignatureListLIMIT) - { - pfaData.PfaSignatureList[n].chipId = PlatServices::getHuid((*i).iv_pSignatureHandle); - pfaData.PfaSignatureList[n].signature = (*i).iv_signature; - ++n; - } - else - break; - } - // Set flag so we know to parse the hcdb data - pfaData.SIGNATURE_SUPPORT = 1; + HUID dumpId = pfaData.msDumpInfo.id; + TYPE dumpTrgtType = getTargetType( dumpTrgt ); //************************************************************** // Check for Unit CheckStop. // Check for Last Functional Core. // PFA data updates for these item. //************************************************************** - pfaData.LAST_CORE_TERMINATE = false; + // Now the check is for Unit Check Stop and Dump ID for Processor // Skip the termination on Last Core if this is a Saved SDC - if (sdc.IsUnitCS() && (!sdc.IsUsingSavedSdc() ) ) + if ( sdc.IsUnitCS() && !sdc.IsUsingSavedSdc() ) { - PRDF_TRAC( PRDF_FUNC"Unit CS, Func HUID: %x, TargetType: %x", - pfaData.MsDumpInfo.DumpId, l_targetType ); - if (TYPE_CORE == l_targetType) + PRDF_TRAC( PRDF_FUNC"Unit CS on HUID: 0x%08x", dumpId ); + + if ( TYPE_CORE == dumpTrgtType ) { - //Check if this is last functional core - if ( PlatServices::checkLastFuncCore(l_dumpHandle) ) + // Check if this is last functional core + if ( PlatServices::checkLastFuncCore(dumpTrgt) ) { - PRDF_TRAC( PRDF_FUNC"Last Func Core: %x was true.", - PlatServices::getHuid(l_dumpHandle) ); + PRDF_TRAC(PRDF_FUNC"Last Functional Core HUID: 0x%08x", dumpId); + ForceTerminate = true; pfaData.LAST_CORE_TERMINATE = true; - o_errl->setSev(ERRL_SEV_UNRECOVERABLE); //Update Errl Severity - //Update PFA data - pfaData.PFA_errlSeverity = ERRL_SEV_UNRECOVERABLE; + o_errl->setSev(ERRL_SEV_UNRECOVERABLE); + pfaData.errlSeverity = ERRL_SEV_UNRECOVERABLE; } } } @@ -1023,7 +869,7 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, { //For Manufacturing Mode terminate, change the action flags for Thermal Event. actionFlag = (ERRL_ACTION_SA | ERRL_ACTION_REPORT | ERRL_ACTION_CALL_HOME); } - pfaData.PFA_errlActions = actionFlag; + pfaData.errlActions = actionFlag; } @@ -1126,13 +972,12 @@ will also be removed. Need to confirm if this code is required anymore. delete o_errl; o_errl = NULL; } - else if ( !ReturnELog && !ForceTerminate && - !i_sdc.IsMpFatal() && !i_sdc.Terminate() ) + else if ( !ReturnELog && !ForceTerminate && !i_sdc.Terminate() ) { // Check to see if we need to do a Proc Core dump if ( sdc.IsUnitCS() && !sdc.IsUsingSavedSdc() ) { - if ( l_targetType == TYPE_PROC ) + if ( dumpTrgtType == TYPE_PROC ) { // NX Unit Checktop - runtime deconfig each accelerator int32_t l_rc = SUCCESS; @@ -1154,23 +999,23 @@ will also be removed. Need to confirm if this code is required anymore. if ( SUCCESS == l_rc ) { l_rc = PRDF_HWUDUMP( o_errl, CONTENT_HWNXLCL, - pfaData.MsDumpInfo.DumpId ); + dumpId ); } } - else if (l_targetType == TYPE_MEMBUF || - l_targetType == TYPE_MBA || - l_targetType == TYPE_MCS) + else if (dumpTrgtType == TYPE_MEMBUF || + dumpTrgtType == TYPE_MBA || + dumpTrgtType == TYPE_MCS) { // Centaur Checkstop - TargetHandle_t centaurHandle = l_dumpHandle; - if ( TYPE_MCS == l_targetType ) + TargetHandle_t centaurHandle = dumpTrgt; + if ( TYPE_MCS == dumpTrgtType ) { - centaurHandle = getConnectedChild( l_dumpHandle, + centaurHandle = getConnectedChild( dumpTrgt, TYPE_MEMBUF, 0 ); } - else if ( TYPE_MBA == l_targetType ) + else if ( TYPE_MBA == dumpTrgtType ) { - centaurHandle = getConnectedParent( l_dumpHandle, + centaurHandle = getConnectedParent( dumpTrgt, TYPE_MEMBUF ); } @@ -1180,29 +1025,29 @@ will also be removed. Need to confirm if this code is required anymore. if ( SUCCESS != l_rc ) { PRDF_ERR( PRDF_FUNC"runtime deconfig failed 0x%08x", - pfaData.MsDumpInfo.DumpId ); + dumpId ); } // No unit dump for Centaur checkstop } } else { - int32_t l_rc = PRDF_RUNTIME_DECONFIG( l_dumpHandle ); + int32_t l_rc = PRDF_RUNTIME_DECONFIG( dumpTrgt ); if ( SUCCESS == l_rc ) { // Call Dump for Proc Core CS - if ( TYPE_CORE == l_targetType ) + if ( TYPE_CORE == dumpTrgtType ) { l_rc = PRDF_HWUDUMP( o_errl, CONTENT_SINGLE_CORE_CHECKSTOP, - pfaData.MsDumpInfo.DumpId ); + dumpId ); } // FIXME: Will need to add Centaur DMI channel checkstop // support later. else { PRDF_ERR( PRDF_FUNC"Unsupported dump for target 0x%08x", - pfaData.MsDumpInfo.DumpId ); + dumpId ); } } } @@ -1212,9 +1057,7 @@ will also be removed. Need to confirm if this code is required anymore. // Need to move below here since we'll need // to pass o_errl to PRDF_HWUDUMP // for FSP specific SRC handling in the future -#ifndef __HOSTBOOT_MODULE - MnfgTrace(esig); -#endif + MnfgTrace( esig, pfaData ); PRDF_GET_PLID(o_errl, dumpPlid); @@ -1251,9 +1094,7 @@ will also be removed. Need to confirm if this code is required anymore. else { -#ifndef __HOSTBOOT_MODULE - MnfgTrace(esig); -#endif + MnfgTrace( esig, pfaData ); PRDF_DTRAC( PRDF_FUNC"generating a terminating, or MP Fatal SRC" ); if (ForceTerminate && sdc.IsThermalEvent() ) //MP42 a Start @@ -1346,7 +1187,6 @@ will also be removed. Need to confirm if this code is required anymore. PRDF_DTRAC( "PRDTRACE: Flag Values" ); if ( sdc.IsSUE() ) PRDF_DTRAC( "PRDTRACE: SUE Flag Set" ); if ( sdc.IsUERE() ) PRDF_DTRAC( "PRDTRACE: UERE Flag Set" ); - if ( sdc.MaybeCrumb() ) PRDF_DTRAC( "PRDTRACE: Check for PCI Crumb" ); if ( sdc.IsAtThreshold() ) PRDF_DTRAC( "PRDTRACE: AT_THRESHOLD" ); if ( sdc.IsDegraded() ) PRDF_DTRAC( "PRDTRACE: Performance is degraded" ); @@ -1359,7 +1199,6 @@ will also be removed. Need to confirm if this code is required anymore. if ( sdc.Terminate() ) PRDF_DTRAC( "PRDTRACE: BRING DOWN MACHINE" ); if ( sdc.IsLogging() ) PRDF_DTRAC( "PRDTRACE: Create history log entry" ); if ( sdc.IsFlooding() ) PRDF_DTRAC( "PRDTRACE: Flooding detected" ); - if ( sdc.IsMemorySteered() ) PRDF_DTRAC( "PRDTRACE: Memory steered" ); return o_errl; @@ -1368,78 +1207,178 @@ will also be removed. Need to confirm if this code is required anymore. //------------------------------------------------------------------------------ -#ifndef __HOSTBOOT_MODULE -void ErrDataService::MnfgTrace(ErrorSignature * l_esig ) +void ErrDataService::initPfaData( ServiceDataCollector & i_sdc, + uint32_t i_attnType, bool i_deferDeconfig, + uint32_t i_errlAct, uint32_t i_errlSev, + uint32_t i_prdGardType, uint32_t i_gardState, + PfaData & o_pfa, TargetHandle_t & o_dumpTrgt ) { - char * MnfgFilename = NULL; - uint32_t l_size = 0; - const char * MnfgKey[] = {"fstp/P0_Root"}; + // Dump info + o_pfa.msDumpLabel[0] = 0x4D532020; // Start of MS Dump flags + o_pfa.msDumpLabel[1] = 0x44554D50; // 'MS DUMP' - if ( PlatServices::mfgMode() ) + // FIXME: RTC 51618 Need add DUMP support in Hostboot +#ifdef __HOSTBOOT_MODULE + i_sdc.GetDumpRequest( o_dumpTrgt ); +#else + hwTableContent dumpContent; + i_sdc.GetDumpRequest( dumpContent, o_dumpTrgt ); + o_pfa.msDumpInfo.content = dumpContent; +#endif + + o_pfa.msDumpInfo.id = getHuid(o_dumpTrgt); + + // Error log actions and severity + o_pfa.errlActions = i_errlAct; + o_pfa.errlSeverity = i_errlSev; + + // PRD Service Data Collector Flags (1:true, 0:false) + o_pfa.DUMP = i_sdc.IsDump() ? 1 : 0; + o_pfa.UERE = i_sdc.IsUERE() ? 1 : 0; + o_pfa.SUE = i_sdc.IsSUE() ? 1 : 0; + o_pfa.AT_THRESHOLD = i_sdc.IsAtThreshold() ? 1 : 0; + o_pfa.DEGRADED = i_sdc.IsDegraded() ? 1 : 0; + o_pfa.SERVICE_CALL = i_sdc.IsServiceCall() ? 1 : 0; + o_pfa.TRACKIT = i_sdc.IsMfgTracking() ? 1 : 0; + o_pfa.TERMINATE = i_sdc.Terminate() ? 1 : 0; + o_pfa.LOGIT = i_sdc.IsLogging() ? 1 : 0; + o_pfa.FLOODING = i_sdc.IsFlooding() ? 1 : 0; + o_pfa.THERMAL_EVENT = i_sdc.IsThermalEvent() ? 1 : 0; + o_pfa.UNIT_CHECKSTOP = i_sdc.IsUnitCS() ? 1 : 0; + o_pfa.LAST_CORE_TERMINATE = false; // Will be set later, if needed. + o_pfa.USING_SAVED_SDC = i_sdc.IsUsingSavedSdc() ? 1 : 0; + o_pfa.DEFER_DECONFIG = i_deferDeconfig ? 1 : 0; + o_pfa.CM_MODE = 0; //FIXME RTC 50063 + + // Thresholding + o_pfa.errorCount = i_sdc.GetHits(); + o_pfa.threshold = i_sdc.GetThreshold(); + + // Misc + o_pfa.serviceActionCounter = iv_serviceActionCounter; + o_pfa.prdGardErrType = i_prdGardType; + o_pfa.hwasGardState = i_gardState; + + // Attention types + o_pfa.priAttnType = i_attnType; + o_pfa.secAttnType = i_sdc.GetCauseAttentionType(); + + // Build the MRU list into PFA data. + SDC_MRU_LIST fspmrulist = i_sdc.GetMruList(); + uint32_t i; // Iterator used to set limited list count. + for ( i = 0; i < fspmrulist.size() && i < MruListLIMIT; i++ ) { - errlHndl_t errorLog = UtilReg::path(MnfgKey, 1, "prdfMfgErrors", - MnfgFilename, l_size); - if (errorLog == NULL) - { - UtilFile l_mfgFile; - l_mfgFile.Open(MnfgFilename,"a+"); - - char l_string[100]; - uint32_t signature = l_esig->getSigId(); - HUID sigChip = l_esig->getChipId(); - - // Get Entity Path String - TargetHandle_t l_ptempHandle = PlatServices::getTarget(sigChip); - TARGETING::EntityPath path; - PlatServices::getEntityPath(l_ptempHandle, path, - EntityPath::PATH_PHYSICAL); - char *epStr = path.toString(); - if (epStr) - { - snprintf(l_string, 100, "%s, ", path.toString()); - free(epStr); - } + o_pfa.mruList[i].callout = fspmrulist[i].callout.flatten(); + o_pfa.mruList[i].type = fspmrulist[i].callout.getType(); + o_pfa.mruList[i].priority = (uint8_t)fspmrulist[i].priority; + } + o_pfa.mruListCount = i; - l_mfgFile.write(l_string, strlen(l_string)); + // FIXME: RTC 51618 Need add HCDB support in Hostboot +#ifdef __HOSTBOOT_MODULE + o_pfa.hcdbListCount = 0; +#else - // Write Signature - snprintf(l_string, 100, "0x%08x, 0x%08x, ", sigChip, signature); - l_mfgFile.write(l_string, strlen(l_string)); + // Build the HCDB list into PFA data + HCDB_CHANGE_LIST hcdbList = i_sdc.GetHcdbList(); + for ( i = 0; i < hcdbList.size() && i < HcdbListLIMIT; i++ ) + { + o_pfa.hcdbList[i].hcdbId = getHuid(hcdbList[i].target); + o_pfa.hcdbList[i].compSubType = hcdbList[i].compSubType; + o_pfa.hcdbList[i].compType = hcdbList[i].compType; + } + o_pfa.hcdbListCount = i; - // Write chip ECID data - PlatServices::getECIDString(l_ptempHandle, l_string); - l_mfgFile.write(l_string, strlen(l_string)); +#endif // __HOSTBOOT_MODULE - // Write MRU list - uint32_t n = 0; - while ( (n < MruListLIMIT ) && (n < pfaData.PfaCalloutCount) ) - { - snprintf(l_string, 100, " , %08x", pfaData.PfaCalloutList[n].Callout); - l_mfgFile.write(l_string, strlen(l_string)); - ++n; - } - snprintf(l_string, 100, "\n"); - l_mfgFile.write(l_string, 1); + // Build the signature list into PFA data + PRDF_SIGNATURES sigList = i_sdc.GetSignatureList(); + for ( i = 0; i < sigList.size() && i < SigListLIMIT; i++ ) + { + o_pfa.sigList[i].chipId = getHuid(sigList[i].target); + o_pfa.sigList[i].signature = sigList[i].signature; + } + o_pfa.sigListCount = i; - l_mfgFile.Close(); +} + +//------------------------------------------------------------------------------ + +void ErrDataService::MnfgTrace( ErrorSignature * i_esig, + const PfaData & i_pfaData ) +{ +#ifndef __HOSTBOOT_MODULE + // TODO: RTC 79440 Need to add Hostboot support for this function. + + do + { + if ( !PlatServices::mfgMode() ) break; // Nothing to do + + char * MnfgFilename = NULL; + uint32_t l_size = 0; + const char * MnfgKey[] = {"fstp/P0_Root"}; + + errlHndl_t errl = UtilReg::path( MnfgKey, 1, "prdfMfgErrors", + MnfgFilename, l_size ); + if ( NULL != errl ) + { + PRDF_ERR( "[ErrDataService::MnfgTrace] UtilReg::path() failed" ); + PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT ); + break; } - else + + UtilFile l_mfgFile; + l_mfgFile.Open(MnfgFilename,"a+"); + + char l_string[100]; + uint32_t signature = i_esig->getSigId(); + HUID sigChip = i_esig->getChipId(); + + // Get Entity Path String + TargetHandle_t l_ptempHandle = PlatServices::getTarget(sigChip); + TARGETING::EntityPath path; + PlatServices::getEntityPath(l_ptempHandle, path, + EntityPath::PATH_PHYSICAL); + char *epStr = path.toString(); + if (epStr) { - PRDF_ERR( "PRDTRACE: MnfgTrace Failure in getting file path" ); - PRDF_COMMIT_ERRL(errorLog, ERRL_ACTION_REPORT); + snprintf(l_string, 100, "%s, ", path.toString()); + free(epStr); } - } - if (MnfgFilename != NULL) - { //need to free the pathname - free(MnfgFilename); - MnfgFilename = NULL; - } + l_mfgFile.write(l_string, strlen(l_string)); - return; + // Write Signature + snprintf(l_string, 100, "0x%08x, 0x%08x, ", sigChip, signature); + l_mfgFile.write(l_string, strlen(l_string)); + + // Write chip ECID data + PlatServices::getECIDString(l_ptempHandle, l_string); + l_mfgFile.write(l_string, strlen(l_string)); + + // Write MRU list + uint32_t n = 0; + while ( (n < MruListLIMIT ) && (n < i_pfaData.mruListCount) ) + { + snprintf( l_string, 100, " , %08x", i_pfaData.mruList[n].callout ); + l_mfgFile.write( l_string, strlen(l_string) ); + ++n; + } + snprintf(l_string, 100, "\n"); + l_mfgFile.write(l_string, 1); + + l_mfgFile.Close(); + + if (MnfgFilename != NULL) + { //need to free the pathname + free(MnfgFilename); + MnfgFilename = NULL; + } + + } while (0); -} #endif // if not __HOSTBOOT_MODULE +} //------------------------------------------------------------------------------ diff --git a/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.H b/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.H index 8f98e48e4..349f7ac6a 100644 --- a/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.H +++ b/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.H @@ -31,10 +31,10 @@ #include <xspprdService.h> #include <errlentry.H> #include <iipServiceDataCollector.h> +#include <prdfPfa5Data.h> #ifndef __HOSTBOOT_MODULE #include <tmgt.H> - #include <prdfPfa5Data.h> //for PfaCalloutListStruct #endif namespace PRDF @@ -64,7 +64,7 @@ class ErrDataService inline ErrDataService() : loggingBufferFull(false), savedLatentSdc(false), - serviceActionCounter(0), + iv_serviceActionCounter(0), savedPrdReturnCode(0) {} @@ -175,17 +175,26 @@ class ErrDataService */ bool SdcRetrieve(sdcSaveFlagsEnum i_saveFlag, void * o_buffer); + #endif // end if not __HOSTBOOT_MODULE + /** - @brief Add Trace Data to File for Manufacturing. - @param[in] ErrorSignature - @return None. - @pre None. - @post None. - @exception None. + * @brief Add trace data to file for Manufacturing. + * @param i_esig Error signature. + * @param i_pfaData The PFA data. */ - void MnfgTrace(ErrorSignature * l_esig); + void MnfgTrace( ErrorSignature * i_esig, const PfaData & i_pfaData ); - #endif // end if not __HOSTBOOT_MODULE + /** + * @brief Initializes the PFA data. + * @param i_sdc The service data collector. + * @param o_pfa The PFA data struct. + * @param o_dumpTrgt The DUMP target. + */ + void initPfaData( ServiceDataCollector & i_sdc, + uint32_t i_attnType, bool i_deferDeconfig, + uint32_t i_errlAct, uint32_t i_errlSev, + uint32_t i_prdGardType, uint32_t i_gardState, + PfaData & o_pfa, TARGETING::TargetHandle_t & o_dumpTrgt ); private: @@ -193,7 +202,7 @@ class ErrDataService bool latentMachineCheck; bool savedLatentSdc; - uint32_t serviceActionCounter; + uint32_t iv_serviceActionCounter; int32_t savedPrdReturnCode; diff --git a/src/usr/diag/prdf/common/framework/service/prdfServiceDataCollector.C b/src/usr/diag/prdf/common/framework/service/prdfServiceDataCollector.C index f822fb992..625e6aa15 100755 --- a/src/usr/diag/prdf/common/framework/service/prdfServiceDataCollector.C +++ b/src/usr/diag/prdf/common/framework/service/prdfServiceDataCollector.C @@ -35,6 +35,7 @@ #include <prdfTrace.H> #undef prdfServiceDataCollector_C +using namespace TARGETING; //------------------------------------------------------------------------------ // User Types, Constants, macros, prototypes, globals @@ -157,29 +158,38 @@ void ServiceDataCollector::SetCallout( PRDcallout mru, //------------------------------------------------------------------------------ -void ServiceDataCollector::AddSignatureList(TARGETING::TargetHandle_t i_pTargetHandle, - uint32_t i_signature) +void ServiceDataCollector::AddSignatureList( TargetHandle_t i_target, + uint32_t i_signature ) { - bool found = false; - if(NULL == i_pTargetHandle) - { - PRDF_ERR(" ServiceDataCollector::AddSignatureList could not add invalid target "); - return; - } - for(PRDF_SIGNATURES::iterator i = iv_SignatureList.begin(); - i != iv_SignatureList.end(); i++) + #define PRDF_FUNC "[ServiceDataCollector::AddSignatureList] " + + do { - if((i->iv_pSignatureHandle == i_pTargetHandle) && - (i->iv_signature == i_signature)) + if ( NULL == i_target ) { - found = true; + PRDF_ERR( PRDF_FUNC"Given target is NULL" ); break; } - } - if(found == false) - { - iv_SignatureList.push_back(SignatureList(i_pTargetHandle, i_signature)); - } + + bool found = false; + for ( PRDF_SIGNATURES::iterator i = iv_SignatureList.begin(); + i != iv_SignatureList.end(); i++ ) + { + if ( (i->target == i_target) && (i->signature == i_signature) ) + { + found = true; + break; + } + } + + if ( !found ) + { + iv_SignatureList.push_back( SignatureList(i_target, i_signature) ); + } + + } while (0); + + #undef PRDF_FUNC } //------------------------------------------------------------------------------ @@ -232,23 +242,22 @@ uint32_t ServiceDataCollector::Flatten(uint8_t * i_buffer, uint32_t & io_size) c for(HCDB_CHANGE_LIST::const_iterator i = iv_HcdbChangeList.begin(); i != iv_HcdbChangeList.end(); ++i) { - buffer_append(current_ptr,(TARGETING::TargetHandle_t)i->iv_phcdbtargetHandle); - buffer_append(current_ptr,(uint32_t)i->iv_compSubType); - buffer_append(current_ptr,(uint32_t)i->iv_compType); + buffer_append( current_ptr, i->target ); + buffer_append( current_ptr, (uint32_t)i->compSubType ); + buffer_append( current_ptr, (uint32_t)i->compType ); } buffer_append(current_ptr, iv_SignatureList.size()); for(PRDF_SIGNATURES::const_iterator i = iv_SignatureList.begin(); i != iv_SignatureList.end(); ++i) { - buffer_append(current_ptr,(TARGETING::TargetHandle_t)i->iv_pSignatureHandle); - buffer_append(current_ptr,(uint32_t)i->iv_signature); + buffer_append( current_ptr, i->target ); + buffer_append( current_ptr, i->signature ); } buffer_append(current_ptr,maskId); buffer_append(current_ptr,(uint32_t)attentionType); buffer_append(current_ptr,flags); buffer_append(current_ptr,hitCount); buffer_append(current_ptr,threshold); - buffer_append(current_ptr,reasonCode); buffer_append(current_ptr,startingPoint); buffer_append(current_ptr,(uint32_t)errorType); //@ecdf - Removed ivDumpRequestType. @@ -334,7 +343,6 @@ ServiceDataCollector & ServiceDataCollector::operator=( flags = buffer_get32(i_flatdata); //mp02 c from buffer_get16 hitCount = buffer_get8(i_flatdata); threshold = buffer_get8(i_flatdata); - reasonCode = buffer_get16(i_flatdata); //mp04 a startingPoint = buffer_getTarget(i_flatdata); errorType = (GardResolution::ErrorType)buffer_get32(i_flatdata); ivDumpRequestContent = (hwTableContent) buffer_get32(i_flatdata); //@ecdf @@ -360,37 +368,45 @@ ServiceDataCollector & ServiceDataCollector::operator=( //------------------------------------------------------------------------------ -void ServiceDataCollector::AddChangeForHcdb(TARGETING::TargetHandle_t i_pTargetHandle , - hcdb::comp_subtype_t i_testType, - comp_id_t i_compType) +void ServiceDataCollector::AddChangeForHcdb( TargetHandle_t i_target, + hcdb::comp_subtype_t i_testType, + comp_id_t i_compType ) { - bool found = false; - //Ensuring the handles are valid before pushing to the list - if(NULL == i_pTargetHandle) - { - PRDF_ERR(" ServiceDataCollector::AddChangeForHcdb could not add invalid target "); - return; - } + #define PRDF_FUNC "[ServiceDataCollector::AddChangeForHcdb] " - for(HCDB_CHANGE_LIST::iterator i = iv_HcdbChangeList.begin(); - i != iv_HcdbChangeList.end(); i++) + do { - if((i->iv_phcdbtargetHandle ==i_pTargetHandle) && - (i->iv_compSubType == i_testType) && - (i->iv_compType == i_compType)) + if ( NULL == i_target ) { - found = true; + PRDF_ERR( PRDF_FUNC"Given target is NULL" ); break; } - } - if(found == false) - { - iv_HcdbChangeList.push_back( HcdbChangeItem(i_pTargetHandle, i_testType, - i_compType) ); - } + + bool found = false; + for ( HCDB_CHANGE_LIST::iterator i = iv_HcdbChangeList.begin(); + i != iv_HcdbChangeList.end(); i++ ) + { + if ( (i->target == i_target ) && + (i->compSubType == i_testType) && + (i->compType == i_compType) ) + { + found = true; + break; + } + } + + if ( !found ) + { + iv_HcdbChangeList.push_back( HcdbChangeItem(i_target, i_testType, + i_compType) ); + } + + } while (0); + + #undef PRDF_FUNC } + #endif // #ifndef __HOSTBOOT_MODULE -//------------------------------------------------------------------------------ } // end namespace PRDF diff --git a/src/usr/diag/prdf/common/framework/service/xspprdsdbug.C b/src/usr/diag/prdf/common/framework/service/xspprdsdbug.C index 8cc851ff1..02e56715e 100755 --- a/src/usr/diag/prdf/common/framework/service/xspprdsdbug.C +++ b/src/usr/diag/prdf/common/framework/service/xspprdsdbug.C @@ -115,7 +115,7 @@ uint32_t SYSTEM_DEBUG_CLASS::Reinitialize(const AttnList & i_attnList) * @procedure EPUB_PRC_SP_CODE */ PRDF_CREATE_ERRL( g_prd_errlHndl, - ERRL_SEV_DIAGNOSTIC_ERROR1, // error on diagnostic + ERRL_SEV_UNRECOVERABLE, // error on diagnostic ERRL_ETYPE_NOT_APPLICABLE, SRCI_MACH_CHECK, SRCI_NO_ATTR, diff --git a/src/usr/diag/prdf/prdfErrlUtil.H b/src/usr/diag/prdf/prdfErrlUtil.H index 8089cabfb..b402545c5 100644 --- a/src/usr/diag/prdf/prdfErrlUtil.H +++ b/src/usr/diag/prdf/prdfErrlUtil.H @@ -159,7 +159,6 @@ // defines for enums that are not available in hostboot // these ERRL sevs are currently not supported in HB #define ERRL_SEV_PREDICTIVE ERRL_SEV_UNRECOVERABLE -#define ERRL_SEV_DIAGNOSTIC_ERROR1 ERRL_SEV_UNRECOVERABLE #define ERRL_SEV_RECOVERED ERRL_SEV_INFORMATIONAL /** |