diff options
author | Sachin Gupta <sgupta2m@in.ibm.com> | 2014-01-02 17:05:17 +0530 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-01-15 13:34:04 -0600 |
commit | 3300ea03c0f4b7f7cb9e72ce526c78bb11dd2e80 (patch) | |
tree | e9e105614797ac29320e47c169d8bb01c3be2df2 /src/usr/diag/prdf | |
parent | 1ab4153d61cc2790f390de822b4e8b8027439e17 (diff) | |
download | talos-hostboot-3300ea03c0f4b7f7cb9e72ce526c78bb11dd2e80.tar.gz talos-hostboot-3300ea03c0f4b7f7cb9e72ce526c78bb11dd2e80.zip |
PRD: Fix error log data bug for eRepair
CQ: SW239962
Change-Id: Ia4ba76c0a7b08711415034072dc1ab6578725341
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7875
Tested-by: Jenkins Server
Reviewed-by: Christopher T. Phan <cphan@us.ibm.com>
Reviewed-by: BENJAMIN J. WEISENBECK <bweisenb@us.ibm.com>
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/8058
Diffstat (limited to 'src/usr/diag/prdf')
7 files changed, 82 insertions, 11 deletions
diff --git a/src/usr/diag/prdf/common/framework/config/prdfExtensibleChip.H b/src/usr/diag/prdf/common/framework/config/prdfExtensibleChip.H index e42fc2461..eb3da8348 100755 --- a/src/usr/diag/prdf/common/framework/config/prdfExtensibleChip.H +++ b/src/usr/diag/prdf/common/framework/config/prdfExtensibleChip.H @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2004,2013 */ +/* COPYRIGHT International Business Machines Corp. 2004,2014 */ /* */ /* p1 */ /* */ @@ -58,6 +58,13 @@ class ExtensibleChip : public CHIP_CLASS virtual int32_t CaptureErrorData( CaptureData & i_cap, int i_group = 1 ) = 0; + /** + * @brief Returns signature offset associated with registes of a + * RuleChip. + * @return Error signature offset + */ + virtual uint32_t getSignatureOffset() = 0; + }; class DataBundle diff --git a/src/usr/diag/prdf/common/framework/rule/prdfRuleChip.C b/src/usr/diag/prdf/common/framework/rule/prdfRuleChip.C index 45e34b555..2c1c86d36 100755 --- a/src/usr/diag/prdf/common/framework/rule/prdfRuleChip.C +++ b/src/usr/diag/prdf/common/framework/rule/prdfRuleChip.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2004,2013 */ +/* COPYRIGHT International Business Machines Corp. 2004,2014 */ /* */ /* p1 */ /* */ @@ -148,5 +148,12 @@ int32_t RuleChip::CaptureErrorData( CaptureData & io_cap,int i_group ) //------------------------------------------------------------------------------ +uint32_t RuleChip::getSignatureOffset() +{ + //this pointer is retained in stack just for the scope of this function + PRDF_DEFINE_CHIP_SCOPE( this ); + return iv_pRuleData->getSignatureOffset(); +} + } // end namespace PRDF diff --git a/src/usr/diag/prdf/common/framework/rule/prdfRuleChip.H b/src/usr/diag/prdf/common/framework/rule/prdfRuleChip.H index a1e55e80e..6f70007c4 100755 --- a/src/usr/diag/prdf/common/framework/rule/prdfRuleChip.H +++ b/src/usr/diag/prdf/common/framework/rule/prdfRuleChip.H @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2004,2013 */ +/* COPYRIGHT International Business Machines Corp. 2004,2014 */ /* */ /* p1 */ /* */ @@ -127,6 +127,13 @@ class RuleChip : public ExtensibleChip DataBundle *& getDataBundle() { return cv_dataBundle; }; /** + * @brief Returns signature offset associated with registes of a + * RuleChip. + * @return Error signature offset + */ + uint32_t getSignatureOffset(); + + /** * @brief Captures register data * @param[io] io_cap reference to instance of CaptureData * @param[in] i_group group id for register capture group diff --git a/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule b/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule index 9fab60ab6..4c4317f10 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule @@ -5,7 +5,7 @@ # # IBM CONFIDENTIAL # -# COPYRIGHT International Business Machines Corp. 2012,2013 +# COPYRIGHT International Business Machines Corp. 2012,2014 # # p1 # @@ -46,7 +46,9 @@ chip Membuf dump DUMP_CONTENT_HWSUPERNOVA; scomlen 64; +# Include Extra signatures .include "prdfCenMembufExtraSig.H"; +.include "prdfP8LaneRprExtraSig.H"; ############################################################################# # # diff --git a/src/usr/diag/prdf/common/plat/pegasus/Proc.rule b/src/usr/diag/prdf/common/plat/pegasus/Proc.rule index 4628ceb40..e13dcea30 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Proc.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Proc.rule @@ -5,7 +5,7 @@ # # IBM CONFIDENTIAL # -# COPYRIGHT International Business Machines Corp. 2012,2013 +# COPYRIGHT International Business Machines Corp. 2012,2014 # # p1 # @@ -48,6 +48,10 @@ chip Proc dump DUMP_CONTENT_HW; scomlen 64; + +# Include Extra signatures +.include "prdfP8LaneRprExtraSig.H"; + ############################################################################# # # # ###### # diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C b/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C index 6626465b1..02724fa67 100644 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2013 */ +/* COPYRIGHT International Business Machines Corp. 2013,2014 */ /* */ /* p1 */ /* */ @@ -38,6 +38,7 @@ #include <prdfCalloutUtil.H> #include <prdfCenMembufDataBundle.H> #include <prdfP8McsDataBundle.H> +#include <prdfP8LaneRprExtraSig.H> using namespace TARGETING; @@ -122,10 +123,12 @@ int32_t handleLaneRepairEvent( ExtensibleChip * i_chip, // Add failed lane capture data to errorlog i_sc.service_data->GetCaptureData().Add(i_chip->GetChipHandle(), - Util::hashString("NEW_FAILED_LANES_0TO63"), + ( Util::hashString("NEW_FAILED_LANES_0TO63") ^ + i_chip->getSignatureOffset() ), l_newLaneMap0to63); i_sc.service_data->GetCaptureData().Add(i_chip->GetChipHandle(), - Util::hashString("NEW_FAILED_LANES_64TO127"), + ( Util::hashString("NEW_FAILED_LANES_64TO127") ^ + i_chip->getSignatureOffset() ), l_newLaneMap64to127); if (!mfgMode()) // Don't read/write VPD in mfg mode @@ -158,11 +161,13 @@ int32_t handleLaneRepairEvent( ExtensibleChip * i_chip, // Add failed lane capture data to errorlog i_sc.service_data->GetCaptureData().Add(i_chip->GetChipHandle(), - Util::hashString("VPD_FAILED_LANES_0TO63"), + ( Util::hashString("VPD_FAILED_LANES_0TO63") ^ + i_chip->getSignatureOffset() ), l_vpdLaneMap0to63); i_sc.service_data->GetCaptureData().Add(i_chip->GetChipHandle(), - Util::hashString("VPD_FAILED_LANES_64TO127"), - l_vpdLaneMap64to127); + ( Util::hashString("VPD_FAILED_LANES_64TO127") ^ + i_chip->getSignatureOffset() ), + l_vpdLaneMap64to127); if (i_spareDeployed) { @@ -197,6 +202,11 @@ int32_t handleLaneRepairEvent( ExtensibleChip * i_chip, getHuid(rxBusTgt), getHuid(txBusTgt) ); break; } + if( thrExceeded ) + { + i_sc.service_data->SetErrorSig( + PRDFSIG_ERepair_FWThrExceeded ); + } } } @@ -250,6 +260,7 @@ int32_t handleLaneRepairEvent( ExtensibleChip * i_chip, PRDF_ERR( PRDF_FUNC"i_chip: 0x%08x i_busType:%d i_busPos:%d", i_chip->GetId(), i_busType, i_busPos ); + i_sc.service_data->SetErrorSig( PRDFSIG_ERepair_ERROR ); CalloutUtil::defaultError( i_sc ); } diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfP8LaneRprExtraSig.H b/src/usr/diag/prdf/common/plat/pegasus/prdfP8LaneRprExtraSig.H new file mode 100644 index 000000000..7022bc26e --- /dev/null +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfP8LaneRprExtraSig.H @@ -0,0 +1,33 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/diag/prdf/common/plat/pegasus/prdfP8LaneRprExtraSig.H $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* COPYRIGHT International Business Machines Corp. 2013,2014 */ +/* */ +/* p1 */ +/* */ +/* Object Code Only (OCO) source materials */ +/* Licensed Internal Code Source Materials */ +/* IBM HostBoot Licensed Internal Code */ +/* */ +/* The source code for this program is not published or otherwise */ +/* divested of its trade secrets, irrespective of what has been */ +/* deposited with the U.S. Copyright Office. */ +/* */ +/* Origin: 30 */ +/* */ +/* IBM_PROLOG_END_TAG */ + +#ifndef __prdfP8LaneRprExtraSig_H +#define __prdfP8LaneRprExtraSig_H + +#include <prdrSignatures.H> + +PRDR_ERROR_SIGNATURE( ERepair_ERROR, 0xffff0000, "","ERepair Internal error" ); +PRDR_ERROR_SIGNATURE( ERepair_FWThrExceeded, 0xffff0001, "", + "ERepair FW threshold exceeded" ); + +#endif // __prdfP8LaneRprExtraSig_H |