diff options
| author | Nick Bofferding <bofferdn@us.ibm.com> | 2017-08-11 15:29:05 -0500 |
|---|---|---|
| committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-08-22 11:19:10 -0400 |
| commit | b3ad5819f9cbed67ceb0fa74d28d2f93227bbbcb (patch) | |
| tree | fccb1919f358ecfd47186d2141cee9980e467c09 /src/usr/isteps/istep07 | |
| parent | f01850d033176cb33c2396ed26377a3fc965787a (diff) | |
| download | blackbird-hostboot-b3ad5819f9cbed67ceb0fa74d28d2f93227bbbcb.tar.gz blackbird-hostboot-b3ad5819f9cbed67ceb0fa74d28d2f93227bbbcb.zip | |
Secure Boot: Support secure load of MEMD partition
- Added secure load of MEMD partition in istep 7
- Added sha512 header to MEMD partition
- Marked MEMD as enforced secureboot section in PNOR code and image generator
Change-Id: I5de934da7e50ad0de6674e2674869d1356f5232d
RTC: 176189
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/44606
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Marshall J. Wilks <mjwilks@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Stephen M. Cprek <smcprek@us.ibm.com>
Reviewed-by: Michael Baiocchi <mbaiocch@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: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/isteps/istep07')
| -rw-r--r-- | src/usr/isteps/istep07/call_mss_eff_config.C | 55 |
1 files changed, 50 insertions, 5 deletions
diff --git a/src/usr/isteps/istep07/call_mss_eff_config.C b/src/usr/isteps/istep07/call_mss_eff_config.C index e13dacecf..a698f8899 100644 --- a/src/usr/isteps/istep07/call_mss_eff_config.C +++ b/src/usr/isteps/istep07/call_mss_eff_config.C @@ -42,6 +42,8 @@ #include <initservice/isteps_trace.H> +#include <pnor/pnorif.H> + // targeting support #include <targeting/common/commontargeting.H> #include <targeting/common/utilFilter.H> @@ -65,7 +67,7 @@ using namespace TARGETING; errlHndl_t call_mss_eff_grouping(IStepError & io_istepErr) { - errlHndl_t l_err = NULL; + errlHndl_t l_err = nullptr; TARGETING::TargetHandleList l_procsList; getAllChips(l_procsList, TYPE_PROC); @@ -109,7 +111,7 @@ errlHndl_t call_mss_eff_grouping(IStepError & io_istepErr) errlHndl_t call_mss_eff_mb_interleave() { - errlHndl_t l_err = NULL; + errlHndl_t l_err = nullptr; /* TOOD RTC: 144076 --- cumulus only --- TARGETING::TargetHandleList l_membufTargetList; getAllChips(l_membufTargetList, TYPE_MEMBUF); @@ -147,13 +149,33 @@ errlHndl_t call_mss_eff_mb_interleave() void* call_mss_eff_config( void *io_pArgs ) { IStepError l_StepError; - errlHndl_t l_err = NULL; + errlHndl_t l_err = nullptr; + auto memdLoaded = false; + + do { + + #ifdef CONFIG_SECUREBOOT + // MEMD used by p9_mss_eff_config HWP + l_err = loadSecureSection(PNOR::MEMD); + if (l_err) + { + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, + ERR_MRK "Failed in call to loadSecureSection for section " + "PNOR:MEMD"); + + // Create istep error and link it to PLID of original error + l_StepError.addErrorDetails(l_err); + errlCommit(l_err, HWPF_COMP_ID); + break; + } + memdLoaded = true; + #endif TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_eff_config entry" ); - TARGETING::Target* l_sys = NULL; + TARGETING::Target* l_sys = nullptr; targetService().getTopLevelTarget(l_sys); - assert( l_sys != NULL ); + assert( l_sys != nullptr ); // The attribute ATTR_MEM_MIRROR_PLACEMENT_POLICY should already be // correctly set by default for all platforms except for sapphire. @@ -281,6 +303,29 @@ void* call_mss_eff_config( void *io_pArgs ) } } + } while (0); + + #ifdef CONFIG_SECUREBOOT + if(memdLoaded) + { + l_err = unloadSecureSection(PNOR::MEMD); + if (l_err) + { + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, + ERR_MRK "Failed in call to unloadSecureSection for section " + "PNOR:MEMD"); + + // Create istep error and link it to PLID of original error + l_StepError.addErrorDetails(l_err); + errlCommit(l_err, HWPF_COMP_ID); + } + else + { + memdLoaded = false; + } + } + #endif + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_eff_config exit" ); return l_StepError.getErrorHandle(); } |

