From ef1d51e2367509e8570c6a7a3c6d37cd5c8512d7 Mon Sep 17 00:00:00 2001 From: Caleb Palmer Date: Mon, 22 Jan 2018 10:27:24 -0600 Subject: Bad DQ bits compare ECC and spare fix Change-Id: Icec7f3af255e3ea0240e61b78bfbd274e6d3e8c6 CQ: SW414844 Backport: release-op910 Backport: release-fips910 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52374 Tested-by: Jenkins Server Reviewed-by: Brian J. Stegmiller Reviewed-by: Benjamin J. Weisenbeck Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins Reviewed-by: Zane C. Shelley --- src/usr/fapi2/attribute_service.C | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/usr/fapi2/attribute_service.C') diff --git a/src/usr/fapi2/attribute_service.C b/src/usr/fapi2/attribute_service.C index 1a1a62b31..0e8d47659 100644 --- a/src/usr/fapi2/attribute_service.C +++ b/src/usr/fapi2/attribute_service.C @@ -1214,8 +1214,27 @@ ReturnCode fapiAttrSetBadDqBitmap( uint8_t l_eccSpareBitmap[mss::MAX_RANK_PER_DIMM] [mss::BAD_DQ_BYTE_COUNT]; + uint8_t l_tmpData[mss::MAX_RANK_PER_DIMM][mss::BAD_DQ_BYTE_COUNT]; + memcpy( &l_tmpData, &i_data, sizeof(i_data) ); + + l_errl = __dimmUpdateDqBitmapEccByte( l_dimmTarget, l_tmpData ); + if ( l_errl ) + { + FAPI_ERR( "fapiAttrSetBadDqBitmap: Error getting ECC data." ); + l_rc.setPlatDataPtr(reinterpret_cast (l_errl)); + break; + } + + l_rc = __dimmUpdateDqBitmapSpareByte( l_dimmTarget, l_tmpData ); + if ( l_rc ) + { + FAPI_ERR( "fapiAttrSetBadDqBitmap: Error getting spare DRAM " + "data." ); + break; + } + l_rc = __compareEccAndSpare( l_dimmTarget, mfgModeBadBitsPresent, - i_data, l_eccSpareBitmap ); + l_tmpData, l_eccSpareBitmap ); if ( l_rc ) { FAPI_ERR( "fapiAttrSetBadDqBitmap: Error comparing " -- cgit v1.2.1