diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2013-08-22 15:20:14 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-09-18 13:55:30 -0500 |
commit | 61bd30cddc44108ea1f1cc72527f2ea52fd3f7e5 (patch) | |
tree | 5313bcd91b5209948808ea08bc008c5a98c69023 /src | |
parent | d62e12b822f62d13127aa83f7f319eafa70c89d7 (diff) | |
download | blackbird-hostboot-61bd30cddc44108ea1f1cc72527f2ea52fd3f7e5.tar.gz blackbird-hostboot-61bd30cddc44108ea1f1cc72527f2ea52fd3f7e5.zip |
PRD: support for slave ranks in memory
Change-Id: Ica91679b5ce688f2ccfab07137174696871aea60
RTC: 77146
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/5975
Tested-by: Jenkins Server
Reviewed-by: Prem Shanker Jha <premjha2@in.ibm.com>
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Reviewed-by: Christopher T. Phan <cphan@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.austin.ibm.com:8080/gerrit/6229
Diffstat (limited to 'src')
18 files changed, 284 insertions, 178 deletions
diff --git a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C index fed697795..f2dc9753a 100755 --- a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C +++ b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.C @@ -60,14 +60,6 @@ namespace PlatServices { //############################################################################## -//## Forward references -//############################################################################## - -int32_t getMemAddrRange( TargetHandle_t i_mba, uint8_t i_rank, - ecmdDataBufferBase & o_startAddr, - ecmdDataBufferBase & o_endAddr ); - -//############################################################################## //## Utility Functions (for this file only) //############################################################################## @@ -128,7 +120,7 @@ int32_t readErepair(TargetHandle_t i_rxBusTgt, getFapiTarget(i_rxBusTgt), o_rxFailLanes); - if(NULL != err) + if(NULL != err) { PRDF_ERR( "[PlatServices::readErepair] HUID: 0x%08x io_read_erepair " "failed", getHuid(i_rxBusTgt) ); @@ -234,25 +226,104 @@ int32_t setVpdFailedLanes(TargetHandle_t i_rxBusTgt, int32_t erepairFirIsolation(TargetHandle_t i_rxBusTgt) { + #define PRDF_FUNC "[PlatServices::erepairFirIsolation] " + errlHndl_t err = NULL; PRD_FAPI_TO_ERRL(err, io_fir_isolation, getFapiTarget(i_rxBusTgt)); if(NULL != err) { - PRDF_TRAC( "[PlatServices::setVpdFailedLanes] rxHUID: 0x%08x " - "committing io_fir_isolation log", + PRDF_ERR( PRDF_FUNC"rxHUID: 0x%08x committing io_fir_isolation log", getHuid(i_rxBusTgt)); PRDF_COMMIT_ERRL( err, ERRL_ACTION_REPORT ); } // Return SUCCESS since we expect this procedure to generate an error return SUCCESS; + + #undef PRDF_FUNC } + //############################################################################## //## Memory specific functions //############################################################################## +// Helper function for the for several other memory functions. +int32_t getMemAddrRange( TargetHandle_t i_mba, uint8_t i_mrank, + ecmdDataBufferBase & o_startAddr, + ecmdDataBufferBase & o_endAddr, + uint8_t i_srank = 0, bool i_slaveOnly = false ) +{ + #define PRDF_FUNC "[PlatServices::getMemAddrRange] " + + int32_t o_rc = SUCCESS; + + do + { + // Check parameters. + if ( TYPE_MBA != getTargetType(i_mba) ) + { + PRDF_ERR( PRDF_FUNC"The given target is not TYPE_MBA" ); + o_rc = FAIL; break; + } + + if ( (MSS_ALL_RANKS != i_mrank && MASTER_RANKS_PER_MBA <= i_mrank) || + (SLAVE_RANKS_PER_MASTER_RANK <= i_srank) ) + { + PRDF_ERR( PRDF_FUNC"The given rank is not valid" ); + o_rc = FAIL; break; + } + + errlHndl_t errl = NULL; + + if ( i_slaveOnly ) + { + // TODO: RTC 82157 Use new interface when available, for now use + // current interface. +// PRD_FAPI_TO_ERRL( errl, mss_get_address_range, getFapiTarget(i_mba), +// i_mrank, i_srank, o_startAddr, o_endAddr ); + PRD_FAPI_TO_ERRL( errl, mss_get_address_range, getFapiTarget(i_mba), + i_mrank, o_startAddr, o_endAddr ); + } + else + { + PRD_FAPI_TO_ERRL( errl, mss_get_address_range, getFapiTarget(i_mba), + i_mrank, o_startAddr, o_endAddr ); + } + + if ( NULL != errl ) + { + PRDF_ERR( PRDF_FUNC"mss_get_address_range() failed" ); + PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT ); + o_rc = FAIL; break; + } + + // Verify addresses are of the valid register size. + if ( 64 != o_startAddr.getBitLength() || + 64 != o_endAddr.getBitLength() ) + { + PRDF_ERR( PRDF_FUNC"Addresses returned from " + "mss_get_address_range() are not 64-bit" ); + o_rc = FAIL; break; + } + + } while (0); + + if ( SUCCESS != o_rc ) + { + PRDF_ERR( PRDF_FUNC"Failed: i_mba=0x%08x i_mrank=%d i_srank=%d " + "i_slaveOnly=%s", getHuid(i_mba), i_mrank, i_srank, + i_slaveOnly ? "true" : "false" ); + } + + return o_rc; + + #undef PRDF_FUNC +} + +//------------------------------------------------------------------------------ + int32_t getBadDqBitmap( TargetHandle_t i_mba, const CenRank & i_rank, CenDqBitmap & o_bitmap, bool i_allowNoDimm ) { @@ -338,19 +409,20 @@ int32_t setBadDqBitmap( TargetHandle_t i_mba, const CenRank & i_rank, int32_t mssGetMarkStore( TargetHandle_t i_mba, const CenRank & i_rank, CenMark & o_mark ) { + #define PRDF_FUNC "[PlatServices::mssGetMarkStore] " + int32_t o_rc = SUCCESS; errlHndl_t errl = NULL; uint8_t symbolMark, chipMark; PRD_FAPI_TO_ERRL( errl, mss_get_mark_store, getFapiTarget(i_mba), - i_rank.flatten(), symbolMark, chipMark ); + i_rank.getMaster(), symbolMark, chipMark ); if ( NULL != errl ) { - PRDF_ERR( "[PlatServices::mssGetMarkStore] mss_get_mark_store() " - "failed. HUID: 0x%08x rank: %d", - getHuid(i_mba), i_rank.flatten() ); + PRDF_ERR( PRDF_FUNC"mss_get_mark_store() failed. HUID: 0x%08x rank: %d", + getHuid(i_mba), i_rank.getMaster() ); PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT ); o_rc = FAIL; } @@ -360,6 +432,8 @@ int32_t mssGetMarkStore( TargetHandle_t i_mba, const CenRank & i_rank, } return o_rc; + + #undef PRDF_FUNC } //------------------------------------------------------------------------------ @@ -380,7 +454,7 @@ int32_t mssSetMarkStore( TargetHandle_t i_mba, const CenRank & i_rank, : MSS_INVALID_SYMBOL; fapi::ReturnCode l_rc = mss_put_mark_store( getFapiTarget(i_mba), - i_rank.flatten(), symbolMark, + i_rank.getMaster(), symbolMark, chipMark ); if ( i_allowWriteBlocked && @@ -395,7 +469,7 @@ int32_t mssSetMarkStore( TargetHandle_t i_mba, const CenRank & i_rank, { PRDF_ERR( PRDF_FUNC"mss_put_mark_store() failed. HUID: 0x%08x " "rank: %d sm: %d cm: %d", getHuid(i_mba), - i_rank.flatten(), symbolMark, chipMark ); + i_rank.getMaster(), symbolMark, chipMark ); PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT ); o_rc = FAIL; } @@ -418,13 +492,13 @@ int32_t mssGetSteerMux( TargetHandle_t i_mba, const CenRank & i_rank, uint8_t port0Spare, port1Spare, eccSpare; PRD_FAPI_TO_ERRL( errl, mss_check_steering, getFapiTarget(i_mba), - i_rank.flatten(), port0Spare, port1Spare, eccSpare ); + i_rank.getMaster(), port0Spare, port1Spare, eccSpare ); if ( NULL != errl ) { PRDF_ERR( "[PlatServices::mssGetSteerMux] mss_check_steering() " "failed. HUID: 0x%08x rank: %d", - getHuid(i_mba), i_rank.flatten() ); + getHuid(i_mba), i_rank.getMaster() ); PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT ); o_rc = FAIL; } @@ -448,13 +522,13 @@ int32_t mssSetSteerMux( TargetHandle_t i_mba, const CenRank & i_rank, errlHndl_t errl = NULL; PRD_FAPI_TO_ERRL( errl, mss_do_steering, getFapiTarget(i_mba), - i_rank.flatten(), i_symbol.getSymbol(), i_x4EccSpare ); + i_rank.getMaster(), i_symbol.getSymbol(), i_x4EccSpare ); if ( NULL != errl ) { PRDF_ERR( "[PlatServices::mssSetSteerMux] mss_do_steering " "failed. HUID: 0x%08x rank: %d symbol: %d eccSpare: %c", - getHuid(i_mba), i_rank.flatten(), i_symbol.getSymbol(), + getHuid(i_mba), i_rank.getMaster(), i_symbol.getSymbol(), i_x4EccSpare ? 'T' : 'F' ); PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT ); o_rc = FAIL; @@ -468,12 +542,13 @@ int32_t mssSetSteerMux( TargetHandle_t i_mba, const CenRank & i_rank, int32_t getMemAddrRange( TargetHandle_t i_mba, CenAddr & o_startAddr, CenAddr & o_endAddr ) { + #define PRDF_FUNC "[PlatServices::getMemAddrRange] " + ecmdDataBufferBase startAddr(64), endAddr(64); int32_t o_rc = getMemAddrRange( i_mba, MSS_ALL_RANKS, startAddr, endAddr ); if ( SUCCESS != o_rc ) { - PRDF_ERR( "[PlatServices::getMemAddrRange] failed: i_mba=0x%08x", - getHuid(i_mba) ); + PRDF_ERR( PRDF_FUNC"Failed: i_mba=0x%08x", getHuid(i_mba) ); } else { @@ -482,19 +557,27 @@ int32_t getMemAddrRange( TargetHandle_t i_mba, CenAddr & o_startAddr, } return o_rc; + + #undef PRDF_FUNC } //------------------------------------------------------------------------------ int32_t getMemAddrRange( TargetHandle_t i_mba, const CenRank & i_rank, - CenAddr & o_startAddr, CenAddr & o_endAddr ) + CenAddr & o_startAddr, CenAddr & o_endAddr, + bool i_slaveOnly ) { + #define PRDF_FUNC "[PlatServices::getMemAddrRange] " + ecmdDataBufferBase startAddr(64), endAddr(64); - int32_t o_rc = getMemAddrRange(i_mba, i_rank.flatten(), startAddr, endAddr); + int32_t o_rc = getMemAddrRange( i_mba, i_rank.getMaster(), + startAddr, endAddr, + i_rank.getSlave(), i_slaveOnly ); if ( SUCCESS != o_rc ) { - PRDF_ERR( "[PlatServices::getMemAddrRange] failed: i_mba=0x%08x " - "i_rank=%d", getHuid(i_mba), i_rank.flatten() ); + PRDF_ERR( PRDF_FUNC"Failed: i_mba=0x%08x i_rank=M%dS%d i_slaveOnly=%s", + getHuid(i_mba), i_rank.getMaster(), i_rank.getSlave(), + i_slaveOnly ? "true" : "false" ); } else { @@ -503,6 +586,8 @@ int32_t getMemAddrRange( TargetHandle_t i_mba, const CenRank & i_rank, } return o_rc; + + #undef PRDF_FUNC } //------------------------------------------------------------------------------ @@ -611,61 +696,6 @@ int32_t mss_MaintCmdWrapper::cleanupCmd() //------------------------------------------------------------------------------ -// Helper function for the createMssCmd() functions. -int32_t getMemAddrRange( TargetHandle_t i_mba, uint8_t i_rank, - ecmdDataBufferBase & o_startAddr, - ecmdDataBufferBase & o_endAddr ) -{ - #define PRDF_FUNC "[PlatServices::getMemAddrRange] " - - int32_t o_rc = SUCCESS; - - do - { - // Check parameters. - if ( TYPE_MBA != getTargetType(i_mba) ) - { - PRDF_ERR( PRDF_FUNC"The given target is not TYPE_MBA" ); - o_rc = FAIL; break; - } - - if ( MSS_ALL_RANKS != i_rank && MAX_RANKS_PER_MBA <= i_rank ) - { - PRDF_ERR( PRDF_FUNC"The given rank is not valid" ); - o_rc = FAIL; break; - } - - errlHndl_t errl = NULL; - PRD_FAPI_TO_ERRL( errl, mss_get_address_range, getFapiTarget(i_mba), - i_rank, o_startAddr, o_endAddr ); - if ( NULL != errl ) - { - PRDF_ERR( PRDF_FUNC"mss_get_address_range() failed" ); - PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT ); - o_rc = FAIL; break; - } - - // Verify addresses are of the valid register size. - if ( 64 != o_startAddr.getBitLength() || - 64 != o_endAddr.getBitLength() ) - { - PRDF_ERR( PRDF_FUNC"Addresses returned from " - "mss_get_address_range() are not 64-bit" ); - o_rc = FAIL; break; - } - - } while (0); - - if ( SUCCESS != o_rc ) - { - PRDF_ERR( PRDF_FUNC"Failed: 0x%08x 0x%02x", getHuid(i_mba), i_rank ); - } - - return o_rc; - - #undef PRDF_FUNC -} - //------------------------------------------------------------------------------ // Helper function for the other createMssCmd() functions. @@ -737,12 +767,13 @@ mss_MaintCmdWrapper * createMssCmd( mss_MaintCmdWrapper::CmdType i_cmdType, mss_MaintCmdWrapper * createMssCmd( mss_MaintCmdWrapper::CmdType i_cmdType, TargetHandle_t i_mba, const CenRank & i_rank, uint32_t i_stopCond, - bool i_isFastSpeed ) + bool i_isFastSpeed, bool i_slaveOnly ) { mss_MaintCmdWrapper * o_cmd = NULL; ecmdDataBufferBase sAddr(64), eAddr(64); - int32_t l_rc = getMemAddrRange( i_mba, i_rank.flatten(), sAddr, eAddr ); + int32_t l_rc = getMemAddrRange( i_mba, i_rank.getMaster(), sAddr, eAddr, + i_rank.getSlave(), i_slaveOnly ); if ( SUCCESS == l_rc ) { o_cmd = createMssCmd( i_cmdType, i_mba, i_stopCond, i_isFastSpeed, diff --git a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H index be23be1f4..fee317cca 100755 --- a/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H +++ b/src/usr/diag/prdf/common/framework/service/prdfPlatServices_common.H @@ -288,16 +288,18 @@ int32_t getMemAddrRange( TARGETING::TargetHandle_t i_mba, CenAddr & o_startAddr, CenAddr & o_endAddr ); /** - * @brief Returns the start and end maintenance address of the given rank. + * @brief Returns the start and end maintenance address of the given rank. By + * default, will return the address range of the master rank. * @param i_mba Target MBA. * @param i_rank Target rank. * @param o_startAddr The return start address. * @param o_endAddr The return end address. + * @param i_slaveOnly true = slave rank only, false = master rank (default). * @return Non-SUCCESS in internal function fails, SUCCESS otherwise. */ int32_t getMemAddrRange( TARGETING::TargetHandle_t i_mba, const CenRank & i_rank, CenAddr & o_startAddr, - CenAddr & o_endAddr ); + CenAddr & o_endAddr, bool i_slaveOnly = false ); /** * @brief Returns the memory buffer raw card type (i.e. R/C A). @@ -410,6 +412,7 @@ mss_MaintCmdWrapper * createMssCmd( mss_MaintCmdWrapper::CmdType i_cmdType, * @param i_mba An MBA target. * @param i_stopCond Bit mask for conditions in which to stop command. * @param i_isFastSpeed false = slow (12 H), true = fast (default). + * @param i_slaveOnly true = slave rank only, false = master rank (default). * @return A mss_MaintCmdWrapper object, NULL if an internal function failed. * @note This function allocates memory on heap for mss_MaintCmdWrapper * object. It is the caller's responsibilty to delete this object. @@ -418,7 +421,8 @@ mss_MaintCmdWrapper * createMssCmd( mss_MaintCmdWrapper::CmdType i_cmdType, mss_MaintCmdWrapper * createMssCmd( mss_MaintCmdWrapper::CmdType i_cmdType, TARGETING::TargetHandle_t i_mba, const CenRank & i_rank, uint32_t i_stopCond, - bool i_isFastSpeed = true ); + bool i_isFastSpeed = true, + bool i_slaveOnly = false ); } // end namespace PlatServices diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenAddress.H b/src/usr/diag/prdf/common/plat/pegasus/prdfCenAddress.H index 9e616dfe6..e5a27d6e2 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenAddress.H +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenAddress.H @@ -48,54 +48,95 @@ class CenRank public: // constructor /** @brief Default constructor */ - CenRank() { iv_rank.u = 0; } + CenRank() : + iv_slaveValid(false) + { + iv_rank.master.u = 0; + iv_rank.slave = 0; + } /** * @brief Constructor from flattened rank. - * @param i_rank The 3-bit rank. - * @note The rank format should be 0bDRR (D=DIMM select, R=rank select). + * @param i_mrank The 3-bit master rank. + * @note The master rank format should be 0bDRR (D=DIMM select, + * R=rank select). */ - explicit CenRank( uint8_t i_rank ) { iv_rank.u = i_rank; } + explicit CenRank( uint8_t i_mrank ) : + iv_slaveValid(false) + { + iv_rank.master.u = i_mrank; + iv_rank.slave = 0; + } /** - * @brief Constructor from components. - * @param i_dimmSlct The 1-bit DIMM select. - * @param i_rankSlct The 2-bit rank select. + * @brief Constructor from flattened rank. + * @param i_mrank The 3-bit master rank. + * @param i_srank The 3-bit slave rank. + * @note The master rank format should be 0bDRR (D=DIMM select, + * R=rank select). */ - CenRank( uint8_t i_dimmSlct, uint8_t i_rankSlct ) + explicit CenRank( uint8_t i_mrank, uint8_t i_srank ) : + iv_slaveValid(true) { - iv_rank.s.ds = i_dimmSlct; - iv_rank.s.rs = i_rankSlct; + iv_rank.master.u = i_mrank; + iv_rank.slave = i_srank; } /** @return The 1-bit DIMM select. */ - uint8_t getDimmSlct() const { return iv_rank.s.ds; } + uint8_t getDimmSlct() const { return iv_rank.master.s.ds; } /** @return The 2-bit rank select. */ - uint8_t getRankSlct() const { return iv_rank.s.rs; } + uint8_t getRankSlct() const { return iv_rank.master.s.rs; } /** - * @brief Converts internal data structure to a uint8_t. + * @return The 3-bit master rank. * @note The format will be 0bDRR (D=DIMM select, R=rank select). - * @return A uint8_t version of the rank. */ - uint8_t flatten() const { return iv_rank.u; } + uint8_t getMaster() const { return iv_rank.master.u; } + + /** @return The 3-bit slave rank. */ + uint8_t getSlave() const { return iv_rank.slave; } + + /** + * There are a lot of cases where we only need to know the master rank, + * however, this object stores both the master and slave rank. This function + * will indicate whether it is intended to only be used for a master rank or + * both a master and slave rank. + * + * @return TRUE if slave rank is trusted to be valid, FALSE otherwise. + */ + bool isSlaveValid() const { return iv_slaveValid; } /** @brief '==' operator */ bool operator==( const CenRank & i_rank ) const - { return ( this->flatten() == i_rank.flatten() ); } + { + return ( (this->getMaster() == i_rank.getMaster()) && + (this->getSlave() == i_rank.getSlave() ) ); + } /** @brief '<' operator */ bool operator<( const CenRank & i_rank ) const - { return ( this->flatten() < i_rank.flatten() ); } + { + return ( (this->getMaster() < i_rank.getMaster()) || + ( (this->getMaster() == i_rank.getMaster()) && + (this->getSlave() < i_rank.getSlave() ) ) ); + } private: // data - union + struct { - struct { uint8_t unused : 5; uint8_t ds : 1; uint8_t rs : 2; } s; - uint8_t u; + union + { + struct { uint8_t unused : 5; uint8_t ds : 1; uint8_t rs : 2; } s; + uint8_t u; + } master; + + uint8_t slave : 3; + } iv_rank; + + bool iv_slaveValid; }; //------------------------------------------------------------------------------ @@ -147,16 +188,17 @@ class CenAddr /** * @brief Constructor from components. - * @param i_rank The 3-bit master rank. + * @param i_mrank The 3-bit master rank. + * @param i_srank The 3-bit slave rank. * @param i_bank The 4-bit bank. * @param i_row The 17-bit row. * @param i_col The 12-bit column. * @param i_types An OR of all error types associated with this address (see * enum ErrorType). */ - CenAddr( uint32_t i_rank, uint32_t i_bank, uint32_t i_row, - uint32_t i_col, uint32_t i_types = NONE ) : - iv_rank(i_rank), iv_types(i_types) + CenAddr( uint32_t i_mrank, uint32_t i_srank, uint32_t i_bank, + uint32_t i_row, uint32_t i_col, uint32_t i_types = NONE ) : + iv_rank(i_mrank, i_srank), iv_types(i_types) { iv_bankRowCol.bank = i_bank; iv_bankRowCol.row = i_row; @@ -171,7 +213,8 @@ class CenAddr static CenAddr fromReadAddr( uint64_t i_addr, uint32_t i_type ) { return CenAddr( - (i_addr >> 60) & 0x7, // rank + (i_addr >> 60) & 0x7, // master rank + (i_addr >> 57) & 0x7, // slave rank (i_addr >> 53) & 0xf, // bank ((i_addr >> 5) & 0x20000) | ((i_addr >> 36) & 0x1ffff), // row (i_addr >> 24) & 0xfff, // column @@ -188,7 +231,8 @@ class CenAddr */ uint64_t toReadAddr() const { - return ( ((uint64_t) iv_rank.flatten() << 60) | + return ( ((uint64_t) iv_rank.getMaster() << 60) | + ((uint64_t) iv_rank.getSlave() << 57) | ((uint64_t) iv_bankRowCol.bank << 53) | ((uint64_t)(iv_bankRowCol.row & 0x1ffff) << 36) | // r16-r0 ((uint64_t) iv_bankRowCol.col << 24) | @@ -202,7 +246,8 @@ class CenAddr static CenAddr fromMaintStartAddr( uint64_t i_addr ) { return CenAddr( - (i_addr >> 60) & 0x7, // rank + (i_addr >> 60) & 0x7, // master rank + (i_addr >> 57) & 0x7, // slave rank (i_addr >> 53) & 0xf, // bank ((i_addr << 13) & 0x20000) | ((i_addr >> 36) & 0x1ffff), // row (i_addr >> 24) & 0xfff, // column @@ -218,7 +263,8 @@ class CenAddr */ uint64_t toMaintStartAddr() const { - return ( ((uint64_t) iv_rank.flatten() << 60) | + return ( ((uint64_t) iv_rank.getMaster() << 60) | + ((uint64_t) iv_rank.getSlave() << 57) | ((uint64_t) iv_bankRowCol.bank << 53) | ((uint64_t)(iv_bankRowCol.row & 0x1ffff) << 36) | // r16-r0 ((uint64_t) iv_bankRowCol.col << 24) | @@ -232,7 +278,8 @@ class CenAddr static CenAddr fromMaintEndAddr( uint64_t i_addr ) { return CenAddr( - (i_addr >> 60) & 0x7, // rank + (i_addr >> 60) & 0x7, // master rank + (i_addr >> 57) & 0x7, // slave rank (i_addr >> 53) & 0xf, // bank ((i_addr >> 6) & 0x20000) | ((i_addr >> 36) & 0x1ffff), // row (i_addr >> 24) & 0xfff ); // column @@ -247,7 +294,8 @@ class CenAddr */ uint64_t toMaintEndAddr() const { - return ( ((uint64_t) iv_rank.flatten() << 60) | + return ( ((uint64_t) iv_rank.getMaster() << 60) | + ((uint64_t) iv_rank.getSlave() << 57) | ((uint64_t) iv_bankRowCol.bank << 53) | ((uint64_t)(iv_bankRowCol.row & 0x1ffff) << 36) | // r16-r0 ((uint64_t) iv_bankRowCol.col << 24) | diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenConst.H b/src/usr/diag/prdf/common/plat/pegasus/prdfCenConst.H index 4360da5b2..133a852ab 100644 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenConst.H +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenConst.H @@ -37,10 +37,13 @@ namespace PRDF enum { - PORT_SLCT_PER_MBA = 2, - MAX_DIMM_SLCT_PER_MBA = 2, - MAX_RANKS_PER_DIMM_SLCT = 4, - MAX_RANKS_PER_MBA = MAX_DIMM_SLCT_PER_MBA * MAX_RANKS_PER_DIMM_SLCT, + PORT_SLCT_PER_MBA = 2, + DIMM_SLCT_PER_MBA = 2, + + MASTER_RANKS_PER_DIMM_SLCT = 4, + SLAVE_RANKS_PER_MASTER_RANK = 8, + + MASTER_RANKS_PER_MBA = DIMM_SLCT_PER_MBA * MASTER_RANKS_PER_DIMM_SLCT, SYMBOLS_PER_RANK = 72, DQS_PER_DIMM = 72, diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenDqBitmap.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenDqBitmap.C index 82d3ef9cd..28a1400cc 100644 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenDqBitmap.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenDqBitmap.C @@ -329,7 +329,7 @@ int32_t CenDqBitmap::isDramSpareAvailable( uint8_t i_portSlct, void CenDqBitmap::getCaptureData( CaptureData & o_cd ) const { - uint8_t rank = iv_rank.flatten(); + uint8_t rank = iv_rank.getMaster(); size_t sz_rank = sizeof(rank); size_t sz_capData = sz_rank + sizeof(iv_data); diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMarkstore.H b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMarkstore.H index 38bf32245..e015ceb5b 100644 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMarkstore.H +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMarkstore.H @@ -54,12 +54,12 @@ class CenMark {} /** @brief Constructor from components */ - CenMark( CenSymbol i_symbolMark, CenSymbol i_chipMark ) : + CenMark( const CenSymbol & i_symbolMark, const CenSymbol & i_chipMark ) : iv_symbolMark(i_symbolMark), iv_chipMark(i_chipMark) {} /** @brief Constructor from components */ - CenMark( TARGETING::TargetHandle_t i_mba, CenRank i_rank, + CenMark( TARGETING::TargetHandle_t i_mba, const CenRank & i_rank, uint8_t i_symbolMark, uint8_t i_chipMark ) { iv_symbolMark = CenSymbol::fromSymbol( i_mba, i_rank, i_symbolMark ); @@ -75,10 +75,11 @@ class CenMark CenSymbol getCM() const { return iv_chipMark; } /** @brief Sets the symbol mark to the given symbol. */ - void setSM( CenSymbol i_symbolMark ) { iv_symbolMark = i_symbolMark; } + void setSM( const CenSymbol & i_symbolMark ) + { iv_symbolMark = i_symbolMark; } /** @brief Sets the chip mark to the given symbol. */ - void setCM( CenSymbol i_chipMark ) { iv_chipMark = i_chipMark; } + void setCM( const CenSymbol & i_chipMark ) { iv_chipMark = i_chipMark; } /** @brief Sets the symbol mark to an invalid symbol. */ void clearSM() { iv_symbolMark = CenSymbol(); } diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.C index 343979ebd..9a081ea18 100644 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.C @@ -86,7 +86,7 @@ void captureDramRepairsData( TARGETING::TargetHandle_t i_mbaTarget, DramRepairMbaData mbaData; // Iterate all ranks to get DRAM repair data - for ( uint32_t r = 0; r < MAX_RANKS_PER_MBA; r++ ) + for ( uint32_t r = 0; r < MASTER_RANKS_PER_MBA; r++ ) { CenRank rank ( r ); @@ -109,7 +109,7 @@ void captureDramRepairsData( TARGETING::TargetHandle_t i_mbaTarget, } // Add data - DramRepairRankData rankData = { rank.flatten(), + DramRepairRankData rankData = { rank.getMaster(), mark.getCM().getSymbol(), mark.getSM().getSymbol(), sp0.getSymbol(), @@ -170,7 +170,7 @@ void captureDramRepairsVpd( TargetHandle_t i_mba, CaptureData & io_cd ) static const size_t sz_word = sizeof(CPU_WORD); // Get the maximum capture data size. - size_t sz_maxData = MAX_RANKS_PER_MBA * (sz_rank + sz_entry); + size_t sz_maxData = MASTER_RANKS_PER_MBA * (sz_rank + sz_entry); // Adjust the size for endianess. sz_maxData = ((sz_maxData + sz_word-1) / sz_word) * sz_word; @@ -181,7 +181,7 @@ void captureDramRepairsVpd( TargetHandle_t i_mba, CaptureData & io_cd ) // Get the data for each rank. uint32_t idx = 0; - for ( uint8_t r = 0; r < MAX_RANKS_PER_MBA; r++ ) + for ( uint8_t r = 0; r < MASTER_RANKS_PER_MBA; r++ ) { CenRank rank ( r ); CenDqBitmap bitmap; diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenSymbol.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenSymbol.C index 5b1e0444b..04a4aea3d 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenSymbol.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenSymbol.C @@ -235,9 +235,9 @@ int32_t CenSymbol::getSymbol( const CenRank & i_rank, WiringType i_wiringType, if ( SUCCESS != o_rc ) { - PRDF_ERR( PRDF_FUNC"Failed: i_rank=%d i_wiringType=%d i_dimmDq=%d " - "i_portSlct=%d", i_rank.flatten(), i_wiringType, i_dimmDq, - i_portSlct ); + PRDF_ERR( PRDF_FUNC"Failed: i_rank=M%dS%d i_wiringType=%d i_dimmDq=%d " + "i_portSlct=%d", i_rank.getMaster(), i_rank.getSlave(), + i_wiringType, i_dimmDq, i_portSlct ); } return o_rc; diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenSymbol.H b/src/usr/diag/prdf/common/plat/pegasus/prdfCenSymbol.H index 681bff7ee..e0d3e4659 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenSymbol.H +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenSymbol.H @@ -81,7 +81,7 @@ class CenSymbol /** * @brief Constructor from components */ - CenSymbol( TARGETING::TargetHandle_t i_mba, CenRank i_rank, + CenSymbol( TARGETING::TargetHandle_t i_mba, const CenRank & i_rank, WiringType i_wiringType, uint8_t i_symbol, uint8_t i_pins, bool i_x4Dram ) : iv_mbaTarget(i_mba), iv_rank(i_rank), iv_wiringType(i_wiringType), diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfMemoryMru.C b/src/usr/diag/prdf/common/plat/pegasus/prdfMemoryMru.C index 6c4e7a736..fff1d3146 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfMemoryMru.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfMemoryMru.C @@ -105,7 +105,9 @@ MemoryMru::MemoryMru( uint32_t i_memMru ) : // Get the rank - iv_rank = CenRank( iv_memMruMeld.s.rank ); + iv_rank = (0 == iv_memMruMeld.s.srankValid) + ? CenRank( iv_memMruMeld.s.mrank ) + : CenRank( iv_memMruMeld.s.mrank, iv_memMruMeld.s.srank ); // Get the symbol or special callout if ( (FIRST_SPECIAL_CALLOUT <= iv_memMruMeld.s.symbol) && @@ -115,24 +117,19 @@ MemoryMru::MemoryMru( uint32_t i_memMru ) : } else { - if ( SYMBOLS_PER_RANK <= iv_memMruMeld.s.symbol) + if ( SYMBOLS_PER_RANK <= iv_memMruMeld.s.symbol ) { PRDF_ERR( PRDF_FUNC"Invalid symbol value :%u", - iv_memMruMeld.s.symbol); + iv_memMruMeld.s.symbol ); break; } iv_symbol = CenSymbol::fromSymbol( iv_mbaTarget, iv_rank, iv_memMruMeld.s.symbol, iv_memMruMeld.s.pins ); - if ( !iv_symbol.isValid() ) { - PRDF_ERR( PRDF_FUNC"Can not create symbol from symbol value" - " :%u, pins:%u, rank:%u", - iv_memMruMeld.s.symbol, - iv_memMruMeld.s.pins, - iv_memMruMeld.s.rank ); + PRDF_ERR( PRDF_FUNC"fromSymbol() failed" ); break; } @@ -195,12 +192,13 @@ MemoryMru::MemoryMru( TARGETING::TargetHandle_t i_mbaTarget, break; } - iv_memMruMeld.s.nodePos = getTargetPosition( node ); iv_memMruMeld.s.procPos = getTargetPosition( proc ); iv_memMruMeld.s.cenPos = getTargetPosition( memBuff ); iv_memMruMeld.s.mbaPos = getTargetPosition( iv_mbaTarget ); - iv_memMruMeld.s.rank = iv_rank.flatten(); + iv_memMruMeld.s.mrank = iv_rank.getMaster(); + iv_memMruMeld.s.srank = iv_rank.getSlave(); + iv_memMruMeld.s.srankValid = iv_rank.isSlaveValid(); iv_memMruMeld.s.symbol = iv_symbol.getSymbol(); iv_memMruMeld.s.pins = iv_symbol.getPins(); iv_memMruMeld.s.dramSpared = 0; // manually set by setDramSpared() @@ -252,12 +250,13 @@ MemoryMru::MemoryMru( TARGETING::TargetHandle_t i_mbaTarget, break; } - iv_memMruMeld.s.nodePos = getTargetPosition( node ); iv_memMruMeld.s.procPos = getTargetPosition( proc ); iv_memMruMeld.s.cenPos = getTargetPosition( memBuff ); iv_memMruMeld.s.mbaPos = getTargetPosition( iv_mbaTarget ); - iv_memMruMeld.s.rank = iv_rank.flatten(); + iv_memMruMeld.s.mrank = iv_rank.getMaster(); + iv_memMruMeld.s.srank = iv_rank.getSlave(); + iv_memMruMeld.s.srankValid = iv_rank.isSlaveValid(); iv_memMruMeld.s.symbol = iv_special; // If the code gets to this point the MemoryMru is valid. diff --git a/src/usr/diag/prdf/common/plugins/prdfCenLogParse.C b/src/usr/diag/prdf/common/plugins/prdfCenLogParse.C index 1d42d5def..85b002b2d 100644 --- a/src/usr/diag/prdf/common/plugins/prdfCenLogParse.C +++ b/src/usr/diag/prdf/common/plugins/prdfCenLogParse.C @@ -114,10 +114,14 @@ bool parseMemMruData( ErrlUsrParser & i_parser, uint32_t i_memMru ) uint8_t cenPos = (mm.s.procPos << 3) | mm.s.cenPos; uint8_t mbaPos = mm.s.mbaPos; + char tmp[PARSER_HEADER_SIZE] = { '\0' }; + if ( 1 == mm.s.srankValid ) + snprintf( tmp, PARSER_HEADER_SIZE, "S%d", mm.s.srank ); + char header[PARSER_HEADER_SIZE]; - snprintf( header, PARSER_HEADER_SIZE, " mba(n%dp%dc%d)%s Rank: %d", + snprintf( header, PARSER_HEADER_SIZE, " mba(n%dp%dc%d)%s Rank:M%d%s", nodePos, cenPos, mbaPos, (cenPos < 10) ? " " : "", - mm.s.rank ); + mm.s.mrank, tmp ); char data[PARSER_DATA_SIZE]; @@ -141,8 +145,8 @@ bool parseMemMruData( ErrlUsrParser & i_parser, uint32_t i_memMru ) } // Ouptut should look like: - // | mba(n0p0c0) Rank: 0 : Special: CALLOUT_RANK | - // | mba(n7p63c1) Rank: 7 : Symbol: 71 Pins: 3 Spared: false | + // | mba(n0p0c0) Rank:M7 : Special: CALLOUT_RANK | + // | mba(n7p63c1) Rank:M0S7 : Symbol: 71 Pins: 3 Spared: false | i_parser.PrintString( header, data ); diff --git a/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C b/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C index 547ae41db..9e02af728 100644 --- a/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C +++ b/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C @@ -469,7 +469,7 @@ bool parsePfaData( void * i_buffer, uint32_t i_buflen, case SRCI_PRIORITY_MED: tmpStr = "MED"; break; case SRCI_PRIORITY_HIGH: tmpStr = "HIGH"; break; } - snprintf( header, 25, " #%d %s", i+1, tmpStr ); + snprintf( header, 25, " #%d %s", i+1, tmpStr ); snprintf( data, 50, "0x%08x ", pfa.mruList[i].callout ); diff --git a/src/usr/diag/prdf/common/plugins/prdfMemoryMruData.H b/src/usr/diag/prdf/common/plugins/prdfMemoryMruData.H index 49dc16dd6..8fe4951db 100644 --- a/src/usr/diag/prdf/common/plugins/prdfMemoryMruData.H +++ b/src/usr/diag/prdf/common/plugins/prdfMemoryMruData.H @@ -76,6 +76,7 @@ union MemMruMeld // version field so that the error log parser know which format to // used. +#ifndef ESW_SIM_COMPILE uint32_t valid : 1; ///< Used to indicate nothing failed while ///< building the object (1=valid, 0=not valid) uint32_t procPos : 3; ///< Proc position within node (0-7) @@ -84,15 +85,31 @@ union MemMruMeld uint32_t pins : 2; ///< Even and/or Odd symbol pins uint32_t nodePos : 3; ///< Node position (0-7) - uint32_t rank : 3; ///< Rank (0-7) + uint32_t mrank : 3; ///< Master rank (0-7) uint32_t dramSpared : 1; ///< True if symbol is on spared DRAM uint32_t symbol : 7; ///< Symbol or SpecialCallout // TODO: RTC 67376 Check if width for wiring type is enough - uint32_t wiringType : 5; ///< Wiring type - - uint32_t unused : 3; ///< Reserved for future use + uint32_t wiringType : 4; ///< Wiring type + uint32_t srankValid : 1; ///< TRUE if slave rank is valid + uint32_t srank : 3; ///< Slave rank (0-7) +#else + // Need to reverse this to make the uint32_t look right in the + // simulator. + uint32_t srank : 3; + uint32_t srankValid : 1; + uint32_t wiringType : 4; + uint32_t symbol : 7; + uint32_t dramSpared : 1; + uint32_t mrank : 3; + uint32_t nodePos : 3; + uint32_t pins : 2; + uint32_t mbaPos : 1; + uint32_t cenPos : 3; + uint32_t procPos : 3; + uint32_t valid : 1; +#endif } s; ///< A struct defining the 32-bit version of the MemoryMru }; diff --git a/src/usr/diag/prdf/framework/service/prdfPlatServices.C b/src/usr/diag/prdf/framework/service/prdfPlatServices.C index 48f356528..8bf195dd5 100644 --- a/src/usr/diag/prdf/framework/service/prdfPlatServices.C +++ b/src/usr/diag/prdf/framework/service/prdfPlatServices.C @@ -199,11 +199,11 @@ int32_t mssIplUeIsolation( TargetHandle_t i_mba, const CenRank & i_rank, errlHndl_t errl = NULL; PRD_FAPI_TO_ERRL( errl, mss_IPL_UE_isolation, getFapiTarget(i_mba), - i_rank.flatten(), data ); + i_rank.getMaster(), data ); if ( NULL != errl ) { PRDF_ERR( PRDF_FUNC"mss_IPL_UE_isolation() failed: MBA=0x%08x " - "rank=%d", getHuid(i_mba), i_rank.flatten() ); + "rank=%d", getHuid(i_mba), i_rank.getMaster() ); PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT ); o_rc = FAIL; } diff --git a/src/usr/diag/prdf/plat/pegasus/prdfCenMbaIplCeStats.C b/src/usr/diag/prdf/plat/pegasus/prdfCenMbaIplCeStats.C index 1b3541865..84708ee99 100755 --- a/src/usr/diag/prdf/plat/pegasus/prdfCenMbaIplCeStats.C +++ b/src/usr/diag/prdf/plat/pegasus/prdfCenMbaIplCeStats.C @@ -132,7 +132,7 @@ int32_t CenMbaIplCeStats::collectStats( const CenRank & i_stopRank ) iv_rankMap[rankKey]++; // In case of dimm Slct , rank select does not matter - CenRank dimmRank( dimmSlct, 0); + CenRank dimmRank( dimmSlct << DIMM_SLCT_PER_MBA ); // Increment the soft CEs per half dimm select. HalfRankKey dsKey = { dimmRank, portSlct }; iv_dsMap[dsKey]++; diff --git a/src/usr/diag/prdf/plat/pegasus/prdfCenMbaIplCeStats.H b/src/usr/diag/prdf/plat/pegasus/prdfCenMbaIplCeStats.H index af358dd6b..456024257 100755 --- a/src/usr/diag/prdf/plat/pegasus/prdfCenMbaIplCeStats.H +++ b/src/usr/diag/prdf/plat/pegasus/prdfCenMbaIplCeStats.H @@ -123,7 +123,7 @@ class CenMbaIplCeStats */ struct HalfRankKey { - CenRank rank; ///< The rank + CenRank rank; ///< The rank uint8_t portSlct; ///< The port select /** @brief Overrides the '==' operator. */ @@ -206,9 +206,6 @@ class CenMbaIplCeStats /** The MBA chip. */ ExtensibleChip * iv_mbaChip; - /** The rank that this object is expecting to collect for. */ - CenRank iv_rankToAnalyze; - /** A map to keep track of which half ranks have all ready been called out. * This helps reduce excessive callouts for the same hardware. */ BannedAnalysisMap iv_bannedAnalysis; diff --git a/src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C b/src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C index 6fa4088ae..959434608 100644 --- a/src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C +++ b/src/usr/diag/prdf/plat/pegasus/prdfCenMbaTdCtlr.C @@ -145,9 +145,10 @@ int32_t CenMbaTdCtlr::handleCmdCompleteEvent( STEP_CODE_DATA_STRUCT & io_sc ) if ( SUCCESS != o_rc ) { PRDF_ERR( PRDF_FUNC"iv_mbaChip:0x%08x iv_initialized:%c iv_tdState:%d " - "iv_rank:%d iv_mark:%2d %2d", getHuid(mba), - iv_initialized ? 'T' : 'F', iv_tdState, iv_rank.flatten(), - iv_mark.getCM().getSymbol(), iv_mark.getSM().getSymbol() ); + "iv_rank:M%dS%d iv_mark:%2d %2d", getHuid(mba), + iv_initialized ? 'T' : 'F', iv_tdState, iv_rank.getMaster(), + iv_rank.getSlave(), iv_mark.getCM().getSymbol(), + iv_mark.getSM().getSymbol() ); int32_t l_rc = cleanupPrevCmd(); // Just in case. if ( SUCCESS != l_rc ) @@ -203,8 +204,9 @@ int32_t CenMbaTdCtlr::handleTdEvent( STEP_CODE_DATA_STRUCT & io_sc, // This is a no-op in Hostboot. Instead, print a trace statement // indicating the intended request. PRDF_INF( PRDF_FUNC"TD request found during Hostboot: " - "iv_mbaChip=0x%08x i_rank=%d i_event=%d", - getHuid(mba), i_rank.flatten(), i_event ); + "iv_mbaChip=0x%08x i_rank=M%dS%d i_event=%d", + getHuid(mba), i_rank.getMaster(), i_rank.getSlave(), + i_event ); } while(0); @@ -983,7 +985,7 @@ int32_t CenMbaTdCtlr::startTpsPhase1() mss_MaintCmd::ENABLE_CMD_COMPLETE_ATTENTION ); iv_mssCmd = createMssCmd( mss_MaintCmdWrapper::TIMEBASE_SCRUB, - mba, iv_rank, stopCond ); + mba, iv_rank, stopCond, true, true ); if ( NULL == iv_mssCmd ) { PRDF_ERR( PRDF_FUNC"createMssCmd() failed"); @@ -1039,7 +1041,7 @@ int32_t CenMbaTdCtlr::startTpsPhase2() mss_MaintCmd::ENABLE_CMD_COMPLETE_ATTENTION ); iv_mssCmd = createMssCmd( mss_MaintCmdWrapper::TIMEBASE_SCRUB, - mba, iv_rank, stopCond ); + mba, iv_rank, stopCond, true, true ); if ( NULL == iv_mssCmd ) { PRDF_ERR( PRDF_FUNC"createMssCmd() failed"); @@ -1094,7 +1096,7 @@ int32_t CenMbaTdCtlr::checkEccErrors( uint16_t & o_eccErrorMask ) break; } - if ( mbsEccFir->IsBitSet(20 + iv_rank.flatten()) ) + if ( mbsEccFir->IsBitSet(20 + iv_rank.getMaster()) ) { o_eccErrorMask |= MPE; @@ -1633,7 +1635,7 @@ int32_t CenMbaTdCtlr::prepareNextCmd() firand->setAllBits(); // Clear MPE bit for this rank. - firand->ClearBit( 20 + iv_rank.flatten() ); + firand->ClearBit( 20 + iv_rank.getMaster() ); // Clear NCE, SCE, MCE, RCE, SUE, UE bits (36-41) firand->SetBitFieldJustified( 36, 6, 0 ); diff --git a/src/usr/diag/prdf/plat/pegasus/prdfDramRepairs.C b/src/usr/diag/prdf/plat/pegasus/prdfDramRepairs.C index 518a965da..13ccf84e5 100644 --- a/src/usr/diag/prdf/plat/pegasus/prdfDramRepairs.C +++ b/src/usr/diag/prdf/plat/pegasus/prdfDramRepairs.C @@ -118,7 +118,7 @@ bool processRepairedRanks( TargetHandle_t i_mba, uint8_t i_repairedRankMask ) errlHndl_t errl = NULL; // Initially NULL, will create if needed. - for ( uint8_t r = 0; r < MAX_RANKS_PER_MBA; ++r ) + for ( uint8_t r = 0; r < MASTER_RANKS_PER_MBA; ++r ) { if ( 0 == (i_repairedRankMask & (1 << r)) ) { @@ -131,7 +131,7 @@ bool processRepairedRanks( TargetHandle_t i_mba, uint8_t i_repairedRankMask ) if ( SUCCESS != mssGetMarkStore(i_mba, rank, mark) ) { PRDF_ERR( PRDF_FUNC"mssGetMarkStore() failed: MBA=0x%08x rank=%d", - getHuid(i_mba), rank.flatten() ); + getHuid(i_mba), rank.getMaster() ); analysisErrors = true; continue; // skip this rank } @@ -141,7 +141,7 @@ bool processRepairedRanks( TargetHandle_t i_mba, uint8_t i_repairedRankMask ) if ( SUCCESS != mssGetSteerMux(i_mba, rank, sp0, sp1, sp)) { PRDF_ERR( PRDF_FUNC"mssGetSteerMux() failed: MBA=0x%08x rank=%d", - getHuid(i_mba), rank.flatten() ); + getHuid(i_mba), rank.getMaster() ); analysisErrors = true; continue; // skip this rank } @@ -257,7 +257,7 @@ bool screenBadDqs( TargetHandle_t i_mba ) errlHndl_t errl = NULL; // Initially NULL, will create if needed. - for ( uint32_t r = 0; r < MAX_RANKS_PER_MBA; r++ ) + for ( uint32_t r = 0; r < MASTER_RANKS_PER_MBA; r++ ) { CenRank rank ( r ); CenDqBitmap bitmap; @@ -270,7 +270,7 @@ bool screenBadDqs( TargetHandle_t i_mba ) if ( SUCCESS != getBadDqBitmap(i_mba, rank, bitmap, true) ) { PRDF_ERR( PRDF_FUNC"getBadDqBitmap() failed: MBA=0x%08x rank=%d", - getHuid(i_mba), rank.flatten() ); + getHuid(i_mba), rank.getMaster() ); analysisErrors = true; continue; // skip this rank } @@ -295,7 +295,7 @@ void deployDramSpares( TargetHandle_t i_mba ) { bool x4 = isDramWidthX4(i_mba); - for ( uint32_t r = 0; r < MAX_RANKS_PER_MBA; r++ ) + for ( uint32_t r = 0; r < MASTER_RANKS_PER_MBA; r++ ) { CenRank rank ( r ); |