summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/plat/mem
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2019-07-17 15:20:07 -0500
committerZane C Shelley <zshelle@us.ibm.com>2019-07-30 09:22:52 -0500
commit37af28e0577faecd3c5f2d6b303e842687ea6d39 (patch)
tree3e09b2659c7af9da7f56369985318f816063710c /src/usr/diag/prdf/plat/mem
parentddf90e53a96d0d99974d9520e113cc995738bc0f (diff)
downloadtalos-hostboot-37af28e0577faecd3c5f2d6b303e842687ea6d39.tar.gz
talos-hostboot-37af28e0577faecd3c5f2d6b303e842687ea6d39.zip
PRD: NVDIMM avoid gard for general mem errors only for IPL
Change-Id: Iaa1c8b4e92377f2b6bf854f21ee334e915745ff5 CQ: SW470603 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/80608 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Brian J Stegmiller <bjs@us.ibm.com> Reviewed-by: Paul Greenwood <paul.greenwood@ibm.com> Reviewed-by: Zane C Shelley <zshelle@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/81062 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/plat/mem')
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfMemDynDealloc.C6
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfP9Mca.C13
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfRestoreDramRepairs.C13
3 files changed, 24 insertions, 8 deletions
diff --git a/src/usr/diag/prdf/plat/mem/prdfMemDynDealloc.C b/src/usr/diag/prdf/plat/mem/prdfMemDynDealloc.C
index 054a35a27..0ac004642 100644
--- a/src/usr/diag/prdf/plat/mem/prdfMemDynDealloc.C
+++ b/src/usr/diag/prdf/plat/mem/prdfMemDynDealloc.C
@@ -1354,19 +1354,21 @@ int32_t dimmList( TargetHandleList & i_dimmList )
PRDF_TRAC( PRDF_FUNC "Predictive dealloc for start addr: 0x%016llx "
"end addr: 0x%016llx", ssAddr, seAddr );
+ #ifdef CONFIG_NVDIMM
// If the DIMM is an NVDIMM, send a message to PHYP that a save/restore
// may work.
if ( isNVDIMM(*it) )
{
- uint32_t l_rc = PlatServices::nvdimmNotifyPhypProtChange( *it,
+ uint32_t l_rc = PlatServices::nvdimmNotifyProtChange( *it,
NVDIMM::NVDIMM_RISKY_HW_ERROR );
if ( SUCCESS != l_rc )
{
- PRDF_TRAC( PRDF_FUNC "nvdimmNotifyPhypProtChange(0x%08x) "
+ PRDF_TRAC( PRDF_FUNC "nvdimmNotifyProtChange(0x%08x) "
"failed.", getHuid(*it) );
continue;
}
}
+ #endif
}
return o_rc;
diff --git a/src/usr/diag/prdf/plat/mem/prdfP9Mca.C b/src/usr/diag/prdf/plat/mem/prdfP9Mca.C
index 1bd8e2256..d415047ff 100644
--- a/src/usr/diag/prdf/plat/mem/prdfP9Mca.C
+++ b/src/usr/diag/prdf/plat/mem/prdfP9Mca.C
@@ -27,7 +27,6 @@
#include <iipServiceDataCollector.h>
#include <prdfExtensibleChip.H>
#include <prdfPluginMap.H>
-#include <isteps/nvdimm/nvdimm.H>
// Platform includes
#include <prdfMemDbUtils.H>
@@ -747,6 +746,7 @@ int32_t AnalyzeNvdimmHealthStatRegs( ExtensibleChip * i_chip,
{
#define PRDF_FUNC "[nimbus_mca::AnalyzeNvdimmHealthStatRegs] "
+ #ifdef CONFIG_NVDIMM
#ifdef __HOSTBOOT_RUNTIME
uint32_t l_rc = SUCCESS;
@@ -786,7 +786,7 @@ int32_t AnalyzeNvdimmHealthStatRegs( ExtensibleChip * i_chip,
io_sc.service_data->SetThresholdMaskId(0);
// Send message to PHYP that save/restore may work
- l_rc = PlatServices::nvdimmNotifyPhypProtChange( dimm,
+ l_rc = PlatServices::nvdimmNotifyProtChange( dimm,
NVDIMM::NVDIMM_RISKY_HW_ERROR );
if ( SUCCESS != l_rc ) continue;
@@ -829,7 +829,14 @@ int32_t AnalyzeNvdimmHealthStatRegs( ExtensibleChip * i_chip,
PRDF_ERR( PRDF_FUNC "Unexpected call to analyze NVDIMMs at IPL." );
io_sc.service_data->SetCallout( LEVEL2_SUPPORT, MRU_HIGH, NO_GARD );
- #endif
+ #endif // end runtime vs IPL check
+
+ #else // CONFIG_NVDIMM not defined
+
+ PRDF_ERR( PRDF_FUNC "CONFIG_NVDIMM not defined." );
+ io_sc.service_data->SetCallout( LEVEL2_SUPPORT, MRU_HIGH, NO_GARD );
+
+ #endif // end CONFIG_NVDIMM check
return SUCCESS; // nothing to return to rule code
diff --git a/src/usr/diag/prdf/plat/mem/prdfRestoreDramRepairs.C b/src/usr/diag/prdf/plat/mem/prdfRestoreDramRepairs.C
index 3acf7bcb1..5afc48016 100644
--- a/src/usr/diag/prdf/plat/mem/prdfRestoreDramRepairs.C
+++ b/src/usr/diag/prdf/plat/mem/prdfRestoreDramRepairs.C
@@ -112,17 +112,24 @@ void __calloutDimm( errlHndl_t & io_errl, TargetHandle_t i_portTrgt,
HWAS::DeconfigEnum deconfigPolicy = HWAS::DELAYED_DECONFIG;
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 set the appropriate attribute to indicate a
+ // gard/deconfig and call nvdimmNotifyProtChange to indicate a
// save/restore may work
if ( isNVDIMM(i_dimmTrgt) )
{
deconfigPolicy = HWAS::NO_DECONFIG;
gardPolicy = HWAS::GARD_NULL;
- i_dimmTrgt->setAttr<ATTR_NV_STATUS_FLAG>(0x40);
+ uint32_t l_rc = PlatServices::nvdimmNotifyProtChange( i_dimmTrgt,
+ NVDIMM::NVDIMM_RISKY_HW_ERROR );
+ if ( SUCCESS != l_rc )
+ {
+ PRDF_TRAC( PRDF_FUNC "nvdimmNotifyProtChange(0x%08x) "
+ "failed.", PlatServices::getHuid(i_dimmTrgt) );
+ }
}
-
+ #endif
io_errl->addHwCallout( i_dimmTrgt, HWAS::SRCI_PRIORITY_HIGH,
deconfigPolicy, gardPolicy );
OpenPOWER on IntegriCloud