diff options
Diffstat (limited to 'src/usr/hwpf/hwp/core_activate/core_activate.C')
-rw-r--r-- | src/usr/hwpf/hwp/core_activate/core_activate.C | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/usr/hwpf/hwp/core_activate/core_activate.C b/src/usr/hwpf/hwp/core_activate/core_activate.C index 041a6c032..2acd03d42 100644 --- a/src/usr/hwpf/hwp/core_activate/core_activate.C +++ b/src/usr/hwpf/hwp/core_activate/core_activate.C @@ -73,6 +73,7 @@ #include "cen_switch_rec_attn.H" #include "proc_post_winkle.H" #include "proc_check_slw_done.H" +#include "p8_block_wakeup_intr.H" // mss_scrub support #include <diag/prdf/prdfMain.H> @@ -155,6 +156,37 @@ void* call_host_activate_master( void *io_pArgs ) } + // Call p8_block_wakeup_intr to prevent stray interrupts from + // popping core out of winkle before SBE sees it. + + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_host_activated_master: call p8_block_wakeup_intr(SET) " + "Target HUID %.8x", + TARGETING::get_huid(l_masterEx) ); + + FAPI_INVOKE_HWP( l_errl, + p8_block_wakeup_intr, + l_fapi_ex_target, + BLKWKUP_SET ); + + if ( l_errl ) + { + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "p8_block_wakeup_intr ERROR : Returning errorlog, reason=0x%x", + l_errl->reasonCode() ); + + // capture the target data in the elog + ErrlUserDetailsTarget(l_masterEx).addToLog( l_errl ); + + break; + } + else + { + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "p8_block_wakeup_intr SUCCESS" ); + } + + // put the master into winkle. TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_host_activate_master: put master into winkle..." ); |