summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDoug Gilbert <dgilbert@us.ibm.com>2017-09-14 11:53:05 -0500
committerSachin Gupta <sgupta2m@in.ibm.com>2017-12-04 22:35:19 -0500
commit2f7237360522806f1eeca80aab59ec3c0afa5d1e (patch)
tree84276c26782295241ea33b371778de425d26da72 /src
parente4435bbe9132c9f4b4f3577bb5588922864e0ec7 (diff)
downloadtalos-sbe-2f7237360522806f1eeca80aab59ec3c0afa5d1e.tar.gz
talos-sbe-2f7237360522806f1eeca80aab59ec3c0afa5d1e.zip
Use HCode header timebase frequency for pk trace
Change-Id: I34a9d8d1a003ae6b07b50039a9ea57ff9fd5af4d RTC: 179852 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/46227 Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: Michael S. Floyd <mfloyd@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Juan R. Medina <jrmedina@us.ibm.com> Dev-Ready: Gregory S. Still <stillgs@us.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/46233 Reviewed-by: Hostboot Team <hostboot@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h2
-rw-r--r--src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c8
-rw-r--r--src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c9
3 files changed, 13 insertions, 6 deletions
diff --git a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h
index 8dd4b54d..d864e96c 100644
--- a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h
+++ b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h
@@ -995,6 +995,8 @@ void pk_trace_big(uint32_t i_hash_and_count,
void pk_trace_binary(uint32_t i_hash_and_size, void* bufp);
void pk_trace_set_timebase(PkTimebase timebase);
+// set the frequency (hz) of the timebase for trace timestamps
+void pk_trace_set_freq(uint32_t i_frequency);
/// Cast a pointer to another type, in a way that won't cause warnings
diff --git a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c
index f7ee9b8c..112dc7ad 100644
--- a/src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c
+++ b/src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c
@@ -150,6 +150,7 @@ pk_initialize(PkAddress kernel_stack,
__pk_kernel_stack = kernel_stack;
__pk_kernel_stack_size = kernel_stack_size;
+#if PK_TRACE_SUPPORT
#if PK_TIMER_SUPPORT
// Initialize the time queue sentinel as a circular queue, set the next
@@ -159,10 +160,10 @@ pk_initialize(PkAddress kernel_stack,
__pk_time_queue.cursor = 0;
__pk_time_queue.next_timeout = PK_TIMEBASE_MAX;
-#if PK_TRACE_SUPPORT
+#endif /* PK_TIMER_SUPPORT (timed callback)*/
//set the trace timebase HZ
- g_pk_trace_buf.hz = timebase_frequency_hz;
+ pk_trace_set_freq(timebase_frequency_hz);
if(initial_timebase != PK_TIMEBASE_CONTINUES)
{
@@ -177,7 +178,6 @@ pk_initialize(PkAddress kernel_stack,
#endif /* PK_TRACE_SUPPORT */
-#endif /* PK_TIMER_SUPPORT */
#if PK_THREAD_SUPPORT
@@ -212,7 +212,7 @@ pk_timebase_freq_set(uint32_t timebase_frequency_hz)
pk_set_timebase_rshift(timebase_frequency_hz);
#if PK_TRACE_SUPPORT
- g_pk_trace_buf.hz = timebase_frequency_hz;
+ pk_trace_set_freq(timebase_frequency_hz);
#endif
// Does the initial_timebase need to be reset?
return PK_OK;
diff --git a/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c b/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c
index a119d52c..6e0019c9 100644
--- a/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c
+++ b/src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c
@@ -62,7 +62,7 @@ PkTraceBuffer g_pk_trace_buf __attribute__ ((section (".sdata"))) =
trace_ppe_hash("PARTIAL TRACE ENTRY. HASH_ID = %d", PK_TRACE_HASH_PREFIX),
.size = PK_TRACE_SZ,
.max_time_change = PK_TRACE_MTBT,
- .hz = 500000000, //default. Actual is set in pk_init.c
+ .hz = 25000000, //Actula value set by pk_trace_set_freq()
.time_adj64 = 0,
.state.word64 = 0,
.cb = {0}
@@ -143,6 +143,7 @@ void pk_trace_timer_callback(void* arg)
pk_timer_schedule(&g_pk_trace_timer,
PK_TRACE_TIMER_PERIOD);
}
+#endif // PK_TIMER_SUPPORT (timed callback support)
// Use this function to synchronize the timebase between multiple PPEs.
// PPE A can send PPE B it's current timebase and then PPE B can set that
@@ -154,5 +155,9 @@ void pk_trace_set_timebase(PkTimebase timebase)
{
g_pk_trace_buf.time_adj64 = timebase - pk_timebase_get();
}
-#endif // PK_TIMER_SUPPORT
+
+void pk_trace_set_freq(uint32_t i_frequency)
+{
+ g_pk_trace_buf.hz = i_frequency;
+}
#endif // PK_TRACE_SUPPORT
OpenPOWER on IntegriCloud