summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/diag/prdf/common/plugins')
-rw-r--r--src/usr/diag/prdf/common/plugins/prdfMemLogParse.C25
-rw-r--r--src/usr/diag/prdf/common/plugins/prdfMemoryMruData.H14
2 files changed, 25 insertions, 14 deletions
diff --git a/src/usr/diag/prdf/common/plugins/prdfMemLogParse.C b/src/usr/diag/prdf/common/plugins/prdfMemLogParse.C
index 390178f6e..1518319d1 100644
--- a/src/usr/diag/prdf/common/plugins/prdfMemLogParse.C
+++ b/src/usr/diag/prdf/common/plugins/prdfMemLogParse.C
@@ -2848,17 +2848,22 @@ void initMemMruStrings( MemoryMruData::MemMruMeld i_mm, bool & o_addDramSite,
memset( o_header, '\0', HEADER_SIZE );
memset( o_data, '\0', DATA_SIZE );
- // Get the position info (default MCA).
- const char * compStr = "mca";
+ // Get the position info (default MBA).
+
+ const char * compStr = "mba";
uint8_t nodePos = i_mm.s.nodePos;
- uint8_t chipPos = i_mm.s.procPos;
- uint8_t compPos = i_mm.s.chnlPos;
+ uint8_t chipPos = (i_mm.s.procPos << 3) | i_mm.s.chnlPos;
+ uint8_t compPos = i_mm.s.mbaPos;
- if ( !i_mm.s.isMca ) // MBA
+ if ( i_mm.s.isMca ) // MCA
+ {
+ compStr = "mca";
+ chipPos = i_mm.s.procPos;
+ compPos = i_mm.s.chnlPos;
+ }
+ else if ( i_mm.s.isOcmb ) // OCMB
{
- compStr = "mba";
- chipPos = (i_mm.s.procPos << 3) | i_mm.s.chnlPos;
- compPos = i_mm.s.mbaPos;
+ compStr = "ocmb";
}
// Build the header string.
@@ -2953,13 +2958,13 @@ void addDramSiteString( const MemoryMruData::ExtendedData & i_extMemMru,
}
}
}
- else // IS DIMMs
+ else // Dram site locations not supported
{
// Add DQ info.
char tmp[DATA_SIZE] = { '\0' };
strcat( io_data, "DQ:" );
- if ( mm.s.isMca ) // MCA
+ if ( mm.s.isMca || mm.s.isOcmb ) // MCA, OCMB
{
// There is only one DQ per symbol.
snprintf( tmp, DATA_SIZE, "%d", i_extMemMru.dqMapping[dqIdx] );
diff --git a/src/usr/diag/prdf/common/plugins/prdfMemoryMruData.H b/src/usr/diag/prdf/common/plugins/prdfMemoryMruData.H
index a9a4498d3..f2fdaff26 100644
--- a/src/usr/diag/prdf/common/plugins/prdfMemoryMruData.H
+++ b/src/usr/diag/prdf/common/plugins/prdfMemoryMruData.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2013,2017 */
+/* Contributors Listed Below - COPYRIGHT 2013,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -88,6 +88,10 @@ union MemMruMeld
// version field so that the error log parser know which format to
// used.
+ // NOTE: For OCMBs, specified by the isOcmb field, chnlPos will specify
+ // the MCC position within the proc and mbaPos will specify the
+ // OMI position within the channel.
+
#if !( __BYTE_ORDER == __LITTLE_ENDIAN )
uint32_t valid : 1; ///< Used to indicate nothing failed while
@@ -106,13 +110,15 @@ union MemMruMeld
uint32_t eccSpared : 1; ///< True if symbol is on ECC DRAM
uint32_t srank : 3; ///< Slave rank (0-7)
// If isMca is specified, then chnlPos above will specify the MCA pos
- // and the mbaPos field will be unused
+ // and the mbaPos field will be unused. See above note for OCMB usage.
uint32_t isMca : 1; ///< True if MCA is used as opposed to MBA
- uint32_t unused : 3; ///< 3 Bits currently unused
+ uint32_t isOcmb : 1; ///< True if OCMB is used
+ uint32_t unused : 2; ///< 2 Bits currently unused
#else
// Need to reverse this to make the uint32_t look right in the
// simulator.
- uint32_t unused : 3;
+ uint32_t unused : 2;
+ uint32_t isOcmb : 1;
uint32_t isMca : 1;
uint32_t srank : 3;
uint32_t eccSpared : 1;
OpenPOWER on IntegriCloud