From 4ced775921eb599a0579e98c2f3f19ab08b53ed3 Mon Sep 17 00:00:00 2001 From: Caleb Palmer Date: Wed, 31 Jul 2019 09:54:00 -0500 Subject: PRD: NVDIMM RDR no gard only for all repairs used case Change-Id: I30e4b6976e12a3b4c58a74ac2b669229d31e6ae1 CQ: SW471737 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/81446 Tested-by: Jenkins Server Reviewed-by: Brian J Stegmiller Reviewed-by: Benjamen G Tyner Reviewed-by: Zane C Shelley Squashed: I3bdb36ebf1cd148d891b8040b4b37d2664868e9d Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/81590 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins --- .../diag/prdf/plat/mem/prdfRestoreDramRepairs.C | 24 +++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'src/usr/diag/prdf/plat/mem') diff --git a/src/usr/diag/prdf/plat/mem/prdfRestoreDramRepairs.C b/src/usr/diag/prdf/plat/mem/prdfRestoreDramRepairs.C index 5afc48016..839b65084 100644 --- a/src/usr/diag/prdf/plat/mem/prdfRestoreDramRepairs.C +++ b/src/usr/diag/prdf/plat/mem/prdfRestoreDramRepairs.C @@ -99,7 +99,7 @@ void commitErrl( errlHndl_t i_errl, TargetHandle_t i_trgt ) template void __calloutDimm( errlHndl_t & io_errl, TargetHandle_t i_portTrgt, - TargetHandle_t i_dimmTrgt ) + TargetHandle_t i_dimmTrgt, bool i_nvdimmNoGard = false ) { #define PRDF_FUNC "[RDR::__calloutDimm] " @@ -113,10 +113,10 @@ void __calloutDimm( errlHndl_t & io_errl, TargetHandle_t i_portTrgt, HWAS::GARD_ErrorType gardPolicy = HWAS::GARD_Predictive; #ifdef CONFIG_NVDIMM - // If the DIMM is an NVDIMM, change the gard and deconfig options to no - // gard/deconfig and call nvdimmNotifyProtChange to indicate a - // save/restore may work - if ( isNVDIMM(i_dimmTrgt) ) + // For the "RDR: All repairs used" case, If the DIMM is an NVDIMM, change + // the gard and deconfig options to no gard/deconfig and call + // nvdimmNotifyProtChange to indicate a save/restore may work. + if ( i_nvdimmNoGard ) { deconfigPolicy = HWAS::NO_DECONFIG; gardPolicy = HWAS::GARD_NULL; @@ -261,7 +261,12 @@ bool processRepairedRanks( TargetHandle_t i_trgt, uint8_t i_repairedRankMask ) // Callout all DIMMs in the map. for ( auto const & dimm : calloutList ) { - __calloutDimm( errl, i_trgt, dimm.first ); + bool nvdimmNoGard = false; + #ifdef CONFIG_NVDIMM + if ( isNVDIMM(dimm.first) ) nvdimmNoGard = true; + #endif + + __calloutDimm( errl, i_trgt, dimm.first, nvdimmNoGard ); } // Commit the error log, if needed. @@ -391,7 +396,12 @@ bool processRepairedRanks( TargetHandle_t i_trgt, // Callout all DIMMs in the map. for ( auto const & dimm : calloutList ) { - __calloutDimm( errl, i_trgt, dimm.first ); + bool nvdimmNoGard = false; + #ifdef CONFIG_NVDIMM + if ( isNVDIMM(dimm.first) ) nvdimmNoGard = true; + #endif + + __calloutDimm(errl, i_trgt, dimm.first, nvdimmNoGard); } o_calloutMade = true; -- cgit v1.2.1