diff options
author | Yue Du <daviddu@us.ibm.com> | 2016-02-29 21:39:12 -0600 |
---|---|---|
committer | Sachin Gupta <sgupta2m@in.ibm.com> | 2016-08-16 11:56:58 -0400 |
commit | 69bab7618f3c2f869798eef63df08ca8c34fcc1a (patch) | |
tree | 5c47a7c848b4fcee567133bada48190be8797e6c /import/chips/p9 | |
parent | d2a07458f4b1767cd3da511b9f3d657d3d65b6f5 (diff) | |
download | talos-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/chips/p9')
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; |