summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Raybuck <matthew.raybuck@ibm.com>2019-09-10 12:17:50 -0500
committerDaniel M Crowell <dcrowell@us.ibm.com>2019-09-27 12:43:58 -0500
commita2b260834429284487442f2241d821a4bbda7454 (patch)
tree2497f060ba33d18dd0ed21952e964bdcbd7f0778
parent36a6a52a59eadc022c2d9e3db5cbd779b790a90f (diff)
downloadtalos-hostboot-a2b260834429284487442f2241d821a4bbda7454.tar.gz
talos-hostboot-a2b260834429284487442f2241d821a4bbda7454.zip
BPM Update Tweaks
Adds procedure and part callouts where necessary and updates some comments. Change-Id: Ia94add82b7ccbafc11243452d616898133297ecd RTC:215466 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/83535 Reviewed-by: Corey V Swenson <cswenson@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: 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>
-rw-r--r--src/usr/isteps/nvdimm/bpm_update.C30
1 files changed, 15 insertions, 15 deletions
diff --git a/src/usr/isteps/nvdimm/bpm_update.C b/src/usr/isteps/nvdimm/bpm_update.C
index 1208d7841..df0857a7f 100644
--- a/src/usr/isteps/nvdimm/bpm_update.C
+++ b/src/usr/isteps/nvdimm/bpm_update.C
@@ -734,9 +734,8 @@ errlHndl_t Bpm::issueCommand(const uint8_t i_command,
payloadHeaderDataSize,
TARGETING::get_huid(iv_nvdimm))
);
- errl->addPartCallout(iv_nvdimm,
- HWAS::BPM_PART_TYPE,
- HWAS::SRCI_PRIORITY_HIGH);
+ errl->addProcedureCallout(HWAS::EPUB_PRC_HB_CODE,
+ HWAS::SRCI_PRIORITY_HIGH);
errl->collectTrace(BPM_COMP_NAME);
nvdimmAddPage4Regs(iv_nvdimm,errl);
nvdimmAddVendorLog(iv_nvdimm, errl);
@@ -1254,6 +1253,9 @@ errlHndl_t Bpm::enterUpdateMode()
BPM_RC::BPM_START_UPDATE,
BPM_RC::BPM_ENTER_UPDATE_MODE,
TARGETING::get_huid(iv_nvdimm));
+ infoErrl->addPartCallout(iv_nvdimm,
+ HWAS::BPM_PART_TYPE,
+ HWAS::SRCI_PRIORITY_HIGH);
infoErrl->collectTrace(BPM_COMP_NAME);
nvdimmAddVendorLog(iv_nvdimm, infoErrl);
nvdimmAddPage4Regs(iv_nvdimm, infoErrl);
@@ -3749,9 +3751,16 @@ errlHndl_t Bpm::runConfigUpdates(BpmConfigLidImage i_configImage)
errl = updateConfig();
if (errl != nullptr)
{
- // If the config update fails for any reason we should erase the
- // firmware section so that subsequent IPLs/attempts will not think
- // that we have a fully valid image when we do not.
+ // We are returning with an error. Since the error is from the
+ // config part of the updates it's best to erase the firmware on the
+ // BPM so that updates will be attempted on it in the future.
+ // Because there isn't a way to determine the validity of the config
+ // section on the BPM we're completely reliant on what the firmware
+ // version reports to decide if we need to update or not. If we see
+ // that the firmware version matches the image but for some reason
+ // the config data wasn't updated properly we could believe we
+ // updated successfully when, in fact, we just left the BPM in a bad
+ // state.
if ( (iv_firmwareStartAddress == MAIN_PROGRAM_ADDRESS)
|| (iv_firmwareStartAddress == MAIN_PROGRAM_ADDRESS_ALT))
{
@@ -3887,15 +3896,6 @@ errlHndl_t Bpm::runFirmwareUpdates(BpmFirmwareLidImage i_image)
handleMultipleErrors(errl, exitErrl);
}
- // Reset controller and unlock encryption if necessary
- exitErrl = nvdimmResetController(iv_nvdimm);
- if (exitErrl != nullptr)
- {
- TRACFCOMP(g_trac_bpm, ERR_MRK"Bpm::runFirmwareUpdates() "
- "Couldn't reset NVDIMM controller.");
- handleMultipleErrors(errl, exitErrl);
- }
-
return errl;
}
OpenPOWER on IntegriCloud