summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2019-07-15 16:25:36 -0500
committerZane C Shelley <zshelle@us.ibm.com>2019-07-30 09:22:44 -0500
commite65958555029dac384b9af8fa058dcb3f1d934d0 (patch)
treea66268ce73cba4d6450008608e219bd3dfc52d40 /src/usr/diag/prdf
parent4128797da5047e165137595cd48a225d5ffa1567 (diff)
downloadtalos-hostboot-e65958555029dac384b9af8fa058dcb3f1d934d0.tar.gz
talos-hostboot-e65958555029dac384b9af8fa058dcb3f1d934d0.zip
PRD: Add OCMB support for ROW_REPAIR code
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>
Diffstat (limited to 'src/usr/diag/prdf')
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemMark.C6
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemRowRepair.C75
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C2
3 files changed, 54 insertions, 29 deletions
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemMark.C b/src/usr/diag/prdf/common/plat/mem/prdfMemMark.C
index 4aff52acd..529d15181 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemMark.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemMark.C
@@ -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) "
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemRowRepair.C b/src/usr/diag/prdf/common/plat/mem/prdfMemRowRepair.C
index f0fe2afc5..3ff6cd099 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemRowRepair.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemRowRepair.C
@@ -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>
@@ -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
@@ -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
+}
//------------------------------------------------------------------------------
@@ -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 );
//------------------------------------------------------------------------------
@@ -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 );
//------------------------------------------------------------------------------
diff --git a/src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C b/src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C
index c6eb61245..7c3033dc2 100755
--- a/src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C
+++ b/src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C
@@ -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: ;
}
}
OpenPOWER on IntegriCloud