diff options
| author | Jaymes Wilks <mjwilks@us.ibm.com> | 2018-06-14 09:26:30 -0500 |
|---|---|---|
| committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-06-28 22:47:58 -0400 |
| commit | ef1e2276640040b2bbf187a1d85c8bd6929f4d56 (patch) | |
| tree | a34b2c4d647e3f047a8fed78f30596b548edbcb2 /src/usr/sbe | |
| parent | cf258fcfb753bafcfac0659ded5f312c793d047d (diff) | |
| download | talos-hostboot-ef1e2276640040b2bbf187a1d85c8bd6929f4d56.tar.gz talos-hostboot-ef1e2276640040b2bbf187a1d85c8bd6929f4d56.zip | |
In non-MNFG, only match SBE keys for the sides that boot
FSP was not IPL'ing from SBE side 1 when production key is corrupt
in SEEPROM of SBE side 0 (due to the key mismatch check). This
change gets around that by only matching SBE keys for the sides
that booted in non-MNFG case.
Change-Id: I1dfcb5c7f7e281125fdbcfc8b8f3a84747c90f59
CQ:SW420430
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/60571
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: Nicholas E. Bofferding <bofferdn@us.ibm.com>
Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com>
Reviewed-by: ILYA SMIRNOV <ismirno@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/sbe')
| -rw-r--r-- | src/usr/sbe/sbe_update.C | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/usr/sbe/sbe_update.C b/src/usr/sbe/sbe_update.C index c930706cc..63c8c458e 100644 --- a/src/usr/sbe/sbe_update.C +++ b/src/usr/sbe/sbe_update.C @@ -1624,7 +1624,8 @@ namespace SBE ///////////////////////////////////////////////////////////////////// errlHndl_t getSbeBootSeeprom(TARGETING::Target* i_target, - sbeSeepromSide_t& o_bootSide) + sbeSeepromSide_t& o_bootSide, + const bool i_failoverToMaster) { TRACFCOMP( g_trac_sbe, ENTER_MRK"getSbeBootSeeprom()" ); @@ -1635,15 +1636,22 @@ namespace SBE o_bootSide = SBE_SEEPROM_INVALID; do{ + assert(i_target != nullptr,"Bug! Attempting to get the boot seeprom of a null target."); - TARGETING::Target * l_target=i_target; + TARGETING::Target * l_target=i_target; // Get the Master Proc Chip Target for comparisons later TargetService& tS = targetService(); err = tS.queryMasterProcChipTargetHandle( masterProcChipTargetHandle); - if( (i_target != masterProcChipTargetHandle) && + if ( err ) + { + break; + } + + if( i_failoverToMaster && + (i_target != masterProcChipTargetHandle) && !(i_target->getAttr<ATTR_SBE_IS_STARTED>()) ) { l_target=masterProcChipTargetHandle; |

