summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorCorey Swenson <cswenson@us.ibm.com>2019-07-01 17:22:03 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2019-07-10 15:35:29 -0500
commitc3517840951622956b54c5ae29dbbed36b640534 (patch)
tree8ee56fffa5a333d42a83cb7b7649fbafa0022e3a /src/usr
parent80a0d27f8ab7e02643d69c1fcf9316963500b73e (diff)
downloadtalos-hostboot-c3517840951622956b54c5ae29dbbed36b640534.tar.gz
talos-hostboot-c3517840951622956b54c5ae29dbbed36b640534.zip
Move gen_keys and encrypt_unlock from istep 14 to 13
Need to unlock nvdimm encryption before draminit. CQ:SW469239 Change-Id: Ib8d228470431082f3450cdeb52cfef1c7cff18dc Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/79873 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Roland Veloz <rveloz@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> Reviewed-by: Matt Derksen <mderkse1@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/isteps/istep13/call_mss_draminit.C9
-rw-r--r--src/usr/isteps/istep14/call_mss_power_cleanup.C2
-rw-r--r--src/usr/isteps/nvdimm/nvdimm.C6
3 files changed, 15 insertions, 2 deletions
diff --git a/src/usr/isteps/istep13/call_mss_draminit.C b/src/usr/isteps/istep13/call_mss_draminit.C
index 7067e45ff..012d3111a 100644
--- a/src/usr/isteps/istep13/call_mss_draminit.C
+++ b/src/usr/isteps/istep13/call_mss_draminit.C
@@ -219,6 +219,10 @@ void nimbus_mss_draminit(IStepError & io_istepError)
TARGETING::TargetHandleList l_dimmTargetList;
getChildAffinityTargets(l_dimmTargetList, l_mcbist_target, CLASS_NA, TYPE_DIMM);
+ // Generate valid encryption keys
+ NVDIMM::nvdimm_gen_keys();
+
+ // Walk the dimm list and init nvdimms
for (const auto & l_dimm : l_dimmTargetList)
{
if (isNVDIMM(l_dimm))
@@ -226,7 +230,12 @@ void nimbus_mss_draminit(IStepError & io_istepError)
NVDIMM::nvdimm_init(l_dimm);
}
}
+ // After nvdimm init
+ // - nvdimm controller initialized
+ // - nvdimm encryption unlocked
+ // - nvdimms disarmed
#endif
+
FAPI_INVOKE_HWP(l_err, p9_mss_draminit, l_fapi_mcbist_target);
if (l_err)
diff --git a/src/usr/isteps/istep14/call_mss_power_cleanup.C b/src/usr/isteps/istep14/call_mss_power_cleanup.C
index db6bdf228..524d2a536 100644
--- a/src/usr/isteps/istep14/call_mss_power_cleanup.C
+++ b/src/usr/isteps/istep14/call_mss_power_cleanup.C
@@ -131,8 +131,6 @@ void* call_mss_power_cleanup (void *io_pArgs)
// Run the nvdimm management functions if the list is not empty
if (!l_nvdimmTargetList.empty()){
- NVDIMM::nvdimm_gen_keys();
- NVDIMM::nvdimm_encrypt_unlock(l_nvdimmTargetList);
NVDIMM::nvdimm_restore(l_nvdimmTargetList);
NVDIMM::nvdimm_encrypt_enable(l_nvdimmTargetList);
}
diff --git a/src/usr/isteps/nvdimm/nvdimm.C b/src/usr/isteps/nvdimm/nvdimm.C
index 4ccac2e07..d2ca8fc95 100644
--- a/src/usr/isteps/nvdimm/nvdimm.C
+++ b/src/usr/isteps/nvdimm/nvdimm.C
@@ -1580,6 +1580,7 @@ void nvdimm_restore(TargetHandleList &i_nvdimmList)
* - Checks for ready state
* - Gathers timeout values
* - Waits for the ongoing backup to complete
+ * - Unlocks encryption
* - Disarms the trigger for draminit
*
* @param[in] i_nvdimm - nvdimm target
@@ -1629,6 +1630,11 @@ void nvdimm_init(Target *i_nvdimm)
break;
}
+ // Unlock encryption if enabled
+ TargetHandleList l_nvdimmTargetList;
+ l_nvdimmTargetList.push_back(i_nvdimm);
+ NVDIMM::nvdimm_encrypt_unlock(l_nvdimmTargetList);
+
// Disarm the ddr_resetn here in case it came in armed. When the nvdimm is
// armed the reset_n is masked off from the host, meaning the drams won't
// be able to get reset properly later, causing training to fail.
OpenPOWER on IntegriCloud