Skip to content

Commit b221671

Browse files
mderkse1Nicholas E Bofferding
authored andcommitted
NVDIMM Erase error handle not working in IPL Arm handling
NVDIMM erase error handling is failing because nvdimmDisarm() checks ATTR_NVDIMM_ARMED before disarming the nvdimm. Disarming an nvdimm that is already disarmed should not be harmful. Also erase error should correctly set the error status as 0x01 (memory unable to preserve future content) Change-Id: I8a710343478691c87f1570fd30074c2543d3373c CQ: SW477541 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/84662 Reviewed-by: TSUNG K YEUNG <tyeung@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Corey V Swenson <cswenson@us.ibm.com> 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> Reviewed-by: Nicholas E Bofferding <bofferdn@us.ibm.com>
1 parent daeac77 commit b221671

File tree

2 files changed

+3
-12
lines changed

2 files changed

+3
-12
lines changed

src/usr/isteps/nvdimm/nvdimm.C

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1402,7 +1402,7 @@ errlHndl_t nvdimmEraseCheck(Target *i_nvdimm, bool i_statusOnly)
14021402
l_err = nvdimmReadReg ( i_nvdimm, ERASE_STATUS, l_data);
14031403
if (l_err)
14041404
{
1405-
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR);
1405+
nvdimmSetStatusFlag(i_nvdimm, NSTD_VAL_DISARMED);
14061406
TRACFCOMP(g_trac_nvdimm, ERR_MRK"nvdimm[%X], failed to read erase status",
14071407
get_huid(i_nvdimm));
14081408
break;
@@ -1421,7 +1421,7 @@ errlHndl_t nvdimmEraseCheck(Target *i_nvdimm, bool i_statusOnly)
14211421
l_err = nvdimmValidImage( i_nvdimm, l_valid );
14221422
if (l_err)
14231423
{
1424-
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR);
1424+
nvdimmSetStatusFlag(i_nvdimm, NSTD_VAL_DISARMED);
14251425
TRACFCOMP(g_trac_nvdimm, ERR_MRK"nvdimm[%X] Failed to detect valid image",
14261426
get_huid(i_nvdimm));
14271427
break;
@@ -1430,7 +1430,7 @@ errlHndl_t nvdimmEraseCheck(Target *i_nvdimm, bool i_statusOnly)
14301430

14311431
if ( (l_data & ERASE_ERROR) || l_valid )
14321432
{
1433-
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR);
1433+
nvdimmSetStatusFlag(i_nvdimm, NSTD_VAL_DISARMED);
14341434
TRACFCOMP(g_trac_nvdimm, ERR_MRK"nvdimm[%X] NVDimm Erase failed due to error (ERASE_STATUS: 0x%02X, Image %s)",
14351435
get_huid(i_nvdimm), l_data, l_valid?"not erased":"erased");
14361436
/*@

src/usr/isteps/nvdimm/runtime/nvdimm_rt.C

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -844,15 +844,6 @@ bool nvdimmDisarm(TargetHandleList &i_nvdimmTargetList)
844844

845845
for (auto const l_nvdimm : i_nvdimmTargetList)
846846
{
847-
// skip if the nvdimm is already disarmed
848-
ATTR_NVDIMM_ARMED_type l_armed_state = {};
849-
l_armed_state = l_nvdimm->getAttr<ATTR_NVDIMM_ARMED>();
850-
if (!l_armed_state.armed)
851-
{
852-
TRACFCOMP(g_trac_nvdimm, "nvdimmDisarm() nvdimm[%X] called when already disarmed", get_huid(l_nvdimm));
853-
continue;
854-
}
855-
856847
l_err = NVDIMM::nvdimmChangeArmState(l_nvdimm, DISARM_TRIGGER);
857848
// If we run into any error here we will just
858849
// commit the error log and move on. Let the

0 commit comments

Comments
 (0)