diff options
author | Caleb Palmer <cnpalmer@us.ibm.com> | 2019-08-22 08:58:55 -0500 |
---|---|---|
committer | Daniel M Crowell <dcrowell@us.ibm.com> | 2019-09-11 21:30:40 -0500 |
commit | f5de75d9d9b1b648ed0ad6d782390b0a793017ff (patch) | |
tree | 3e765e6d1149e43dd3135b1aaf58845007c6763c | |
parent | d329c59bc1cfa04669b828af30be473011fa1ec4 (diff) | |
download | talos-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.C | 10 | ||||
-rw-r--r-- | src/usr/diag/prdf/plat/prdfPlatServices.C | 7 | ||||
-rw-r--r-- | src/usr/diag/prdf/plat/prdfPlatServices.H | 12 |
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 //############################################################################## |