summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2019-08-22 08:58:55 -0500
committerDaniel M Crowell <dcrowell@us.ibm.com>2019-09-11 21:30:40 -0500
commitf5de75d9d9b1b648ed0ad6d782390b0a793017ff (patch)
tree3e765e6d1149e43dd3135b1aaf58845007c6763c
parentd329c59bc1cfa04669b828af30be473011fa1ec4 (diff)
downloadtalos-hostboot-f5de75d9d9b1b648ed0ad6d782390b0a793017ff.tar.gz
talos-hostboot-f5de75d9d9b1b648ed0ad6d782390b0a793017ff.zip
PRD: NVDIMM Additional FFDC for error analysis
Change-Id: I5e2a11132ee0b1a0092557061f0b4ed70e3c4928 CQ: SW473592 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/82762 Reviewed-by: Benjamen G Tyner <ben.tyner@ibm.com> Reviewed-by: Zane C Shelley <zshelle@us.ibm.com> Reviewed-by: Brian J Stegmiller <bjs@us.ibm.com> Reviewed-by: Paul Greenwood <paul.greenwood@ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
-rw-r--r--src/usr/diag/prdf/plat/mem/prdfP9Mca.C10
-rw-r--r--src/usr/diag/prdf/plat/prdfPlatServices.C7
-rw-r--r--src/usr/diag/prdf/plat/prdfPlatServices.H12
3 files changed, 28 insertions, 1 deletions
diff --git a/src/usr/diag/prdf/plat/mem/prdfP9Mca.C b/src/usr/diag/prdf/plat/mem/prdfP9Mca.C
index 441930b03..2292b4b22 100644
--- a/src/usr/diag/prdf/plat/mem/prdfP9Mca.C
+++ b/src/usr/diag/prdf/plat/mem/prdfP9Mca.C
@@ -1202,6 +1202,16 @@ int32_t AnalyzeNvdimmHealthStatRegs( ExtensibleChip * i_chip,
// Skip any non-NVDIMMs
if ( !isNVDIMM(dimm) ) continue;
+ // Add SMART-specific, page 4 registers to FFDC
+ errlHndl_t mainErrl = nullptr;
+ mainErrl = ServiceGeneratorClass::ThisServiceGenerator().getErrl();
+ if ( nullptr == mainErrl )
+ {
+ PRDF_ERR( PRDF_FUNC "Failed to get the global error log." );
+ continue;
+ }
+ PlatServices::nvdimmAddPage4Ffdc( dimm, mainErrl );
+
// De-assert the EVENT_N pin by setting bit 2 in NVDIMM_MGT_CMD1
l_rc = __deassertEventN( dimm );
if ( SUCCESS != l_rc ) continue;
diff --git a/src/usr/diag/prdf/plat/prdfPlatServices.C b/src/usr/diag/prdf/plat/prdfPlatServices.C
index 600f95e97..48d26f8b8 100644
--- a/src/usr/diag/prdf/plat/prdfPlatServices.C
+++ b/src/usr/diag/prdf/plat/prdfPlatServices.C
@@ -763,6 +763,13 @@ uint32_t nvdimmNotifyProtChange( TARGETING::TargetHandle_t i_target,
#undef PRDF_FUNC
}
+
+void nvdimmAddPage4Ffdc( TARGETING::TargetHandle_t i_nvdimm,
+ errlHndl_t & io_errl )
+{
+ NVDIMM::nvdimmAddPage4Regs( i_nvdimm, io_errl );
+}
+
#endif
//##############################################################################
diff --git a/src/usr/diag/prdf/plat/prdfPlatServices.H b/src/usr/diag/prdf/plat/prdfPlatServices.H
index 78b57e688..540742fd7 100644
--- a/src/usr/diag/prdf/plat/prdfPlatServices.H
+++ b/src/usr/diag/prdf/plat/prdfPlatServices.H
@@ -180,8 +180,18 @@ bool isRowRepairEnabled( ExtensibleChip * i_chip, const MemRank & i_rank );
* @param i_target Processor with NVDIMM
* @param i_state Protection state of NVDIMM
*/
-uint32_t nvdimmNotifyProtChange( TARGETING::Target * i_target,
+uint32_t nvdimmNotifyProtChange( TARGETING::TargetHandle_t i_target,
const NVDIMM::nvdimm_protection_t i_state );
+
+/**
+ * @brief Add SMART-specific, page 4 NVDIMM registers to the FFDC
+ *
+ * @param i_nvdimm An nvdimm target
+ * @param io_errl Error log to add the FFDC to
+ */
+void nvdimmAddPage4Ffdc( TARGETING::TargetHandle_t i_nvdimm,
+ errlHndl_t & io_errl );
+
#endif
//##############################################################################
OpenPOWER on IntegriCloud