diff options
Diffstat (limited to 'src/usr/isteps/istep08/call_host_attnlisten_proc.C')
-rw-r--r-- | src/usr/isteps/istep08/call_host_attnlisten_proc.C | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/usr/isteps/istep08/call_host_attnlisten_proc.C b/src/usr/isteps/istep08/call_host_attnlisten_proc.C index c2b3b40a3..ec301ee45 100644 --- a/src/usr/isteps/istep08/call_host_attnlisten_proc.C +++ b/src/usr/isteps/istep08/call_host_attnlisten_proc.C @@ -39,6 +39,7 @@ #include <errl/errlentry.H> #include <initservice/isteps_trace.H> #include <initservice/initserviceif.H> +#include <initservice/istepdispatcherif.H> #include <initservice/initsvcreasoncodes.H> #include <sys/time.h> #include <devicefw/userif.H> @@ -62,6 +63,34 @@ using namespace TARGETING; namespace ISTEP_08 { +/** + * @brief Send a list of functional procs that ATTN can start monitoring + * for checkstop analysis + */ +void send_analyzable_procs(void) +{ + errlHndl_t l_err = nullptr; + std::vector<TARGETING::ATTR_HUID_type> l_chipHuids; + + // get all functional Proc targets + TARGETING::TargetHandleList l_procsList; + getAllChips(l_procsList, TYPE_PROC); + + // now fill in the list with proc huids + for (const auto & l_cpu_target : l_procsList) + { + l_chipHuids.push_back(TARGETING::get_huid(l_cpu_target)); + } + + // send the message to alert ATTN to start monitoring these chips + l_err = INITSERVICE::sendAttnMonitorChipIdMsg(l_chipHuids); + if (l_err) + { + errlCommit(l_err, ISTEP_COMP_ID); + } +} + + //****************************************************************************** // call_host_attnlisten_proc() //****************************************************************************** @@ -69,7 +98,6 @@ void* call_host_attnlisten_proc(void *io_pArgs) { IStepError l_stepError; - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_host_attnlisten_proc entry" ); @@ -77,6 +105,13 @@ void* call_host_attnlisten_proc(void *io_pArgs) // to write FIRs due to blacklist violations. All of the slave // processor attentions will be ignored until the SMP comes up. + // Send list of functional procs that ATTN + // can start monitoring for checkstop analysis + if( INITSERVICE::spBaseServicesEnabled() ) + { + send_analyzable_procs(); + } + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_host_attnlisten_proc exit" ); return l_stepError.getErrorHandle(); |