diff options
author | Roland Veloz <rveloz@us.ibm.com> | 2019-09-11 00:24:10 -0500 |
---|---|---|
committer | Daniel M Crowell <dcrowell@us.ibm.com> | 2019-09-16 08:10:18 -0500 |
commit | fa1e0b1361abb4c6e48c24d58e5caed29288e4ed (patch) | |
tree | 8cad4f475dcece4fddac114203a7bf48b0063627 /src | |
parent | 60fbee21b04909a953e4a8a742d6e74f52c43724 (diff) | |
download | talos-hostboot-fa1e0b1361abb4c6e48c24d58e5caed29288e4ed.tar.gz talos-hostboot-fa1e0b1361abb4c6e48c24d58e5caed29288e4ed.zip |
Changed the callout in the call NVM Health Status to be an NVDIMM
In the call nvDimmNvmCheckHealthStatus, the call is incorrectly using
HB when it should be associated with NVDIMM. Switched out the
addPartCallout with HWAS::BPM_PART_TYPE to a addHwCallout with the
given NVDIMM.
Also added more trace info to print out the registers that are being
retrieved.
Corrected the logic such that a good state passes. Apparently, the
way the code was written, a good or bad state, both would fail. Now
the good state passes and the bad state fails.
Change-Id: I46b62ce3fe5c5ac86efb501e2a91fdea8160b9b5
CQ: SW475265
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/83673
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/usr/isteps/nvdimm/runtime/nvdimm_rt.C | 65 |
1 files changed, 48 insertions, 17 deletions
diff --git a/src/usr/isteps/nvdimm/runtime/nvdimm_rt.C b/src/usr/isteps/nvdimm/runtime/nvdimm_rt.C index a9f630c74..76b38ce99 100644 --- a/src/usr/isteps/nvdimm/runtime/nvdimm_rt.C +++ b/src/usr/isteps/nvdimm/runtime/nvdimm_rt.C @@ -1096,8 +1096,16 @@ bool nvDimmCheckBadFlashBlockPercentage(TargetHandle_t i_nvDimm, const uint8_t i_maxPercentageAllowed, uint8_t &o_badFlashBlockPercentage) { + // Cache the HUID of the NVDIMM + uint32_t l_nvDimmHuid = get_huid( i_nvDimm ); + + TRACFCOMP(g_trac_nvdimm, ENTER_MRK"nvDimmCheckBadFlashBlockPercentage(): " + "NVDIMM(0x%.4X), max bad flash blocks allowed(%d)", + l_nvDimmHuid, + i_maxPercentageAllowed); + // The status of the check on the bad block percentage - bool l_didBadFlashBlockPercentageCheckPass(false); + bool l_didBadFlashBlockPercentageCheckPass(true); // The retrieved flash block percentage from register, initialize to zero o_badFlashBlockPercentage = 0; @@ -1105,9 +1113,6 @@ bool nvDimmCheckBadFlashBlockPercentage(TargetHandle_t i_nvDimm, // Handle to catch any errors errlHndl_t l_err(nullptr); - // Cache the HUID of the NVDIMM - uint32_t l_nvDimmHuid = get_huid( i_nvDimm ); - // Retrieve the percentage of bad blocks and validate TRACDCOMP(g_trac_nvdimm, INFO_MRK"nvDimmCheckBadFlashBlockPercentage(): " "Reading NVDIMM(0x%.8X) percentage of bad blocks from " @@ -1152,11 +1157,13 @@ bool nvDimmCheckBadFlashBlockPercentage(TargetHandle_t i_nvDimm, { TRACFCOMP(g_trac_nvdimm, ERR_MRK"nvDimmCheckBadFlashBlockPercentage(): " "FAIL: For NVDIMM (0x%.8X), the percentage of bad " - "flash blocks (%d) exceeds the maximum percentage " - "of bad flash blocks allowed (%d), marking this " - "as a fail", + "flash blocks (%d), read from register " + "FLASH_BAD_BLK_PCT(0x%.4X), exceeds the maximum " + "percentage of bad flash blocks allowed (%d), marking " + "this as a fail", l_nvDimmHuid, o_badFlashBlockPercentage, + FLASH_BAD_BLK_PCT, i_maxPercentageAllowed); // Set up the fail state, so caller can determine that the fail was @@ -1183,6 +1190,10 @@ bool nvDimmCheckBadFlashBlockPercentage(TargetHandle_t i_nvDimm, } // end if (l_badFlashBlockPercentage > i_maxPercentageAllowed) } // end if (l_err) ... else + TRACFCOMP(g_trac_nvdimm, EXIT_MRK"nvDimmCheckBadFlashBlockPercentage(): " + "Returning %s", + l_didBadFlashBlockPercentageCheckPass == true ? "true" : "false" ); + return l_didBadFlashBlockPercentageCheckPass; } @@ -1212,8 +1223,16 @@ bool nvDimmCheckFlashErrorCount(TargetHandle_t i_nvDimm, const uint32_t i_maxFlashErrorsAllowed, uint32_t &o_readFlashErrorCount) { + // Cache the HUID of the NVDIMM + uint32_t l_nvDimmHuid = get_huid( i_nvDimm ); + + TRACFCOMP(g_trac_nvdimm, ENTER_MRK"nvDimmCheckFlashErrorCount(): " + "NVDIMM(0x%.4X), max flash errors allowed(%d)", + l_nvDimmHuid, + i_maxFlashErrorsAllowed); + // The status of the check on the flash error count - bool l_didFlashErrorCountCheckPass(false); + bool l_didFlashErrorCountCheckPass(true); // The retrieved flash error count from register, initialize to zero o_readFlashErrorCount = 0; @@ -1221,9 +1240,6 @@ bool nvDimmCheckFlashErrorCount(TargetHandle_t i_nvDimm, // Handle to catch any errors errlHndl_t l_err(nullptr); - // Cache the HUID of the NVDIMM - uint32_t l_nvDimmHuid = get_huid( i_nvDimm ); - // The retrieved flash error count from a register uint8_t l_readFlashErrorCountByte(0); @@ -1291,12 +1307,17 @@ bool nvDimmCheckFlashErrorCount(TargetHandle_t i_nvDimm, if (o_readFlashErrorCount > i_maxFlashErrorsAllowed) { TRACFCOMP(g_trac_nvdimm, ERR_MRK"nvDimmCheckFlashErrorCount(): " - "FAIL: For NVDIMM (0x%.8X), the flash error " - "count (%d) exceeds the maximum number of flash " - "errors allowed (%d), marking this as a fail", - l_nvDimmHuid, - o_readFlashErrorCount, - i_maxFlashErrorsAllowed); + "FAIL: For NVDIMM (0x%.8X), the flash error count (%d), " + "read from registers FLASH_ERROR_COUNT0(0x%.4X), " + "FLASH_ERROR_COUNT1(0x%.4X) and FLASH_ERROR_COUNT2(0x%.4X), " + "exceeds the maximum number of flash " + "errors allowed (%d), marking this as a fail", + l_nvDimmHuid, + o_readFlashErrorCount, + FLASH_ERROR_COUNT0, + FLASH_ERROR_COUNT1, + FLASH_ERROR_COUNT2, + i_maxFlashErrorsAllowed); // Set up the fail state, so caller can determine that the fail was // due to error count exceeding the max errors allowed. @@ -1321,6 +1342,10 @@ bool nvDimmCheckFlashErrorCount(TargetHandle_t i_nvDimm, } } // end if (o_readFlashErrorCount) + TRACFCOMP(g_trac_nvdimm, EXIT_MRK"nvDimmCheckFlashErrorCount(): " + "Returning %s", + l_didFlashErrorCountCheckPass == true ? "true" : "false" ); + return l_didFlashErrorCountCheckPass; } @@ -1488,6 +1513,12 @@ bool nvDimmNvmCheckHealthStatus(const TargetHandleList &i_nvDimmTargetList) l_err->collectTrace(NVDIMM_COMP_NAME); nvdimmAddVendorLog(l_nvDimm, l_err); + // Add a DIMM callout + l_err->addHwCallout( l_nvDimm, + HWAS::SRCI_PRIORITY_HIGH, + HWAS::NO_DECONFIG, + HWAS::GARD_NULL ); + // Collect the error errlCommit(l_err, NVDIMM_COMP_ID); |