summaryrefslogtreecommitdiffstats
path: root/src/usr/isteps/istep11/call_cen_pll_initf.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/isteps/istep11/call_cen_pll_initf.C')
-rw-r--r--src/usr/isteps/istep11/call_cen_pll_initf.C116
1 files changed, 86 insertions, 30 deletions
diff --git a/src/usr/isteps/istep11/call_cen_pll_initf.C b/src/usr/isteps/istep11/call_cen_pll_initf.C
index b41458f8a..bf869dfcd 100644
--- a/src/usr/isteps/istep11/call_cen_pll_initf.C
+++ b/src/usr/isteps/istep11/call_cen_pll_initf.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015,2017 */
+/* Contributors Listed Below - COPYRIGHT 2015,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -33,6 +33,8 @@
#include <initservice/isteps_trace.H>
+#include <pnor/pnorif.H>
+
// targeting support
#include <targeting/common/commontargeting.H>
#include <targeting/common/utilFilter.H>
@@ -59,49 +61,103 @@ void* call_cen_pll_initf (void *io_pArgs)
errlHndl_t l_err = NULL;
TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_cen_pll_initf entry" );
+ do
+ {
- TARGETING::TargetHandleList l_membufTargetList;
- getAllChips(l_membufTargetList, TYPE_MEMBUF);
+ TARGETING::TargetHandleList l_membufTargetList;
+ getAllChips(l_membufTargetList, TYPE_MEMBUF);
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "call_cen_pll_initf: %d membufs found",
- l_membufTargetList.size());
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "call_cen_pll_initf: %d membufs found",
+ l_membufTargetList.size());
- for (const auto & l_membuf_target : l_membufTargetList)
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "cen_pll_initf HWP target HUID %.8x",
- TARGETING::get_huid(l_membuf_target));
+#ifdef CONFIG_SECUREBOOT
+ // only load the hw image if there are membufs present
+ if( l_membufTargetList.size() )
+ {
+ l_err = loadSecureSection(PNOR::CENTAUR_HW_IMG);
+
+ if(l_err)
+ {
+ // Create IStep error log and cross reference to error
+ // that occurred
+ l_StepError.addErrorDetails( l_err );
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ ERR_MRK "Failed in call to loadSecureSection "
+ "for section PNOR:CENTAUR_HW_IMG");
+
+ // Commit Error
+ errlCommit( l_err, ISTEP_COMP_ID );
+ break;
+ }
+ }
+ else
+ {
+ // no membufs, just exit
+ break;
+ }
+#endif
+ for (const auto & l_membuf_target : l_membufTargetList)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "cen_pll_initf HWP target HUID %.8x",
+ TARGETING::get_huid(l_membuf_target));
- // call the HWP with each target
- fapi2::Target <fapi2::TARGET_TYPE_MEMBUF_CHIP> l_fapi_membuf_target
+ // call the HWP with each target
+ fapi2::Target <fapi2::TARGET_TYPE_MEMBUF_CHIP> l_fapi_membuf_target
(l_membuf_target);
- FAPI_INVOKE_HWP(l_err, cen_pll_initf, l_fapi_membuf_target);
+ FAPI_INVOKE_HWP(l_err, cen_pll_initf, l_fapi_membuf_target);
- // process return code.
- if ( l_err )
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: cen_pll_initf HWP on target HUID %.8x",
- l_err->reasonCode(), TARGETING::get_huid(l_membuf_target) );
+ // process return code.
+ if ( l_err )
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X: cen_pll_initf HWP on target HUID %.8x",
+ l_err->reasonCode(),
+ TARGETING::get_huid(l_membuf_target) );
+
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_membuf_target).addToLog( l_err );
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_membuf_target).addToLog( l_err );
+ // Create IStep error log and cross reference the original
+ l_StepError.addErrorDetails( l_err );
- // Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails( l_err );
+ // Commit Error
+ errlCommit( l_err, ISTEP_COMP_ID );
+ break;
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : cen_pll_initf HWP");
+ }
- // Commit Error
- errlCommit( l_err, ISTEP_COMP_ID );
}
- else
+
+#ifdef CONFIG_SECUREBOOT
+ if( l_membufTargetList.size() )
{
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : cen_pll_initf HWP");
+ l_err = unloadSecureSection(PNOR::CENTAUR_HW_IMG);
+
+ if(l_err)
+ {
+ // Create IStep error log and cross reference to error that
+ // occurred
+ l_StepError.addErrorDetails( l_err );
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ ERR_MRK "Failed in call to unloadSecureSection for "
+ "section PNOR:CENTAUR_HW_IMG");
+
+ // Commit Error
+ errlCommit( l_err, ISTEP_COMP_ID );
+ break;
+ }
}
+#endif
- }
-
+ }while(0);
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_cen_pll_initf exit" );
OpenPOWER on IntegriCloud