summaryrefslogtreecommitdiffstats
path: root/src/occ_gpe0
diff options
context:
space:
mode:
authorWilliam Bryan <wilbryan@us.ibm.com>2017-07-18 14:09:50 -0500
committerWilliam A. Bryan <wilbryan@us.ibm.com>2017-07-28 12:02:47 -0400
commit856bfc17f3129eb8b011b4299f92d7c5851bda24 (patch)
tree7aec881208d3b88834d7f9b5a4a028d741c736bd /src/occ_gpe0
parent458a99921f4ed89d145d267ba837eb3228909d06 (diff)
downloadtalos-occ-856bfc17f3129eb8b011b4299f92d7c5851bda24.tar.gz
talos-occ-856bfc17f3129eb8b011b4299f92d7c5851bda24.zip
Add pointers to GPE trace buffers
Change-Id: Ia313e9d7bddde3b61b8f7fc2319e4583843b9549 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43284 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Christopher J. Cain <cjcain@us.ibm.com> Reviewed-by: Martha Broyles <mbroyles@us.ibm.com> Reviewed-by: William A. Bryan <wilbryan@us.ibm.com>
Diffstat (limited to 'src/occ_gpe0')
-rw-r--r--src/occ_gpe0/core_data.c2
-rw-r--r--src/occ_gpe0/gpe0_main.c7
-rw-r--r--src/occ_gpe0/gpe_core_data.c12
3 files changed, 16 insertions, 5 deletions
diff --git a/src/occ_gpe0/core_data.c b/src/occ_gpe0/core_data.c
index 0ac8376..7dcb613 100644
--- a/src/occ_gpe0/core_data.c
+++ b/src/occ_gpe0/core_data.c
@@ -54,7 +54,7 @@ uint32_t get_core_data(uint32_t i_core,
// rc == 1 resource occupied (see ppe42_scom.h) Action: return with rc
// rc == 2 Core is fenced, offline Action: return with rc
// rc == 3 partial good
- // rc == 4 address error
+ // rc == 4 address error (Can be caused by other device using bus)
// rc == 5 clock error
// rc == 6 packet error
// rc == 7 timeout
diff --git a/src/occ_gpe0/gpe0_main.c b/src/occ_gpe0/gpe0_main.c
index 1eb227a..2962d60 100644
--- a/src/occ_gpe0/gpe0_main.c
+++ b/src/occ_gpe0/gpe0_main.c
@@ -30,6 +30,7 @@
/// an example of how to add traces to the code.
#include "pk.h"
+#include "pk_trace.h"
#include "ipc_api.h"
#include "ipc_ping.h"
#include "gpe_export.h"
@@ -47,6 +48,8 @@ PkThread G_main_thread;
gpe_shared_data_t * G_gpe_shared_data = (gpe_shared_data_t*) GPE_SHARED_DATA_ADDR;
+extern PkTraceBuffer* g_pk_trace_buf_ptr;
+
//statically initialize a ping command message
IPC_PING_CMD_CREATE(G_ping_cmd);
@@ -83,6 +86,10 @@ int main(int argc, char **argv)
l_timebase = PPE_TIMEBASE_HZ;
}
+ // Mark the location of the trace buffer in shared data
+ G_gpe_shared_data->gpe0_tb_ptr = (uint32_t) g_pk_trace_buf_ptr;
+ G_gpe_shared_data->gpe0_tb_sz = sizeof(PkTraceBuffer);
+
// initializes kernel data (stack, threads, timebase, timers, etc.)
pk_initialize((PkAddress)G_kernel_stack,
KERNEL_STACK_SIZE,
diff --git a/src/occ_gpe0/gpe_core_data.c b/src/occ_gpe0/gpe_core_data.c
index d8f6983..0911a49 100644
--- a/src/occ_gpe0/gpe_core_data.c
+++ b/src/occ_gpe0/gpe_core_data.c
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER OnChipController Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015,2016 */
+/* Contributors Listed Below - COPYRIGHT 2015,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -50,15 +50,19 @@ void gpe_get_core_data(ipc_msg_t* cmd, void* arg)
uint32_t rc; // return code
ipc_async_cmd_t *async_cmd = (ipc_async_cmd_t*)cmd;
ipc_core_data_parms_t *args = (ipc_core_data_parms_t*) async_cmd->cmd_data;
-
+ static uint32_t L_trace = 0;
rc = get_core_data(args->core_num, // core ID
args->data); // CoreData*
if(rc)
{
- PK_TRACE("gpe_get_core_data: get_core_data failed, rc = 0x%08x, core = 0x%08x",
- rc, args->core_num);
+ if( !(L_trace & (1 << args->core_num)) )
+ {
+ PK_TRACE("gpe_get_core_data: get_core_data failed, rc = 0x%08x, core = 0x%08x",
+ rc, args->core_num);
+ L_trace |= (1 << args->core_num);
+ }
gpe_set_ffdc(&(args->error), args->core_num,
GPE_RC_GET_CORE_DATA_FAILED, rc);
}
OpenPOWER on IntegriCloud