Skip to content

Commit

Permalink
PRD: Add OCMB support for ROW_REPAIR code
Browse files Browse the repository at this point in the history
Change-Id: If91bf9ce96e2e56fc1abd33baf5217347740acb3
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/80605
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com>
Reviewed-by: Benjamen G. Tyner <ben.tyner@ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/81060
Reviewed-by: Zane C Shelley <zshelle@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
  • Loading branch information
cnpalmer authored and zane131 committed Jul 30, 2019
1 parent 4128797 commit e659585
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 29 deletions.
6 changes: 3 additions & 3 deletions src/usr/diag/prdf/common/plat/mem/prdfMemMark.C
Expand Up @@ -1242,9 +1242,9 @@ uint32_t __applyRasPolicies<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip,
__addCallout( i_chip, i_rank, ecc, io_sc );

// Add the row repairs to the callout list if they exist
o_rc = __addRowRepairCallout<TARGETING::TYPE_MEM_PORT>( memPort,
i_rank,
io_sc );
o_rc = __addRowRepairCallout<TARGETING::TYPE_OCMB_CHIP>( memPort,
i_rank,
io_sc );
if ( SUCCESS != o_rc )
{
PRDF_ERR( PRDF_FUNC "__addRowRepairCallout(0x%08x,0x%02x) "
Expand Down
75 changes: 51 additions & 24 deletions src/usr/diag/prdf/common/plat/mem/prdfMemRowRepair.C
Expand Up @@ -134,6 +134,14 @@ uint32_t getRowRepairData<TYPE_MEM_PORT>( TargetHandle_t i_dimm,
i_dimm, i_rank, o_rowRepair );
}

template<>
uint32_t getRowRepairData<TYPE_OCMB_CHIP>( TargetHandle_t i_dimm,
const MemRank & i_rank, MemRowRepair & o_rowRepair )
{
return __getRowRepairData<TYPE_OCMB_CHIP, fapi2::TARGET_TYPE_OCMB_CHIP>(
i_dimm, i_rank, o_rowRepair );
}

//------------------------------------------------------------------------------

template<TARGETING::TYPE T, fapi2::TargetType F>
Expand Down Expand Up @@ -198,34 +206,19 @@ uint32_t setRowRepairData<TYPE_MCA>( TargetHandle_t i_dimm,
i_rowRepair );
}

//------------------------------------------------------------------------------

template<TARGETING::TYPE T>
void __setRowRepairDataHelper( const MemAddr & i_addr, uint32_t & io_tmp );

template<>
void __setRowRepairDataHelper<TYPE_MBA>( const MemAddr & i_addr,
uint32_t & io_tmp )
uint32_t setRowRepairData<TYPE_OCMB_CHIP>( TargetHandle_t i_dimm,
const MemRank & i_rank,
const MemRowRepair & i_rowRepair )
{
#ifdef __HOSTBOOT_MODULE

// Bank is stored as MBA "(DDR4): bg1-bg0,b1-b0 (4-bit)" in a MemAddr.
// bank group - 2 bits (bg1-bg0)
io_tmp = ( io_tmp << 2 ) | ( (i_addr.getBank() >> 2) & 0x03 );

// bank - 3 bits (b2-b0)
io_tmp = ( io_tmp << 3 ) | ( i_addr.getBank() & 0x03 );

// Row is stored as "MBA: r17-r0 (18-bit)" in a MemAddr.
// row - 18 bits (r17-r0)
io_tmp = ( io_tmp << 18 ) | ( i_addr.getRow() & 0x0003ffff );

#endif // __HOSTBOOT_MODULE
return __setRowRepairData<TYPE_OCMB_CHIP, fapi2::TARGET_TYPE_OCMB_CHIP>(
i_dimm, i_rank, i_rowRepair );
}

template<>
void __setRowRepairDataHelper<TYPE_MCA>( const MemAddr & i_addr,
uint32_t & io_tmp )
//------------------------------------------------------------------------------

template<TARGETING::TYPE T>
void __setRowRepairDataHelper( const MemAddr & i_addr, uint32_t & io_tmp )
{
#ifdef __HOSTBOOT_MODULE

Expand All @@ -250,6 +243,32 @@ void __setRowRepairDataHelper<TYPE_MCA>( const MemAddr & i_addr,

#endif // __HOSTBOOT_MODULE
}
template
void __setRowRepairDataHelper<TYPE_MCA>( const MemAddr & i_addr,
uint32_t & io_tmp );
template
void __setRowRepairDataHelper<TYPE_OCMB_CHIP>( const MemAddr & i_addr,
uint32_t & io_tmp );

template<>
void __setRowRepairDataHelper<TYPE_MBA>( const MemAddr & i_addr,
uint32_t & io_tmp )
{
#ifdef __HOSTBOOT_MODULE

// Bank is stored as MBA "(DDR4): bg1-bg0,b1-b0 (4-bit)" in a MemAddr.
// bank group - 2 bits (bg1-bg0)
io_tmp = ( io_tmp << 2 ) | ( (i_addr.getBank() >> 2) & 0x03 );

// bank - 3 bits (b2-b0)
io_tmp = ( io_tmp << 3 ) | ( i_addr.getBank() & 0x03 );

// Row is stored as "MBA: r17-r0 (18-bit)" in a MemAddr.
// row - 18 bits (r17-r0)
io_tmp = ( io_tmp << 18 ) | ( i_addr.getRow() & 0x0003ffff );

#endif // __HOSTBOOT_MODULE
}

//------------------------------------------------------------------------------

Expand Down Expand Up @@ -331,6 +350,11 @@ uint32_t setRowRepairData<TYPE_MCA>( TargetHandle_t i_dimm,
const MemRank & i_rank,
const MemAddr & i_addr,
uint8_t i_dram );
template
uint32_t setRowRepairData<TYPE_OCMB_CHIP>( TargetHandle_t i_dimm,
const MemRank & i_rank,
const MemAddr & i_addr,
uint8_t i_dram );

//------------------------------------------------------------------------------

Expand Down Expand Up @@ -370,6 +394,9 @@ uint32_t clearRowRepairData<TYPE_MBA>( TargetHandle_t i_dimm,
template
uint32_t clearRowRepairData<TYPE_MCA>( TargetHandle_t i_dimm,
const MemRank & i_rank );
template
uint32_t clearRowRepairData<TYPE_OCMB_CHIP>( TargetHandle_t i_dimm,
const MemRank & i_rank );

//------------------------------------------------------------------------------

Expand Down
2 changes: 0 additions & 2 deletions src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C
Expand Up @@ -369,8 +369,6 @@ errlHndl_t PlatConfigurator::addDomainChips( TARGETING::TYPE i_type,
scanFac, resFac );
break;

// TODO RTC 199020 - add the pll domains for axone

default: ;
}
}
Expand Down

0 comments on commit e659585

Please sign in to comment.