diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2017-05-12 15:14:49 -0500 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2017-05-17 11:56:46 -0400 |
commit | dc94aa0d2c9ba8eaabf17399df5acf08e83ced8a (patch) | |
tree | 144ba22c28fd501e770df1294dcab227628c8b2b /src/usr/diag | |
parent | d4db18f792b0a2b5c7ec4b9f527ee4d83c963dde (diff) | |
download | talos-hostboot-dc94aa0d2c9ba8eaabf17399df5acf08e83ced8a.tar.gz talos-hostboot-dc94aa0d2c9ba8eaabf17399df5acf08e83ced8a.zip |
PRD: RAS policies for chip/symbol marks
Change-Id: Ib522204a98056a2f9ea348d65f6f60212be8b66e
RTC: 174200
CQ: SW388927
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/40465
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Caleb N. Palmer <cnpalmer@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/40596
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr/diag')
-rw-r--r-- | src/usr/diag/prdf/common/plat/mem/prdfMemMark.H | 16 | ||||
-rw-r--r-- | src/usr/diag/prdf/plat/mem/prdfMemVcm_ipl.C | 2 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemMark.H b/src/usr/diag/prdf/common/plat/mem/prdfMemMark.H index ccd41359e..fb5e33a52 100644 --- a/src/usr/diag/prdf/common/plat/mem/prdfMemMark.H +++ b/src/usr/diag/prdf/common/plat/mem/prdfMemMark.H @@ -26,7 +26,11 @@ #ifndef __prdfMemMark_H #define __prdfMemMark_H +// Framework includes +#include <iipServiceDataCollector.h> #include <prdfExtensibleChip.H> + +// Platform includes #include <prdfMemAddress.H> #include <prdfMemSymbol.H> #include <prdfPlatServices.H> @@ -150,13 +154,15 @@ uint32_t clearSymbolMark( ExtensibleChip * i_chip, const MemRank & i_rank ); /** * @brief If a rank contains a symbol mark that is on the same DRAM as the chip * mark, the symbol mark is removed. This is done to free up available - * repairs. + * repairs. Will also apply RAS policies where necessary. * @param i_chip MBA or MCA chip. * @param i_rank Target rank. + * @param io_sc The step code data struct. * @return Non-SUCCESS if an internal function fails. SUCCESS otherwise. */ template<TARGETING::TYPE T> -uint32_t balance( ExtensibleChip * i_chip, const MemRank & i_rank ) +uint32_t balance( ExtensibleChip * i_chip, const MemRank & i_rank, + STEP_CODE_DATA_STRUCT & io_sc ) { uint32_t o_rc = SUCCESS; @@ -181,6 +187,12 @@ uint32_t balance( ExtensibleChip * i_chip, const MemRank & i_rank ) o_rc = clearSymbolMark<T>( i_chip, i_rank ); if ( SUCCESS != o_rc ) break; } + else + { + // Both a chip and symbol mark exist, but they are on separate + // DRAMs. So, make the error log predictive. + io_sc.service_data->setServiceCall(); + } } while (0); diff --git a/src/usr/diag/prdf/plat/mem/prdfMemVcm_ipl.C b/src/usr/diag/prdf/plat/mem/prdfMemVcm_ipl.C index 739709606..4eb08798f 100644 --- a/src/usr/diag/prdf/plat/mem/prdfMemVcm_ipl.C +++ b/src/usr/diag/prdf/plat/mem/prdfMemVcm_ipl.C @@ -199,7 +199,7 @@ uint32_t VcmEvent<TYPE_MCA>::nextStep( STEP_CODE_DATA_STRUCT & io_sc, // If there is a symbol mark on the same DRAM as the newly // verified chip mark, remove the symbol mark. - o_rc = MarkStore::balance<TYPE_MCA>( iv_chip, iv_rank ); + o_rc = MarkStore::balance<TYPE_MCA>( iv_chip, iv_rank, io_sc ); if ( SUCCESS != o_rc ) { PRDF_ERR( PRDF_FUNC "MarkStore::balance(0x%08x, %d) failed", |