summaryrefslogtreecommitdiffstats
path: root/src/usr/isteps/nvdimm/nvdimmErrorLog.C
diff options
context:
space:
mode:
authorMATTHEW I. HICKMAN <matthew.hickman@ibm.com>2019-08-19 14:08:48 -0500
committerDaniel M Crowell <dcrowell@us.ibm.com>2019-08-27 22:14:40 -0500
commit01ac1b8dc22e3cba20a194fee7d741b749658223 (patch)
treefb70bac829f4f951b583b17d24ae316268cbb760 /src/usr/isteps/nvdimm/nvdimmErrorLog.C
parent845fb4492dce998d95a0ab2542b05c866c0f5edc (diff)
downloadtalos-hostboot-01ac1b8dc22e3cba20a194fee7d741b749658223.tar.gz
talos-hostboot-01ac1b8dc22e3cba20a194fee7d741b749658223.zip
Added security bit and fir handling, gard and trace fixes
Change-Id: I8160d9662859232dfd612b3a2f5c1c522c02e308 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/82534 Reviewed-by: Matt Derksen <mderkse1@us.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: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/isteps/nvdimm/nvdimmErrorLog.C')
-rw-r--r--src/usr/isteps/nvdimm/nvdimmErrorLog.C140
1 files changed, 76 insertions, 64 deletions
diff --git a/src/usr/isteps/nvdimm/nvdimmErrorLog.C b/src/usr/isteps/nvdimm/nvdimmErrorLog.C
index ccd1ad801..87866f2e1 100644
--- a/src/usr/isteps/nvdimm/nvdimmErrorLog.C
+++ b/src/usr/isteps/nvdimm/nvdimmErrorLog.C
@@ -32,7 +32,6 @@
#include <targeting/common/util.H>
#include <targeting/common/utilFilter.H>
#include <fapi2.H>
-#include <lib/shared/nimbus_defaults.H>
#include <isteps/nvdimm/nvdimmreasoncodes.H>
#include <isteps/nvdimm/nvdimm.H>
#include "errlud_nvdimm.H"
@@ -254,6 +253,14 @@ void nvdimmTraceRegs(Target *i_nvdimm, nvdimm_reg_t& o_RegInfo)
errlCommit( l_err, NVDIMM_COMP_ID );
}
o_RegInfo.Set_Event_Notification_Status = l_data;
+
+ // Read NVDIMM Encryption Configuration and Status Register for Security Errors
+ l_err = nvdimmReadReg(i_nvdimm, ENCRYPTION_CONFIG_STATUS, l_data);
+ if(l_err)
+ {
+ errlCommit( l_err, NVDIMM_COMP_ID );
+ }
+ o_RegInfo.Encryption_Config_Status = l_data;
}
/**
@@ -294,16 +301,16 @@ bool nvdimmCalloutDimm(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR_VAL_SR);
// Callout dimm but do not deconfig or gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW);
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_LOW,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_NULL);
}
else
{
// Callout, deconfig and gard the dimm
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW,
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_HIGH,
HWAS::DECONFIG,
HWAS::GARD_Fatal);
}
@@ -332,17 +339,16 @@ bool nvdimmCalloutDimm(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR_VAL_SR);
// Callout dimm but do not deconfig or gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW);
-
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_LOW,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_NULL);
}
else
{
// Callout, deconfig and gard the dimm
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW,
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_HIGH,
HWAS::DECONFIG,
HWAS::GARD_Fatal);
}
@@ -371,10 +377,11 @@ bool nvdimmCalloutDimm(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
// Set ATTR_NV_STATUS_FLAG to partially working as data may still persist
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR_VAL_SR);
- // Callout dimm but do not deconfig or gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW);
+ // Callout dimm and gard
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_LOW,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_Fatal);
}
else
{
@@ -385,12 +392,11 @@ bool nvdimmCalloutDimm(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
errlCommit( l_err, NVDIMM_COMP_ID );
}
- // Callout, deconfig and gard the dimm
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
+ // Callout the dimm but do not deconfig or gard
+ o_err->addHwCallout( i_nvdimm,
HWAS::SRCI_PRIORITY_LOW,
HWAS::NO_DECONFIG,
- HWAS::GARD_Fatal);
+ HWAS::GARD_NULL);
}
break;
@@ -400,9 +406,10 @@ bool nvdimmCalloutDimm(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
case HEALTH_POST_ARM:
{
// Callout dimm but do not deconfig or gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW);
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_LOW,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_NULL);
// Set ATTR_NV_STATUS_FLAG to partially working as data may persist despite errors
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR_VAL_SR);
@@ -461,16 +468,16 @@ bool nvdimmBPMCableCallout(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR_VAL_SR);
// Callout dimm but do not deconfig or gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW);
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_LOW,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_NULL);
}
else
{
// Callout dimm, deconfig and gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW,
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_HIGH,
HWAS::DECONFIG,
HWAS::GARD_Fatal);
}
@@ -507,16 +514,16 @@ bool nvdimmBPMCableCallout(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR_VAL_SR);
// Callout dimm but do not deconfig or gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW);
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_LOW,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_NULL);
}
else
{
// Callout dimm, deconfig and gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW,
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_HIGH,
HWAS::DECONFIG,
HWAS::GARD_Fatal);
}
@@ -553,9 +560,10 @@ bool nvdimmBPMCableCallout(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR_VAL_SR);
// Callout dimm but do not deconfig or gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW);
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_LOW,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_NULL);
}
else
{
@@ -566,9 +574,8 @@ bool nvdimmBPMCableCallout(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
errlCommit( l_err, NVDIMM_COMP_ID );
}
// Callout dimm, deconfig and gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW,
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_HIGH,
HWAS::DECONFIG,
HWAS::GARD_Fatal);
}
@@ -586,9 +593,10 @@ bool nvdimmBPMCableCallout(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
o_err->addPartCallout( i_nvdimm,
HWAS::BPM_CABLE_PART_TYPE,
HWAS::SRCI_PRIORITY_HIGH);
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW);
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_LOW,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_NULL);
// Set ATTR_NV_STATUS_FLAG to partially working as data may still persist
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR_VAL_SR);
@@ -631,9 +639,10 @@ bool nvdimmBPMCallout(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
HWAS::SRCI_PRIORITY_HIGH);
// Callout dimm but do not deconfig or gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW);
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_LOW,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_NULL);
// Set ATTR_NV_STATUS_FLAG to partially working as data may still persist
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR_VAL_SR);
@@ -650,9 +659,10 @@ bool nvdimmBPMCallout(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
HWAS::SRCI_PRIORITY_HIGH);
// Callout dimm but do not deconfig or gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW);
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_LOW,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_NULL);
// Set ATTR_NV_STATUS_FLAG to partially working as data may still persist
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR_VAL_SR);
@@ -680,9 +690,10 @@ bool nvdimmBPMCallout(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
HWAS::SRCI_PRIORITY_HIGH);
// Callout dimm but do not deconfig or gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW);
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_LOW,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_NULL);
// Check arm status and set dimm status accordingly
if(!l_continue)
@@ -712,9 +723,10 @@ bool nvdimmBPMCallout(Target *i_nvdimm, uint8_t i_step, errlHndl_t& o_err)
HWAS::SRCI_PRIORITY_HIGH);
// Callout dimm but do not deconfig or gard
- o_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW);
+ o_err->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_LOW,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_NULL);
// Set ATTR_NV_STATUS_FLAG to partially working as data may still persist
nvdimmSetStatusFlag(i_nvdimm, NSTD_ERR_VAL_SR);
@@ -1052,9 +1064,8 @@ errlHndl_t nvdimmHealthStatusCheck(Target *i_nvdimm, uint8_t i_step, bool& o_con
if(l_arm_timeout)
{
- // Callout, deconfig and gard the dimm
- l_err->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
+ // Callout and gard the dimm
+ l_err->addHwCallout( i_nvdimm,
HWAS::SRCI_PRIORITY_LOW,
HWAS::NO_DECONFIG,
HWAS::GARD_Fatal);
@@ -1288,9 +1299,10 @@ errlHndl_t nvdimmHealthStatusCheck(Target *i_nvdimm, uint8_t i_step, bool& o_con
ERRORLOG::ErrlEntry::NO_SW_CALLOUT );
o_continue = true;
// Callout dimm but no deconfig and gard
- l_err_t->addPartCallout( i_nvdimm,
- HWAS::NV_CONTROLLER_PART_TYPE,
- HWAS::SRCI_PRIORITY_LOW);
+ l_err_t->addHwCallout( i_nvdimm,
+ HWAS::SRCI_PRIORITY_LOW,
+ HWAS::NO_DECONFIG,
+ HWAS::GARD_NULL);
}
}
OpenPOWER on IntegriCloud