Skip to content

Commit

Permalink
Adjust Bad Dq Translation for CDIMMs
Browse files Browse the repository at this point in the history
Change-Id: I13a512f8cc0257251a6d2bf912697fdfbd639423
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/60839
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com>
Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
  • Loading branch information
cnpalmer authored and zane131 committed Jun 21, 2018
1 parent 323f71e commit bfebff1
Showing 1 changed file with 48 additions and 9 deletions.
57 changes: 48 additions & 9 deletions src/usr/fapi2/attribute_service.C
Original file line number Diff line number Diff line change
Expand Up @@ -704,22 +704,61 @@ ReturnCode __badDqBitmapGetHelperAttrs(
// versions and ensure zero initialized array.
memset( o_wiringData.cumulus, 0, sizeof(o_wiringData.cumulus) );

// Check DIMM type
uint8_t l_dimmType = 0;

Target<TARGET_TYPE_MBA> l_fapiMba =
l_fapiDimm.getParent<TARGET_TYPE_MBA>();
Target<TARGET_TYPE_MEMBUF_CHIP> l_fapiMembuf =
l_fapiMba.getParent<TARGET_TYPE_MEMBUF_CHIP>();

TARGETING::TargetHandle_t l_membuf = nullptr;
errlHndl_t l_errl = getTargetingTarget( l_fapiMembuf, l_membuf );
TARGETING::TargetHandle_t l_mba = nullptr;
errlHndl_t l_errl = getTargetingTarget( l_fapiMba, l_mba );
if ( l_errl )
{
FAPI_ERR( "__badDqBitmapGetHelperAttrs: Error from "
"getTargetingTarget getting Membuf." );
"getTargetingTarget getting MBA." );
l_rc.setPlatDataPtr(reinterpret_cast<void *> (l_errl));
break;
}
//l_rc = FAPI_ATTR_GET( fapi2::ATTR_CEN_VPD_ISDIMMTOC4DQ,
// l_membuf, o_wiringData.cumulus );

l_rc = FAPI_ATTR_GET( fapi2::ATTR_CEN_EFF_CUSTOM_DIMM, l_mba,
l_dimmType );
if ( l_rc )
{
FAPI_ERR( "__badDqBitmapGetHelperAttrs: Error getting "
"fapi2::ATTR_CEN_EFF_CUSTOM_DIMM" );
break;
}

// C-DIMMs return a direct 1:1 mapping
if ( fapi2::ENUM_ATTR_CEN_EFF_CUSTOM_DIMM_YES == l_dimmType )
{
for ( uint8_t port = 0; port < MAX_PORTS_PER_CEN; port++ )
{
for ( uint8_t i = 0; i < DIMM_BAD_DQ_NUM_BYTES; i++ )
{
o_wiringData.cumulus[port][i] = i;
}
}
}
// ISDIMMs require the mapping from ATTR_CEN_VPD_ISDIMMTOC4DQ
else
{
Target<TARGET_TYPE_MEMBUF_CHIP> l_fapiMembuf =
l_fapiMba.getParent<TARGET_TYPE_MEMBUF_CHIP>();

TARGETING::TargetHandle_t l_membuf = nullptr;
errlHndl_t l_errl = getTargetingTarget( l_fapiMembuf,
l_membuf );
if ( l_errl )
{
FAPI_ERR( "__badDqBitmapGetHelperAttrs: Error from "
"getTargetingTarget getting Membuf." );
l_rc.setPlatDataPtr(reinterpret_cast<void *> (l_errl));
break;
}
l_rc = FAPI_ATTR_GET( fapi2::ATTR_CEN_VPD_ISDIMMTOC4DQ,
l_membuf, o_wiringData.cumulus );
}
}
else
{
Expand All @@ -730,8 +769,8 @@ ReturnCode __badDqBitmapGetHelperAttrs(

if ( l_rc )
{
FAPI_ERR( "__badDqBitmapGetHelperAttrs: Unable to read attribute - "
"ATTR_MSS_VPD_DQ_MAP" );
FAPI_ERR( "__badDqBitmapGetHelperAttrs: Unable to read mapping "
"attribute" );
break;
}

Expand Down

0 comments on commit bfebff1

Please sign in to comment.