summaryrefslogtreecommitdiffstats
path: root/import
diff options
context:
space:
mode:
authorYue Du <daviddu@us.ibm.com>2016-02-29 21:39:12 -0600
committerSachin Gupta <sgupta2m@in.ibm.com>2016-08-16 11:56:58 -0400
commit69bab7618f3c2f869798eef63df08ca8c34fcc1a (patch)
tree5c47a7c848b4fcee567133bada48190be8797e6c /import
parentd2a07458f4b1767cd3da511b9f3d657d3d65b6f5 (diff)
downloadtalos-sbe-69bab7618f3c2f869798eef63df08ca8c34fcc1a.tar.gz
talos-sbe-69bab7618f3c2f869798eef63df08ca8c34fcc1a.zip
PK/TRACE: Add marker to pk trace of trace buffer wrap helping EPM
Change-Id: Ib173ef7e2447c074c047271cf9402f0342e3579f Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/21488 Tested-by: Jenkins Server Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/28286 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'import')
-rw-r--r--import/chips/p9/procedures/ppe/pk/trace/pk_trace.h4
-rw-r--r--import/chips/p9/procedures/ppe/pk/trace/pk_trace_big.c11
-rw-r--r--import/chips/p9/procedures/ppe/pk/trace/pk_trace_binary.c11
-rw-r--r--import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c15
4 files changed, 41 insertions, 0 deletions
diff --git a/import/chips/p9/procedures/ppe/pk/trace/pk_trace.h b/import/chips/p9/procedures/ppe/pk/trace/pk_trace.h
index 8d699476..21d8ceb4 100644
--- a/import/chips/p9/procedures/ppe/pk/trace/pk_trace.h
+++ b/import/chips/p9/procedures/ppe/pk/trace/pk_trace.h
@@ -302,4 +302,8 @@ typedef struct
extern PkTraceBuffer g_pk_trace_buf;
+#ifdef PK_TRACE_BUFFER_WRAP_MARKER
+ extern uint32_t G_wrap_mask;
+#endif
+
#endif /* __PK_TRACE_H__ */
diff --git a/import/chips/p9/procedures/ppe/pk/trace/pk_trace_big.c b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_big.c
index 42df103d..a76ae7e7 100644
--- a/import/chips/p9/procedures/ppe/pk/trace/pk_trace_big.c
+++ b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_big.c
@@ -85,6 +85,17 @@ void pk_trace_big(uint32_t i_hash_and_count,
//calculate the offset for the next entry in the cb
state.offset = footer_offset + sizeof(PkTraceBig);
+#ifdef PK_TRACE_BUFFER_WRAP_MARKER
+
+ //insert marker to indicate when circular buffer wraps
+ if ((state.offset & PK_TRACE_SZ) ^ G_wrap_mask)
+ {
+ G_wrap_mask = state.offset & PK_TRACE_SZ;
+ asm volatile ("tw 0, 31, 31");
+ }
+
+#endif
+
//update the cb state (tbu and offset)
g_pk_trace_buf.state.word64 = state.word64;
diff --git a/import/chips/p9/procedures/ppe/pk/trace/pk_trace_binary.c b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_binary.c
index 5bc63179..c6680a32 100644
--- a/import/chips/p9/procedures/ppe/pk/trace/pk_trace_binary.c
+++ b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_binary.c
@@ -85,6 +85,17 @@ void pk_trace_binary(uint32_t i_hash_and_size, void* bufp)
//calculate the offset for the next entry in the cb
state.offset = footer_offset + sizeof(PkTraceBinary);
+#ifdef PK_TRACE_BUFFER_WRAP_MARKER
+
+ //insert marker to indicate when circular buffer wraps
+ if ((state.offset & PK_TRACE_SZ) ^ G_wrap_mask)
+ {
+ G_wrap_mask = state.offset & PK_TRACE_SZ;
+ asm volatile ("tw 0, 31, 31");
+ }
+
+#endif
+
//update the cb state (tbu and offset)
g_pk_trace_buf.state.word64 = state.word64;
diff --git a/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c
index 4669a56b..5cd5051f 100644
--- a/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c
+++ b/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c
@@ -72,6 +72,10 @@ PkTraceBuffer g_pk_trace_buf =
//Needed for buffer extraction in simics for now
PkTraceBuffer* g_pk_trace_buf_ptr = &g_pk_trace_buf;
+#ifdef PK_TRACE_BUFFER_WRAP_MARKER
+ uint32_t G_wrap_mask = 0;
+#endif
+
// Creates an 8 byte entry in the trace buffer that includes a timestamp,
// a format string hash value and a 16 bit parameter.
//
@@ -102,6 +106,17 @@ void pk_trace_tiny(uint32_t i_parm)
//calculate the offset for the next entry in the cb
state.offset = g_pk_trace_buf.state.offset + sizeof(PkTraceTiny);
+#ifdef PK_TRACE_BUFFER_WRAP_MARKER
+
+ //insert marker to indicate when circular buffer wraps
+ if ((state.offset & PK_TRACE_SZ) ^ G_wrap_mask)
+ {
+ G_wrap_mask = state.offset & PK_TRACE_SZ;
+ asm volatile ("tw 0, 31, 31");
+ }
+
+#endif
+
//update the cb state (tbu and offset)
g_pk_trace_buf.state.word64 = state.word64;
OpenPOWER on IntegriCloud