summaryrefslogtreecommitdiffstats
path: root/src/usr/isteps/istep08/call_host_attnlisten_proc.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/isteps/istep08/call_host_attnlisten_proc.C')
-rw-r--r--src/usr/isteps/istep08/call_host_attnlisten_proc.C37
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();
OpenPOWER on IntegriCloud