summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2017-07-12 15:12:11 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2017-07-20 14:40:57 -0400
commite43ee27ebd0f6028f74ee51793f4ca00b1fb04b9 (patch)
tree7d1cd0c1a7d2bcc260af1237795e3d0aebc04491 /src
parent93de0bff73604c76348f52cce9fde2021c8a6030 (diff)
downloadtalos-hostboot-e43ee27ebd0f6028f74ee51793f4ca00b1fb04b9.tar.gz
talos-hostboot-e43ee27ebd0f6028f74ee51793f4ca00b1fb04b9.zip
PRD: Update parser for DRAM repairs
Change-Id: I421cd1b1ba5b5e8eecb3e98aae9cc16458282daf RTC: 176880 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43057 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43357 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/usr/diag/prdf/common/plugins/prdfDramRepairUsrData.H12
-rw-r--r--src/usr/diag/prdf/common/plugins/prdfLogParse_common.C8
-rw-r--r--src/usr/diag/prdf/common/plugins/prdfMemLogParse.C54
-rwxr-xr-xsrc/usr/diag/prdf/common/plugins/prdfMemLogParse.H7
4 files changed, 45 insertions, 36 deletions
diff --git a/src/usr/diag/prdf/common/plugins/prdfDramRepairUsrData.H b/src/usr/diag/prdf/common/plugins/prdfDramRepairUsrData.H
index 2a6e67849..6d80a9a87 100755
--- a/src/usr/diag/prdf/common/plugins/prdfDramRepairUsrData.H
+++ b/src/usr/diag/prdf/common/plugins/prdfDramRepairUsrData.H
@@ -45,7 +45,7 @@ namespace FSP
{
#endif
-/* @brief Represent the header information for DRAM Repair data of a MBA
+/* @brief Represent the header information for DRAM Repair data
*/
struct DramRepairDataHdr
{
@@ -151,19 +151,19 @@ struct DramRepairRankData
/** @brief Represent DRAM Repair data of a MBA
*/
-struct DramRepairMbaData
+struct DramRepairUsrData
{
DramRepairDataHdr header;
std::vector<DramRepairRankData> rankDataList;
/**
- * @brief append DramRepairMbaData to UtilStream buffer
+ * @brief append DramRepairUsrData to UtilStream buffer
* @param i_left UtilStream object
* @param i_right DRAM Repair Mba data object
* @return Upddated Utilstream object
*/
friend UtilStream& operator<<( UtilStream& i_left,
- DramRepairMbaData& i_right )
+ DramRepairUsrData& i_right )
{
i_left << i_right.header;
@@ -175,13 +175,13 @@ struct DramRepairMbaData
}
/**
- * @brief Retrieve DramRepairMbaData from UtilStream buffer
+ * @brief Retrieve DramRepairUsrData from UtilStream buffer
* @param i_left UtilStream object
* @param i_right DRAM Repair rank data object
* @return Upddated Utilstream object
*/
friend UtilStream& operator>>( UtilStream& i_left,
- DramRepairMbaData& i_right)
+ DramRepairUsrData& i_right)
{
//Retrieve Header
i_left >> i_right.header;
diff --git a/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C b/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C
index 773f6ef0c..e31f4f712 100644
--- a/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C
+++ b/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C
@@ -433,20 +433,20 @@ bool parseCaptureData( void * i_buffer, uint32_t i_buflen,
parseMemRceTable( sigData, sigDataSize, i_parser );
}
*/
-/* TODO: RTC 164707
else if ( Util::hashString("DRAM_REPAIRS_DATA") == sigId )
{
parseDramRepairsData( sigData, sigDataSize, i_parser );
}
else if ( Util::hashString("DRAM_REPAIRS_VPD") == sigId )
{
- parseDramRepairsVpd( sigData, sigDataSize, i_parser );
+ parseDramRepairsVpd( sigData, sigDataSize, i_parser,
+ l_targetType );
}
else if ( Util::hashString("BAD_DQ_BITMAP") == sigId )
{
- parseBadDqBitmap( sigData, sigDataSize, i_parser );
+ parseBadDqBitmap( sigData, sigDataSize, i_parser,
+ l_targetType );
}
-*/
else if ( (Util::hashString(TD_CTLR_DATA::START) == sigId) ||
(Util::hashString(TD_CTLR_DATA::END) == sigId) )
{
diff --git a/src/usr/diag/prdf/common/plugins/prdfMemLogParse.C b/src/usr/diag/prdf/common/plugins/prdfMemLogParse.C
index 18d61550f..a6fe193ac 100644
--- a/src/usr/diag/prdf/common/plugins/prdfMemLogParse.C
+++ b/src/usr/diag/prdf/common/plugins/prdfMemLogParse.C
@@ -38,7 +38,6 @@
#include <prdfDramRepairUsrData.H>
#include <prdfParserEnums.H>
#include <prdfParserUtils.H>
-#include <attributeenums.H> // For TARGETING::TYPE enum
namespace PRDF
{
@@ -2774,7 +2773,6 @@ uint8_t dqSiteIdx2DramSiteIdx( uint8_t i_dqSiteIdx, bool i_isX4Dram )
// Helper functions
//------------------------------------------------------------------------------
-/* TODO RTC 164707
// Displays symbol value. If symbol is not valid, will display '--' in output.
void getDramRepairSymbolStr( uint8_t i_value, char * o_str, uint32_t i_strSize )
{
@@ -2789,14 +2787,23 @@ void getDramRepairSymbolStr( uint8_t i_value, char * o_str, uint32_t i_strSize )
}
// Gets the string representation for a single bad DQ bitmap entry.
-void getBadDqBitmapEntry( uint8_t * i_buffer, char * o_str )
+void getBadDqBitmapEntry( uint8_t * i_buffer, char * o_str, TYPE i_type )
{
- UtilMem membuf( i_buffer, DQ_BITMAP::ENTRY_SIZE );
+ uint8_t dimmsPerRank = MCA_DIMMS_PER_RANK;
+ uint32_t entrySize = DQ_BITMAP::MCA_ENTRY_SIZE;
+
+ if ( TYPE_MBA == i_type )
+ {
+ dimmsPerRank = MBA_DIMMS_PER_RANK;
+ entrySize = DQ_BITMAP::MBA_ENTRY_SIZE;
+ }
+
+ UtilMem membuf( i_buffer, entrySize );
uint8_t rank; membuf >> rank;
snprintf( o_str, DATA_SIZE, "R:%1d", rank );
- for ( int32_t p = 0; p < MBA_DIMMS_PER_RANK; p++ )
+ for ( int32_t p = 0; p < dimmsPerRank; p++ )
{
char temp[DATA_SIZE];
@@ -2810,7 +2817,6 @@ void getBadDqBitmapEntry( uint8_t * i_buffer, char * o_str )
}
}
}
-*/
//------------------------------------------------------------------------------
// Function definitions
@@ -3234,7 +3240,6 @@ bool parseMemRceTable( uint8_t * i_buffer, uint32_t i_buflen,
//------------------------------------------------------------------------------
-/* TODO RTC 164707
bool parseDramRepairsData( uint8_t * i_buffer, uint32_t i_buflen,
ErrlUsrParser & i_parser )
{
@@ -3244,10 +3249,10 @@ bool parseDramRepairsData( uint8_t * i_buffer, uint32_t i_buflen,
{
UtilMem l_membuf( i_buffer, i_buflen );
- DramRepairMbaData mbaData;
- l_membuf >> mbaData;
+ DramRepairUsrData usrData;
+ l_membuf >> usrData;
- uint8_t rankCount = mbaData.header.rankCount;
+ uint8_t rankCount = usrData.header.rankCount;
i_parser.PrintNumber( " DRAM_REPAIRS_DATA", "%d", rankCount );
@@ -3258,7 +3263,7 @@ bool parseDramRepairsData( uint8_t * i_buffer, uint32_t i_buflen,
char temp[64];
char symbolStr[10];
- DramRepairRankData rankEntry = mbaData.rankDataList[rankIdx];
+ DramRepairRankData rankEntry = usrData.rankDataList[rankIdx];
snprintf(temp, 64, "Rank: %d", rankEntry.rank);
snprintf(data, 64, temp);
@@ -3271,7 +3276,7 @@ bool parseDramRepairsData( uint8_t * i_buffer, uint32_t i_buflen,
snprintf(data, 64, temp);
// Display DRAM spare information if spare DRAM is supported.
- if ( mbaData.header.isSpareDram )
+ if ( usrData.header.isSpareDram )
{
getDramRepairSymbolStr(rankEntry.port0Spare, symbolStr, 10);
snprintf(temp, 64, "%s Sp0: %s", data, symbolStr);
@@ -3283,7 +3288,7 @@ bool parseDramRepairsData( uint8_t * i_buffer, uint32_t i_buflen,
}
// Display ECC spare information for X4 DRAMs
- if ( mbaData.header.isX4Dram )
+ if ( usrData.header.isX4Dram )
{
getDramRepairSymbolStr( rankEntry.eccSpare, symbolStr, 10 );
snprintf(temp, 64, "%s EccSp: %s", data, symbolStr);
@@ -3300,45 +3305,47 @@ bool parseDramRepairsData( uint8_t * i_buffer, uint32_t i_buflen,
return rc;
}
-*/
//------------------------------------------------------------------------------
-/* TODO RTC 164707
bool parseDramRepairsVpd( uint8_t * i_buffer, uint32_t i_buflen,
- ErrlUsrParser & i_parser )
+ ErrlUsrParser & i_parser, TARGETING::TYPE i_type )
{
bool rc = true;
if ( NULL == i_buffer ) return false; // Something failed in parser.
- const uint32_t entries = i_buflen / DQ_BITMAP::ENTRY_SIZE;
+ uint32_t entrySize = DQ_BITMAP::MCA_ENTRY_SIZE;
+ if ( TYPE_MBA == i_type ) entrySize = DQ_BITMAP::MBA_ENTRY_SIZE;
+
+ const uint32_t entries = i_buflen / entrySize;
i_parser.PrintNumber( " DRAM_REPAIRS_VPD", "%d", entries );
for ( uint32_t i = 0; i < entries; i++ )
{
char data[DATA_SIZE];
- getBadDqBitmapEntry( &i_buffer[i*DQ_BITMAP::ENTRY_SIZE], data );
+ getBadDqBitmapEntry( &i_buffer[i*entrySize], data, i_type );
i_parser.PrintString( "", data );
}
return rc;
}
-*/
//------------------------------------------------------------------------------
-/* TODO RTC 164707
bool parseBadDqBitmap( uint8_t * i_buffer, uint32_t i_buflen,
- ErrlUsrParser & i_parser )
+ ErrlUsrParser & i_parser, TARGETING::TYPE i_type )
{
bool rc = true;
if ( NULL == i_buffer ) return false; // Something failed in parser.
- if ( DQ_BITMAP::ENTRY_SIZE > i_buflen ) // Data is expected to be one entry.
+ uint32_t entrySize = DQ_BITMAP::MCA_ENTRY_SIZE;
+ if ( TYPE_MBA == i_type ) entrySize = DQ_BITMAP::MBA_ENTRY_SIZE;
+
+ if ( entrySize > i_buflen ) // Data is expected to be one entry.
{
i_parser.PrintString( " BAD_DQ_BITMAP", "" );
i_parser.PrintHexDump(i_buffer, i_buflen);
@@ -3346,14 +3353,13 @@ bool parseBadDqBitmap( uint8_t * i_buffer, uint32_t i_buflen,
else
{
char data[DATA_SIZE];
- getBadDqBitmapEntry( i_buffer, data );
+ getBadDqBitmapEntry( i_buffer, data, i_type );
i_parser.PrintString( " BAD_DQ_BITMAP", data );
}
return rc;
}
-*/
//------------------------------------------------------------------------------
diff --git a/src/usr/diag/prdf/common/plugins/prdfMemLogParse.H b/src/usr/diag/prdf/common/plugins/prdfMemLogParse.H
index 42ba72e73..5b2e52897 100755
--- a/src/usr/diag/prdf/common/plugins/prdfMemLogParse.H
+++ b/src/usr/diag/prdf/common/plugins/prdfMemLogParse.H
@@ -32,6 +32,7 @@
#include <stdint.h>
#include <prdfMemoryMruData.H>
+#include <attributeenums.H> // For TARGETING::TYPE enum
class ErrlUsrParser;
@@ -110,18 +111,20 @@ bool parseDramRepairsData( uint8_t * i_buffer, uint32_t i_buflen,
* @param i_buffer The data buffer.
* @param i_buflen The buffer length.
* @param i_parser The error log parser.
+ * @param i_type The target type
*/
bool parseDramRepairsVpd( uint8_t * i_buffer, uint32_t i_buflen,
- ErrlUsrParser & i_parser );
+ ErrlUsrParser & i_parser, TARGETING::TYPE i_type );
/**
* @brief Parses Bad DQ Bitmap data (Used in IPL UE isolation).
* @param i_buffer The data buffer.
* @param i_buflen The buffer length.
* @param i_parser The error log parser.
+ * @param i_type The target type
*/
bool parseBadDqBitmap( uint8_t * i_buffer, uint32_t i_buflen,
- ErrlUsrParser & i_parser );
+ ErrlUsrParser & i_parser, TARGETING::TYPE i_type );
/**
* @brief Parses TD Controller state data.
OpenPOWER on IntegriCloud