summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common/framework/service
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2015-11-20 15:16:30 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-12-11 13:01:34 -0600
commitd52716d1be73b27c3d3f5c3ffb84fef546cb6e45 (patch)
treec40bbee95ffdf1cf62b1dd93075eaaa8e7591960 /src/usr/diag/prdf/common/framework/service
parent622cb577234c37c6c349f51f569260d9d1205d86 (diff)
downloadtalos-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.C106
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.
OpenPOWER on IntegriCloud