diff options
author | Dean Sanner <dsanner@us.ibm.com> | 2016-06-28 09:56:14 -0500 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2016-08-17 11:16:11 -0400 |
commit | 183d1d89e624456cd831ca5dceb6c03edf07035c (patch) | |
tree | ba23039ab9a4b7b37e9cead11f63272a6f439905 /src/usr/trace | |
parent | 025298b52002867f1e3516ba9810fd4642262980 (diff) | |
download | talos-hostboot-183d1d89e624456cd831ca5dceb6c03edf07035c.tar.gz talos-hostboot-183d1d89e624456cd831ca5dceb6c03edf07035c.zip |
Utility functions for mbox scratch reg access
Change-Id: If262e891934b5228ea1fa9081a0c85a40a52036d
RTC:127348
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/26346
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Prachi Gupta <pragupta@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src/usr/trace')
-rw-r--r-- | src/usr/trace/daemon/daemon.C | 60 | ||||
-rw-r--r-- | src/usr/trace/daemon/daemon.H | 7 |
2 files changed, 7 insertions, 60 deletions
diff --git a/src/usr/trace/daemon/daemon.C b/src/usr/trace/daemon/daemon.C index 447f25f55..49fe6da32 100644 --- a/src/usr/trace/daemon/daemon.C +++ b/src/usr/trace/daemon/daemon.C @@ -48,6 +48,7 @@ #include <mbox/mboxif.H> #include <config.h> #include <console/consoleif.H> +#include <util/utilmbox_scratch.H> namespace TRACE { @@ -115,7 +116,8 @@ namespace TRACEDAEMON INITSERVICE::LOWEST_PRIORITY); // Clear scratch register. - writeScratchReg(0, 0); + Util::writeScratchReg(INITSERVICE::SPLESS::MBOX_SCRATCH_REG1, 0); + Util::writeScratchReg(INITSERVICE::SPLESS::MBOX_SCRATCH_REG2, 0); // Loop handling messages. while (msg_t* msg = iv_service->iv_daemon->wait()) @@ -476,14 +478,10 @@ namespace TRACEDAEMON else { // Write scratch register indicating is available. - writeScratchReg(reinterpret_cast<uint64_t>(i_buffer) << 32, - i_size << 32); - - // Wait for tools to extract the buffer. - while(0 != readScratchReg()) - { - task_yield(); - } + uint64_t l_addr = reinterpret_cast<uint64_t>(i_buffer); + Util::writeDebugCommRegs(Util::MSG_TYPE_TRACE, + l_addr, + i_size); free(i_buffer); } } @@ -776,50 +774,6 @@ namespace TRACEDAEMON sendExtractBuffer(NULL, 0); } - - void Daemon::writeScratchReg(uint64_t i_value1, uint64_t i_value2) - { - size_t l_size = sizeof(uint64_t); - - errlHndl_t l_errl = - deviceWrite(TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL, - &i_value1, l_size, - DEVICE_SCOM_ADDRESS(MB_SCRATCH_REGISTER_1)); - - if (l_errl) - { - errlCommit(l_errl, TRACE_COMP_ID); - } - - l_errl = - deviceWrite(TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL, - &i_value2, l_size, - DEVICE_SCOM_ADDRESS(MB_SCRATCH_REGISTER_2)); - - if (l_errl) - { - errlCommit(l_errl, TRACE_COMP_ID); - } - } - - uint64_t Daemon::readScratchReg() - { - size_t l_size = sizeof(uint64_t); - uint64_t value = 0; - - errlHndl_t l_errl = - deviceRead(TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL, - &value, l_size, - DEVICE_SCOM_ADDRESS(MB_SCRATCH_REGISTER_1)); - - if (l_errl) - { - errlCommit(l_errl, TRACE_COMP_ID); - } - - return value; - } - } // Define an entry point for the trace daemon module. diff --git a/src/usr/trace/daemon/daemon.H b/src/usr/trace/daemon/daemon.H index 4c7f369d5..57e908696 100644 --- a/src/usr/trace/daemon/daemon.H +++ b/src/usr/trace/daemon/daemon.H @@ -96,13 +96,6 @@ namespace TRACEDAEMON /** Locklessly move a trace entry from one location to another. */ void replaceEntry(TRACE::Entry* from, TRACE::Entry* to); - /** Write mailbox scratch 1 & 2 registers to a values. - * scratch 1 contains the trace buffer address - * scratch 2 contains the trace buffer size */ - void writeScratchReg(uint64_t i_value1, uint64_t i_value2); - /** Read mailbox scratch 1 register. */ - uint64_t readScratchReg(); - /** Client-service object. */ TRACE::Service* iv_service; |