diff options
author | Elliott Dahle <dedahle@us.ibm.com> | 2013-07-22 11:07:23 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-07-30 14:44:28 -0500 |
commit | 9319829a92387bc15ab63a5a90710a518e43a453 (patch) | |
tree | 3d3818c368d9cc78ad77f832c7e6a8cc94176d98 /src/usr/hwpf/hwp/dimmBadDqBitmapFuncs.C | |
parent | c600aad20e783024b998a52d17d9d4650b9005a0 (diff) | |
download | talos-hostboot-9319829a92387bc15ab63a5a90710a518e43a453.tar.gz talos-hostboot-9319829a92387bc15ab63a5a90710a518e43a453.zip |
Access Bad DQ via ATTR_BAD_DQ_BITMAP and show unconnected DQs
Change-Id: Id703749de7c08aef337904a2dccac3af2e90a108
RTC: 72937
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/5510
Reviewed-by: Brian H. Horton <brianh@linux.ibm.com>
Tested-by: Jenkins Server
Reviewed-by: William H. Schwartz <whs@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/dimmBadDqBitmapFuncs.C')
-rw-r--r-- | src/usr/hwpf/hwp/dimmBadDqBitmapFuncs.C | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/src/usr/hwpf/hwp/dimmBadDqBitmapFuncs.C b/src/usr/hwpf/hwp/dimmBadDqBitmapFuncs.C index 788ee3223..67a4f5640 100644 --- a/src/usr/hwpf/hwp/dimmBadDqBitmapFuncs.C +++ b/src/usr/hwpf/hwp/dimmBadDqBitmapFuncs.C @@ -31,6 +31,9 @@ * Flag Defect/Feature User Date Description * ------ -------------- ---------- ----------- ---------------------------- * mjjones 02/17/2012 Created. + * dedahle 06/20/2013 dimmGetBadDqBitmap/ + * dimmSetBadDqBitmap funcs + * get/set ATTR_BAD_DQ_BITMAP */ #include <dimmBadDqBitmapFuncs.H> @@ -39,16 +42,6 @@ extern "C" { -// TODO -// For the dimmGetBadDqBitmap and dimmSetBadDqBitmap funcs, the original plan to -// get/set the bitmap was to get/set a HWPF attribute called ATTR_BAD_DQ_BITMAP. -// This would automatically call the dimmBadDqBitmapAccessHwp HWP which would -// access the ATTR_SPD_BAD_DQ_DATA HWPF attribute and decode the data. However, -// automatically bridging an attribute request to a HWP turns out to be -// difficult due to the fact that the FAPI_ATTR_GET macro returns a ReturnCode -// and the FAPI_EXEC_HWP macro takes a ReturnCode as parameter. For now call the -// HWP directly and revisit later - //------------------------------------------------------------------------------ // Utility function to check parameters and find a DIMM target @@ -158,20 +151,21 @@ fapi::ReturnCode dimmGetBadDqBitmap(const fapi::Target & i_mba, if (!l_rc) { - // Get the Bad DQ bitmap by calling the dimmBadDqBitmapAccessHwp HWP. + // Get the Bad DQ bitmap by querying ATTR_BAD_DQ_BITMAP. // Use a heap based array to avoid large stack alloc uint8_t (&l_dqBitmap)[DIMM_DQ_MAX_DIMM_RANKS][DIMM_DQ_RANK_BITMAP_SIZE] = *(reinterpret_cast<uint8_t(*)[DIMM_DQ_MAX_DIMM_RANKS][DIMM_DQ_RANK_BITMAP_SIZE]> (new uint8_t[DIMM_DQ_MAX_DIMM_RANKS*DIMM_DQ_RANK_BITMAP_SIZE])); - FAPI_EXEC_HWP(l_rc, dimmBadDqBitmapAccessHwp, l_dimm, l_dqBitmap, true); + l_rc = FAPI_ATTR_GET(ATTR_BAD_DQ_BITMAP, &l_dimm, l_dqBitmap); if (l_rc) { - FAPI_ERR("dimmGetBadDqBitmap: Error from dimmBadDqBitmapAccessHwp"); + FAPI_ERR("dimmGetBadDqBitmap: Error getting ATTR_BAD_DQ_BITMAP for dimm"); } else { + //Write contents of DQ bitmap for specific rank to o_data. memcpy(o_data, l_dqBitmap[i_rank], DIMM_DQ_RANK_BITMAP_SIZE); } @@ -200,28 +194,28 @@ fapi::ReturnCode dimmSetBadDqBitmap( if (!l_rc) { - // Get the Bad DQ bitmap by calling the dimmBadDqBitmapAccessHwp HWP. + // Get the Bad DQ bitmap by querying ATTR_BAD_DQ_BITMAP. // Use a heap based array to avoid large stack alloc uint8_t (&l_dqBitmap)[DIMM_DQ_MAX_DIMM_RANKS][DIMM_DQ_RANK_BITMAP_SIZE] = *(reinterpret_cast<uint8_t(*)[DIMM_DQ_MAX_DIMM_RANKS][DIMM_DQ_RANK_BITMAP_SIZE]> (new uint8_t[DIMM_DQ_MAX_DIMM_RANKS*DIMM_DQ_RANK_BITMAP_SIZE])); - FAPI_EXEC_HWP(l_rc, dimmBadDqBitmapAccessHwp, l_dimm, l_dqBitmap, true); + l_rc = FAPI_ATTR_GET(ATTR_BAD_DQ_BITMAP, &l_dimm, l_dqBitmap); if (l_rc) { - FAPI_ERR("dimmSetBadDqBitmap: Error from dimmBadDqBitmapAccessHwp (get)"); + FAPI_ERR("dimmSetBadDqBitmap: Error getting ATTR_BAD_DQ_BITMAP for dimm"); } else { // Add the rank bitmap to the DIMM bitmap and write the bitmap memcpy(l_dqBitmap[i_rank], i_data, DIMM_DQ_RANK_BITMAP_SIZE); - FAPI_EXEC_HWP(l_rc, dimmBadDqBitmapAccessHwp, l_dimm, l_dqBitmap, false); + l_rc = FAPI_ATTR_SET(ATTR_BAD_DQ_BITMAP, &l_dimm, l_dqBitmap); if (l_rc) { - FAPI_ERR("dimmSetBadDqBitmap: Error from dimmBadDqBitmapAccessHwp (set)"); + FAPI_ERR("dimmSetBadDqBitmap: Error setting ATTR_BAD_DQ_BITMAP for dimm"); } } |