[ltt-dev] [PATCH 2/3] ltt: rework trace clock code for SH

Mathieu Desnoyers compudj at krystal.dyndns.org
Wed Apr 7 10:39:09 EDT 2010


* Giuseppe CAVALLARO (peppe.cavallaro at st.com) wrote:
> Hi Mathieu,
> Mathieu Desnoyers wrote:
> >>  static inline u32 trace_clock_read32(void)
> >>  {
> >> -	return get_cycles();
> >> +	if (likely(clock))
> >> +		return (u32) clock->read(clock);
> > 
> > Can you walk us through the code that is executed when clock->read() is
> > called ?  Is it possible that the clock source read() takes a xtime seq
> > read lock in some SH configurations ?
> 
> On SH, the trace_clock_read_synthetic_tsc invokes the
> sh_tmu_clocksource_read (clock->read), in drivers/clocksource/sh_tmu.c.
> This reads the timer counter register (TCNT).
> 
> What do you think?

This particular implementation seems ok, but I'd like stronger
guarantees than that:

- That the clocksource selection will still work on future kernel
  releases and other SH boards.
- That sh_tmu_clocksource_read will never *ever* take any lock in any
  future kernel version. Is that guaranteed by the clocksource API ?

Thanks,

Mathieu


> 
> Regards
> Giuseppe
> 
> > If it is the case, then we will run into deadlocks with tracing code
> > called from within the xtime seq write lock. Therefore, fixing this
> > without calling the clocksource read() would be adequate.
> > 
> > Thanks,
> > 
> > Mathieu
> 

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com




More information about the lttng-dev mailing list