diff options
| author | Zane Shelley <zshelle@us.ibm.com> | 2015-11-20 15:16:30 -0600 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-12-11 13:01:34 -0600 |
| commit | d52716d1be73b27c3d3f5c3ffb84fef546cb6e45 (patch) | |
| tree | c40bbee95ffdf1cf62b1dd93075eaaa8e7591960 /src/usr/diag/prdf/common/framework/service | |
| parent | 622cb577234c37c6c349f51f569260d9d1205d86 (diff) | |
| download | talos-hostboot-d52716d1be73b27c3d3f5c3ffb84fef546cb6e45.tar.gz talos-hostboot-d52716d1be73b27c3d3f5c3ffb84fef546cb6e45.zip | |
PRD: common interface to add extended MemoryMru FFDC to error log
Change-Id: I8de67b0a41307519809147eb90445ea896df0933
Backport: release-fips840
CQ: SW329405
Depends-on: I8b33dd89e2fb431580b720f06b97b116bc871ce1
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22441
Tested-by: Jenkins Server
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Reviewed-by: BENJAMIN J. WEISENBECK <bweisenb@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Reviewed-by: Zane Shelley <zshelle@us.ibm.com>
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22616
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22684
Tested-by: Jenkins OP Build CI
Diffstat (limited to 'src/usr/diag/prdf/common/framework/service')
| -rw-r--r-- | src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C | 106 |
1 files changed, 20 insertions, 86 deletions
diff --git a/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C b/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C index 77f76587c..84045f93a 100644 --- a/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C +++ b/src/usr/diag/prdf/common/framework/service/prdfRasServices_common.C @@ -37,7 +37,7 @@ #include <prdfCallouts.H> #include <prdfMemoryMru.H> #include <prdfPlatServices.H> -#include <prdfCenLogParse.H> +#include <prdfCenMbaCaptureData.H> // For compression routines #define PRDF_COMPRESSBUFFER_COMPRESS_FUNCTIONS @@ -72,8 +72,6 @@ using namespace TARGETING; - - namespace PRDF { @@ -606,89 +604,6 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, errlSev, l_diagUpdate ); } - - // If we have a valid symbol in the memory MRU object, then we - // should have one DIMM called out that we want the DQ map for. - // If the symbol is not valid, then we will do nothing. If the - // symbol is valid, but we have multiple callouts, then there is - // probably something wrong. - CenSymbol l_cenSymbol = memMru.getSymbol(); - if (l_cenSymbol.isValid()) - { - if (1 == partList.size()) - { - // Will make extra check that we have a DIMM - TARGETING::TYPE l_type; - l_type = getTargetType( partList[0] ); - - if (TARGETING::TYPE_DIMM == l_type) - { - // Will be storing the CEN/IS DIMM indicator, cardtype, - // and the 32 bit memmru prior to the 80 byte mapping - memMruDqInfo l_memData; - memset(&l_memData, 0, sizeof(memMruDqInfo)); - - // Call routine to read the FAPI attribute for DQ map - errlHndl_t l_fapiElog; - l_fapiElog = getFapiDimmDqAttr(partList[0], - &(l_memData.dqMapping[0])); - - if (NULL == l_fapiElog) - { - bool l_bufDimm; - CEN_SYMBOL::WiringType l_cardWireType; - int32_t l_chkRc; - // Get MBA target from DIMM - TargetHandle_t l_mba; - l_mba = getConnectedParent(partList[0], TYPE_MBA); - // Track if centaur or IS DIMM - l_chkRc = isMembufOnDimm(l_mba, l_bufDimm); - l_chkRc |= getMemBufRawCardType(l_mba, - l_cardWireType); - - if (SUCCESS == l_chkRc) - { // Put data into structure - l_memData.bufferedDimm = l_bufDimm; - l_memData.cardType = l_cardWireType; - } - else - { // unable to determine anything - l_memData.cardType = CEN_SYMBOL::WIRING_INVALID; - } - - // Get the 32 bit representation of MemMru - l_memData.memMru32bits = memMru.toUint32(); - - // Get the DRAM width. - l_memData.isX4 = isDramWidthX4( l_mba ) ? 1 : 0; - - // Add mapping to ELOG and parser will print it - PRDF_ADD_FFDC( iv_errl, (const char*)(&l_memData), - sizeof(memMruDqInfo), - ErrlVer1, ErrlMruData_2 ); - } // end if success reading attribute - else - { - PRDF_ERR( PRDF_FUNC "Fail on Read DQ mapping"); - PRDF_COMMIT_ERRL(l_fapiElog, ERRL_ACTION_REPORT); - } // end else error reading attribute - - } // end if DIMM target - else - { - PRDF_ERR( PRDF_FUNC "Not DIMM Target (%08X)", - l_type ); - } // end else NOT DIMM - - } // end if just one part called out - else - { // more than one part called out - PRDF_ERR( PRDF_FUNC "Valid Symbol with multiple parts (%d)", - partList.size() ); - } // end else multiple parts called out with valid symbol - - } // if valid centaur symbol - } else if ( PRDcalloutData::TYPE_SYMFRU == thiscallout.getType() ) { @@ -789,6 +704,25 @@ errlHndl_t ErrDataService::GenerateSrcPfa( ATTENTION_TYPE i_attnType, AddCapData( io_sdc.getTraceArrayData(), iv_errl ); } + //************************************************************************** + // Add extended MemoryMru error log sections (if needed). + //************************************************************************** + + for ( SDC_MRU_LIST::const_iterator it = mruList.begin(); + it < mruList.end(); ++it ) + { + // Operate only on MemoryMru callouts. + if ( PRDcalloutData::TYPE_MEMMRU != it->callout.getType() ) continue; + + // Only add single DIMM callouts. Otherwise, the parsed data is + // redundant. + MemoryMru memMru ( it->callout.flatten() ); + if ( !memMru.getSymbol().isValid() ) continue; + + // Add the MemoryMru to the capture data. + CenMbaCaptureData::addExtMemMruData( memMru, iv_errl ); + } + // Note moved the code from here, that was associated with checking for the last // functional core to be before the PFA data is placed in error log. |

