diff options
| author | Bill Schwartz <whs@us.ibm.com> | 2014-02-23 07:16:29 -0600 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-02-27 12:29:40 -0600 |
| commit | 490b05ed93567d09c3ba820628465157406b2892 (patch) | |
| tree | 913b75a31f6e3ab413f7fb90632cc5312d25edb8 | |
| parent | 437a64cad1173a43409724e2d599a71494819b48 (diff) | |
| download | blackbird-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.C | 46 | ||||
| -rw-r--r-- | src/usr/hwpf/hwp/dimm_errors.xml | 30 |
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> |

