summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf
diff options
context:
space:
mode:
authorSachin Gupta <sgupta2m@in.ibm.com>2014-01-02 17:05:17 +0530
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-01-15 13:34:04 -0600
commit3300ea03c0f4b7f7cb9e72ce526c78bb11dd2e80 (patch)
treee9e105614797ac29320e47c169d8bb01c3be2df2 /src/usr/diag/prdf
parent1ab4153d61cc2790f390de822b4e8b8027439e17 (diff)
downloadtalos-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')
-rwxr-xr-xsrc/usr/diag/prdf/common/framework/config/prdfExtensibleChip.H9
-rwxr-xr-xsrc/usr/diag/prdf/common/framework/rule/prdfRuleChip.C9
-rwxr-xr-xsrc/usr/diag/prdf/common/framework/rule/prdfRuleChip.H9
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Membuf.rule4
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Proc.rule6
-rw-r--r--src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C23
-rw-r--r--src/usr/diag/prdf/common/plat/pegasus/prdfP8LaneRprExtraSig.H33
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
OpenPOWER on IntegriCloud