From 2f7237360522806f1eeca80aab59ec3c0afa5d1e Mon Sep 17 00:00:00 2001 From: Doug Gilbert Date: Thu, 14 Sep 2017 11:53:05 -0500 Subject: 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 Reviewed-by: Michael S. Floyd Tested-by: Jenkins Server Tested-by: PPE CI Tested-by: FSP CI Jenkins Reviewed-by: Juan R. Medina Dev-Ready: Gregory S. Still Reviewed-by: Gregory S. Still Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/46233 Reviewed-by: Hostboot Team Reviewed-by: Sachin Gupta --- src/import/chips/p9/procedures/ppe/pk/kernel/pk_api.h | 2 ++ src/import/chips/p9/procedures/ppe/pk/kernel/pk_init.c | 8 ++++---- src/import/chips/p9/procedures/ppe/pk/trace/pk_trace_core.c | 9 +++++++-- 3 files changed, 13 insertions(+), 6 deletions(-) (limited to 'src') 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 -- cgit v1.2.1