diff options
| author | Corey Swenson <cswenson@us.ibm.com> | 2019-07-01 17:22:03 -0500 |
|---|---|---|
| committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2019-07-10 15:35:29 -0500 |
| commit | c3517840951622956b54c5ae29dbbed36b640534 (patch) | |
| tree | 8ee56fffa5a333d42a83cb7b7649fbafa0022e3a /src/usr | |
| parent | 80a0d27f8ab7e02643d69c1fcf9316963500b73e (diff) | |
| download | talos-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.C | 9 | ||||
| -rw-r--r-- | src/usr/isteps/istep14/call_mss_power_cleanup.C | 2 | ||||
| -rw-r--r-- | src/usr/isteps/nvdimm/nvdimm.C | 6 |
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. |

