Re: LTTng for ST40 kernel 2.6.23.1

Mathieu Desnoyers <[email protected]> Tue, 30 Oct 2007 11:28:11 -0400
Newsgroups gmane.linux.kernel.tracing
Message-ID <20071030152811.GA29837@Krystal>
* Giuseppe Cavallaro ([email protected]) wrote:
> Hi Mathieu,
> I've applied LTTng  (0.10.0-pre7) against the STLinux kernel
> 2.6.23.1<http://2.6.23.1>(for SH4 architecture).
> I've had to add the ltt_add_timestamp function (patch attached) in order to
> build kernel/timer.c.
> I'm going to start testing LTTng on my target... so I'll let you know!
> 

Forget about my last email.. all this is already in the LTTng patchset,
except ltt_add_timestamp, as you explained.

Thanks,

Mathieu

> Regards,
>   Giuseppe

> This patch adds the timestamping mechanism in the ltt.h arch header file.
> The new timestamp functions use the TMU channel 1.
> 
> This code only works if the TMU channel 1 is initialized during the kernel boot
> 
> From: Giuseppe Cavallaro <[email protected]>
> Signed-off-by: Giuseppe Cavallaro <[email protected]>
> Signed-off-by: Mathieu Desnoyers <[email protected]>
> 
> --- /dev/null	2007-10-24 15:55:45.303163180 +0200
> +++ linux-2.6.23.1/include/asm-sh/ltt.h	2007-10-29 22:54:22.000000000 +0100
> @@ -0,0 +1,48 @@
> +/*
> + * Copyright (C) 2007, Giuseppe Cavallaro <[email protected]>
> + *                     Mathieu Desnoyers <[email protected]>
> + *
> + * SuperH definitions for tracing system
> + */
> +
> +#ifndef _ASM_SH_LTT_H
> +#define _ASM_SH_LTT_H
> +
> +#include <linux/ltt-core.h>
> +#include <asm/timer.h>
> +#include <asm/clock.h>
> +
> +#define LTT_HAS_TSC
> +
> +u64 ltt_heartbeat_read_synthetic_tsc(void);
> +
> +static inline u32 ltt_get_timestamp32(void)
> +{
> +	return get_cycles();
> +}
> +
> +static inline u64 ltt_get_timestamp64(void)
> +{
> +	return ltt_heartbeat_read_synthetic_tsc();
> +}
> +
> +static inline void ltt_add_timestamp(unsigned long ticks)
> +{ }
> +
> +static inline unsigned int ltt_frequency(void)
> +{
> +	unsigned long rate;
> +	struct clk *tmu1_clk;
> +
> +	tmu1_clk = clk_get(NULL, "tmu1_clk");
> +	rate = (clk_get_rate(tmu1_clk));
> +
> +	return (unsigned int)(rate);
> +}
> +
> +static inline u32 ltt_freq_scale(void)
> +{
> +	return 1;
> +}
> +
> +#endif /* _ASM_SH_LTT_H */
> --- linux-2.6.23.1/include/asm-sh/timex.h.orig	2007-10-29 22:53:50.000000000 +0100
> +++ linux-2.6.23.1/include/asm-sh/timex.h	2007-10-29 22:54:14.000000000 +0100
> @@ -5,13 +5,20 @@
>   */
>  #ifndef __ASM_SH_TIMEX_H
>  #define __ASM_SH_TIMEX_H
> +#ifdef CONFIG_LTT
> +#include <asm/cpu/timer.h>
> +#include <asm/io.h>
> +#endif
>  
> -#define CLOCK_TICK_RATE		(CONFIG_SH_PCLK_FREQ / 4) /* Underlying HZ */
> +#define CLOCK_TICK_RATE		(HZ * 100000UL)
>  
>  typedef unsigned long long cycles_t;
>  
>  static __inline__ cycles_t get_cycles (void)
>  {
> +#ifdef CONFIG_LTT
> +	return (0xffffffff - ctrl_inl(TMU1_TCNT));
> +#endif
>  	return 0;
>  }
>  

> _______________________________________________
> Ltt-dev mailing list
> [email protected]
> http://listserv.shafik.org/mailman/listinfo/ltt-dev


-- 
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68