summaryrefslogtreecommitdiffstats
path: root/src/usr/trace/daemon/daemon.C
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2016-09-23 07:41:11 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-10-05 10:52:47 -0400
commit4415fb37f923bfeb63f1f81c55fe177d2e0adb95 (patch)
tree292da2c425892ab1583ed04c957f963ca0ad5ad9 /src/usr/trace/daemon/daemon.C
parent083d6c0b0a1517b0995134822202535ed71b60fd (diff)
downloadtalos-hostboot-4415fb37f923bfeb63f1f81c55fe177d2e0adb95.tar.gz
talos-hostboot-4415fb37f923bfeb63f1f81c55fe177d2e0adb95.zip
Allow Cronus to use debugComm on FSP based systems
-Pass down HRMOR adjusted addr -Provide unique continous trace enable for debugComm Change-Id: I214a6b2e0113ce19b8813e7d4902de4b42b23d11 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/30178 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/trace/daemon/daemon.C')
-rw-r--r--src/usr/trace/daemon/daemon.C42
1 files changed, 24 insertions, 18 deletions
diff --git a/src/usr/trace/daemon/daemon.C b/src/usr/trace/daemon/daemon.C
index 49fe6da32..44515dc52 100644
--- a/src/usr/trace/daemon/daemon.C
+++ b/src/usr/trace/daemon/daemon.C
@@ -159,11 +159,16 @@ namespace TRACEDAEMON
g_debugSettings.contTraceOverride =
DebugSettings::CONT_TRACE_FORCE_DISABLE;
}
- else if (msg->data[0] == 1)
+ else if (msg->data[0] == 1) //enable from FSP
{
g_debugSettings.contTraceOverride =
DebugSettings::CONT_TRACE_FORCE_ENABLE;
}
+ else if (msg->data[0] == 2) //enable from debugComm
+ {
+ g_debugSettings.contTraceOverride =
+ DebugSettings::CONT_TRACE_FORCE_ENABLE_DEBUG_COMM;
+ }
msg->data[0] = msg->data[1] = 0;
break;
@@ -448,17 +453,25 @@ namespace TRACEDAEMON
if (g_debugSettings.contTraceOverride !=
DebugSettings::CONT_TRACE_USE_ATTR)
{
- contEnabled = (g_debugSettings.contTraceOverride ==
+ contEnabled = (g_debugSettings.contTraceOverride >=
DebugSettings::CONT_TRACE_FORCE_ENABLE);
}
- if (!contEnabled)
- {
- // Trace isn't enabled so just discard the buffer.
- free(i_buffer);
- }
- else
+ if(contEnabled)
{
+ //Only send via debugComm if tool has explicitly enabled
+ //otherwise this will "hang" hostboot while it waits for the tool
+ if(g_debugSettings.contTraceOverride ==
+ DebugSettings::CONT_TRACE_FORCE_ENABLE_DEBUG_COMM)
+ {
+ // Write scratch register indicating is available.
+ uint64_t l_addr = reinterpret_cast<uint64_t>(i_buffer);
+ Util::writeDebugCommRegs(Util::MSG_TYPE_TRACE,
+ l_addr,
+ i_size);
+ }
+
+ //Always attempt to send to FSP if enabled
if (MBOX::mailbox_enabled())
{
msg_t* msg = msg_allocate();
@@ -466,7 +479,6 @@ namespace TRACEDAEMON
msg->data[1] = i_size;
msg->extra_data = MBOX::allocate(i_size);
memcpy(msg->extra_data,i_buffer,i_size);
- free(i_buffer);
errlHndl_t l_errl = MBOX::send(MBOX::FSP_TRACE_MSGQ, msg);
if (l_errl)
@@ -475,16 +487,10 @@ namespace TRACEDAEMON
msg_free(msg);
}
}
- else
- {
- // Write scratch register indicating is available.
- uint64_t l_addr = reinterpret_cast<uint64_t>(i_buffer);
- Util::writeDebugCommRegs(Util::MSG_TYPE_TRACE,
- l_addr,
- i_size);
- free(i_buffer);
- }
}
+
+ //Always free the buf
+ free(i_buffer);
}
void Daemon::sendExtractBuffer(void* i_buffer, size_t i_size)
OpenPOWER on IntegriCloud