diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2017-07-24 13:26:11 -0500 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2017-07-27 12:19:01 -0400 |
commit | 0fd2495490d8f71ecd35aca2f85d7b33f0f26d8b (patch) | |
tree | b8cfac94ba90764d4f42fdba551d2b5e55d8ebf5 /src/usr/diag/prdf/common/plat/mem | |
parent | 4c996c92d557b46280ba5cdd93f3d19a1a02efc3 (diff) | |
download | talos-hostboot-0fd2495490d8f71ecd35aca2f85d7b33f0f26d8b.tar.gz talos-hostboot-0fd2495490d8f71ecd35aca2f85d7b33f0f26d8b.zip |
PRD: handle nullptr returned from getConnectedChild()
Change-Id: I6af579583bbe3033df99d6ba2f6e57c7e79166a9
CQ: SW396395
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43556
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43695
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>
Diffstat (limited to 'src/usr/diag/prdf/common/plat/mem')
-rwxr-xr-x | src/usr/diag/prdf/common/plat/mem/prdfMemoryMru.C | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemoryMru.C b/src/usr/diag/prdf/common/plat/mem/prdfMemoryMru.C index f4bbe6648..d063caa10 100755 --- a/src/usr/diag/prdf/common/plat/mem/prdfMemoryMru.C +++ b/src/usr/diag/prdf/common/plat/mem/prdfMemoryMru.C @@ -243,26 +243,29 @@ TargetHandleList MemoryMru::getCalloutList() const } else if ( TARGETING::TYPE_MCA == getTargetType(iv_target) ) { - if ( NO_SPECIAL_CALLOUT != iv_special ) + if ( CALLOUT_ALL_MEM == iv_special ) { - switch ( iv_special ) + o_list = getConnected( iv_target, TYPE_DIMM ); + } + else if ( (CALLOUT_RANK == iv_special) || + (NO_SPECIAL_CALLOUT == iv_special) ) + { + // Rank callouts and symbol callouts both callout a single DIMM. + uint32_t ds = iv_rank.getDimmSlct(); + TargetHandle_t dimm = getConnectedChild( iv_target, + TYPE_DIMM, ds ); + if ( nullptr == dimm ) { - case CALLOUT_RANK: - o_list.push_back(getConnectedChild(iv_target, TYPE_DIMM, - iv_rank.getDimmSlct()) ); - break; - case CALLOUT_ALL_MEM: - o_list = getConnected( iv_target, TYPE_DIMM ); - break; - default: - PRDF_ERR( PRDF_FUNC "MemoryMruData::Callout 0x%02x not " - "supported", iv_special ); + PRDF_ERR( PRDF_FUNC "getConnectedChild(0x%08x,%d) returned " + "nullptr", getHuid(iv_target), ds ); } + else + o_list.push_back( dimm ); } else { - o_list.push_back(getConnectedChild(iv_target, TYPE_DIMM, - iv_rank.getDimmSlct()) ); + PRDF_ERR( PRDF_FUNC "MemoryMruData::Callout 0x%02x not " + "supported", iv_special ); } } else |