diff options
author | Doug Gilbert <dgilbert@us.ibm.com> | 2017-09-14 11:53:05 -0500 |
---|---|---|
committer | Sachin Gupta <sgupta2m@in.ibm.com> | 2017-12-04 22:35:19 -0500 |
commit | 2f7237360522806f1eeca80aab59ec3c0afa5d1e (patch) | |
tree | 84276c26782295241ea33b371778de425d26da72 /src | |
parent | e4435bbe9132c9f4b4f3577bb5588922864e0ec7 (diff) | |
download | talos-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')
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 |