diff options
author | Dean Sanner <dsanner@us.ibm.com> | 2016-09-23 07:41:11 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-10-05 10:52:47 -0400 |
commit | 4415fb37f923bfeb63f1f81c55fe177d2e0adb95 (patch) | |
tree | 292da2c425892ab1583ed04c957f963ca0ad5ad9 /src/usr/trace/daemon | |
parent | 083d6c0b0a1517b0995134822202535ed71b60fd (diff) | |
download | talos-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')
-rw-r--r-- | src/usr/trace/daemon/daemon.C | 42 |
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) |