summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Schwartz <whs@us.ibm.com>2014-02-23 07:16:29 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-02-27 12:29:40 -0600
commit490b05ed93567d09c3ba820628465157406b2892 (patch)
tree913b75a31f6e3ab413f7fb90632cc5312d25edb8
parent437a64cad1173a43409724e2d599a71494819b48 (diff)
downloadblackbird-hostboot-490b05ed93567d09c3ba820628465157406b2892.tar.gz
blackbird-hostboot-490b05ed93567d09c3ba820628465157406b2892.zip
Capture bad DQs as FFDC in mnfg error logs
Add a clean bad dq bitmap with spare and ECC bits and the current (get) or proposed updates (set) bad dq bitmap to the mnfg error log. Change-Id: I0822f7526891dc167f0be558bd342551d75980f1 RTC: 97781 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9078 Reviewed-by: MIKE J. JONES <mjjones@us.ibm.com> Reviewed-by: Donald E. Dahle <dedahle@us.ibm.com> Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
-rw-r--r--src/usr/hwpf/hwp/dimmBadDqBitmapAccessHwp.C46
-rw-r--r--src/usr/hwpf/hwp/dimm_errors.xml30
2 files changed, 72 insertions, 4 deletions
diff --git a/src/usr/hwpf/hwp/dimmBadDqBitmapAccessHwp.C b/src/usr/hwpf/hwp/dimmBadDqBitmapAccessHwp.C
index 613b3d731..bcf5deef9 100644
--- a/src/usr/hwpf/hwp/dimmBadDqBitmapAccessHwp.C
+++ b/src/usr/hwpf/hwp/dimmBadDqBitmapAccessHwp.C
@@ -20,8 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-
-// $Id: dimmBadDqBitmapAccessHwp.C,v 1.12 2014/01/14 22:01:08 mjjones Exp $
+// $Id: dimmBadDqBitmapAccessHwp.C,v 1.14 2014/02/24 22:17:22 whs Exp $
/**
* @file dimmBadDqBitmapAccessHwp.C
*
@@ -49,6 +48,8 @@
* ATTR_VPD_DIMM_SPARE
* smcprek 01/14/2014 Perform Reconfig Loop on
* Bad DQ set
+ * whs 02/24/2014 Capture bad DQs as FFDC
+ * in mnfg error logs
*/
#include <dimmBadDqBitmapAccessHwp.H>
@@ -332,6 +333,7 @@ fapi::ReturnCode dimmBadDqBitmapGet(
if (i_allMnfgFlags &
fapi::ENUM_ATTR_MNFG_FLAGS_MNFG_DISABLE_DRAM_REPAIRS)
{
+
// Flag to set if the discrepancies (described below)
// are found
bool mfgModeBadBitsPresent = false;
@@ -397,6 +399,22 @@ fapi::ReturnCode dimmBadDqBitmapGet(
" extra bad bits set for DIMM: %d",
l_dimmPos);
const fapi::Target & DIMM = i_dimm;
+ uint8_t (&CLEAN_BAD_DQ_BITMAP_RANK0)
+ [DIMM_DQ_RANK_BITMAP_SIZE] = l_data[0];
+ uint8_t (&CLEAN_BAD_DQ_BITMAP_RANK1)
+ [DIMM_DQ_RANK_BITMAP_SIZE] = l_data[1];
+ uint8_t (&CLEAN_BAD_DQ_BITMAP_RANK2)
+ [DIMM_DQ_RANK_BITMAP_SIZE] = l_data[2];
+ uint8_t (&CLEAN_BAD_DQ_BITMAP_RANK3)
+ [DIMM_DQ_RANK_BITMAP_SIZE] = l_data[3];
+ uint8_t (&CURRENT_BAD_DQ_BITMAP_RANK0)
+ [DIMM_DQ_RANK_BITMAP_SIZE] = o_data[0];
+ uint8_t (&CURRENT_BAD_DQ_BITMAP_RANK1)
+ [DIMM_DQ_RANK_BITMAP_SIZE] = o_data[1];
+ uint8_t (&CURRENT_BAD_DQ_BITMAP_RANK2)
+ [DIMM_DQ_RANK_BITMAP_SIZE] = o_data[2];
+ uint8_t (&CURRENT_BAD_DQ_BITMAP_RANK3)
+ [DIMM_DQ_RANK_BITMAP_SIZE] = o_data[3];
FAPI_SET_HWP_ERROR(l_rc,
RC_BAD_DQ_MFG_MODE_BITS_FOUND_DURING_GET);
fapiLogError(l_rc);
@@ -576,6 +594,30 @@ fapi::ReturnCode dimmBadDqBitmapSet(
" extra bad bits set for DIMM: %d",
l_dimmPos);
const fapi::Target & DIMM = i_dimm;
+ uint8_t (&CLEAN_BAD_DQ_BITMAP_RANK0)
+ [DIMM_DQ_RANK_BITMAP_SIZE] = l_data[0];
+ uint8_t (&CLEAN_BAD_DQ_BITMAP_RANK1)
+ [DIMM_DQ_RANK_BITMAP_SIZE] = l_data[1];
+ uint8_t (&CLEAN_BAD_DQ_BITMAP_RANK2)
+ [DIMM_DQ_RANK_BITMAP_SIZE] = l_data[2];
+ uint8_t (&CLEAN_BAD_DQ_BITMAP_RANK3)
+ [DIMM_DQ_RANK_BITMAP_SIZE] = l_data[3];
+ uint8_t (&UPDATE_BAD_DQ_BITMAP_RANK0)
+ [DIMM_DQ_RANK_BITMAP_SIZE] =
+ const_cast< uint8_t (&)
+ [DIMM_DQ_RANK_BITMAP_SIZE]>(i_data[0]);
+ uint8_t (&UPDATE_BAD_DQ_BITMAP_RANK1)
+ [DIMM_DQ_RANK_BITMAP_SIZE] =
+ const_cast< uint8_t (&)
+ [DIMM_DQ_RANK_BITMAP_SIZE]>(i_data[1]);
+ uint8_t (&UPDATE_BAD_DQ_BITMAP_RANK2)
+ [DIMM_DQ_RANK_BITMAP_SIZE] =
+ const_cast< uint8_t (&)
+ [DIMM_DQ_RANK_BITMAP_SIZE]>(i_data[2]);
+ uint8_t (&UPDATE_BAD_DQ_BITMAP_RANK3)
+ [DIMM_DQ_RANK_BITMAP_SIZE] =
+ const_cast< uint8_t (&)
+ [DIMM_DQ_RANK_BITMAP_SIZE]>(i_data[3]);
FAPI_SET_HWP_ERROR(l_rc,
RC_BAD_DQ_MFG_MODE_BITS_FOUND_DURING_SET);
fapiLogError(l_rc);
diff --git a/src/usr/hwpf/hwp/dimm_errors.xml b/src/usr/hwpf/hwp/dimm_errors.xml
index 6f8753693..716c94af1 100644
--- a/src/usr/hwpf/hwp/dimm_errors.xml
+++ b/src/usr/hwpf/hwp/dimm_errors.xml
@@ -5,7 +5,7 @@
<!-- -->
<!-- IBM CONFIDENTIAL -->
<!-- -->
-<!-- COPYRIGHT International Business Machines Corp. 2012,2013 -->
+<!-- COPYRIGHT International Business Machines Corp. 2012,2014 -->
<!-- -->
<!-- p1 -->
<!-- -->
@@ -21,7 +21,7 @@
<!-- -->
<!-- IBM_PROLOG_END_TAG -->
<!-- XML file specifying errors generated by DIMM HWPs. -->
-<!-- $Id: dimm_errors.xml,v 1.2 2013/10/03 20:40:53 dedahle Exp $ -->
+<!-- $Id: dimm_errors.xml,v 1.4 2014/02/24 22:17:39 whs Exp $ -->
<hwpErrors>
<!-- *********************************************************************** -->
@@ -54,8 +54,21 @@
A HWP noted additional bad bits in the bad dq bitmap of the
specified DIMM while in the manufacturing DISABLE_DRAM_REPAIRS
mode during a read operation.
+ CLEAN_BAD_DQ_BITMAP represents a bad dq bitmap with the appropriate
+ spare and ECC DQs (if any) set to 1 and all other DQs set to 0.
+ CURRENT_BAD_DQ_BITMAP represents the current bad dq bitmap. Any
+ discrepancies with CLEAN_BAD_DQ_BITMAP are the result of a manufacturing
+ mode process.
</description>
<ffdc>DIMM</ffdc>
+ <ffdc>CLEAN_BAD_DQ_BITMAP_RANK0</ffdc>
+ <ffdc>CLEAN_BAD_DQ_BITMAP_RANK1</ffdc>
+ <ffdc>CLEAN_BAD_DQ_BITMAP_RANK2</ffdc>
+ <ffdc>CLEAN_BAD_DQ_BITMAP_RANK3</ffdc>
+ <ffdc>CURRENT_BAD_DQ_BITMAP_RANK0</ffdc>
+ <ffdc>CURRENT_BAD_DQ_BITMAP_RANK1</ffdc>
+ <ffdc>CURRENT_BAD_DQ_BITMAP_RANK2</ffdc>
+ <ffdc>CURRENT_BAD_DQ_BITMAP_RANK3</ffdc>
<callout>
<target>DIMM</target>
<priority>HIGH</priority>
@@ -68,8 +81,21 @@
A HWP noted an attempt to set additional bad bits in the bad dq bitmap
of the specified DIMM while in the manufacturing DISABLE_DRAM_REPAIRS
mode during a write operation.
+ CLEAN_BAD_DQ_BITMAP represents a bad dq bitmap with the appropriate
+ spare and ECC DQs (if any) set to 1 and all other DQs set to 0.
+ UPDATE_BAD_DQ_BITMAP represents the proposed updates to set. Any
+ discrepancies with CLEAN_BAD_DQ_BITMAP are the result of a manufacturing
+ mode process and should not be made.
</description>
<ffdc>DIMM</ffdc>
+ <ffdc>CLEAN_BAD_DQ_BITMAP_RANK0</ffdc>
+ <ffdc>CLEAN_BAD_DQ_BITMAP_RANK1</ffdc>
+ <ffdc>CLEAN_BAD_DQ_BITMAP_RANK2</ffdc>
+ <ffdc>CLEAN_BAD_DQ_BITMAP_RANK3</ffdc>
+ <ffdc>UPDATE_BAD_DQ_BITMAP_RANK0</ffdc>
+ <ffdc>UPDATE_BAD_DQ_BITMAP_RANK1</ffdc>
+ <ffdc>UPDATE_BAD_DQ_BITMAP_RANK2</ffdc>
+ <ffdc>UPDATE_BAD_DQ_BITMAP_RANK3</ffdc>
<callout>
<target>DIMM</target>
<priority>HIGH</priority>
OpenPOWER on IntegriCloud