All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] softirq,tracing: enable to trace softirq raise latency
@ 2009-11-05  7:54 Lai Jiangshan
  2009-11-05 14:43 ` Mathieu Desnoyers
  2009-11-09  1:58 ` Frederic Weisbecker
  0 siblings, 2 replies; 7+ messages in thread
From: Lai Jiangshan @ 2009-11-05  7:54 UTC (permalink / raw)
  To: Ingo Molnar, Steven Rostedt, fweisbec
  Cc: Xiao Guangrong, Mathieu Desnoyers, linux-kernel, zhaolei,
	Xiao Guangrong, Li Zefan, Thomas Gleixner, Jason Baron


Add a tracepoint for tracing when softirq action is raised.

It and the existed tracepoints complete softirq's tracepoints:
softirq_raise, softirq_entry and softirq_exit.

And when this tracepoint is used in combination with
the softirq_entry tracepoint we can determine
the softirq raise latency.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
---
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 75f3f00..b368d5d 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -18,6 +18,7 @@
 #include <asm/atomic.h>
 #include <asm/ptrace.h>
 #include <asm/system.h>
+#include <trace/events/irq.h>
 
 /*
  * These correspond to the IORESOURCE_IRQ_* defines in
@@ -372,7 +373,13 @@ asmlinkage void do_softirq(void);
 asmlinkage void __do_softirq(void);
 extern void open_softirq(int nr, void (*action)(struct softirq_action *));
 extern void softirq_init(void);
-#define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
+
+static inline void __raise_softirq_irqoff(unsigned int nr)
+{
+	trace_softirq_raise(nr);
+	or_softirq_pending(1UL << nr);
+}
+
 extern void raise_softirq_irqoff(unsigned int nr);
 extern void raise_softirq(unsigned int nr);
 extern void wakeup_softirqd(void);
diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
index dcfcd44..799af09 100644
--- a/include/trace/events/irq.h
+++ b/include/trace/events/irq.h
@@ -5,7 +5,9 @@
 #define _TRACE_IRQ_H
 
 #include <linux/tracepoint.h>
-#include <linux/interrupt.h>
+
+struct irqaction;
+struct softirq_action;
 
 #define softirq_name(sirq) { sirq##_SOFTIRQ, #sirq }
 #define show_softirq_name(val)				\
@@ -83,6 +85,32 @@ TRACE_EVENT(irq_handler_exit,
 );
 
 /**
+ * softirq_raise - called immediately when a softirq is raised
+ * @nr: softirq vector number
+ *
+ * Tracepoint for tracing when softirq action is raised.
+ * Also, when used in combination with the softirq_entry tracepoint
+ * we can determine the softirq raise latency.
+ */
+TRACE_EVENT(softirq_raise,
+
+	TP_PROTO(unsigned int nr),
+
+	TP_ARGS(nr),
+
+	TP_STRUCT__entry(
+		__field(	unsigned int,	vec		)
+	),
+
+	TP_fast_assign(
+		__entry->vec	= nr;
+	),
+
+	TP_printk("vec=%d [action=%s]", __entry->vec,
+		  show_softirq_name(__entry->vec))
+);
+
+/**
  * softirq_entry - called immediately before the softirq handler
  * @h: pointer to struct softirq_action
  * @vec: pointer to first struct softirq_action in softirq_vec array
@@ -100,11 +128,11 @@ TRACE_EVENT(softirq_entry,
 	TP_ARGS(h, vec),
 
 	TP_STRUCT__entry(
-		__field(	int,	vec			)
+		__field(	unsigned int,	vec		)
 	),
 
 	TP_fast_assign(
-		__entry->vec = (int)(h - vec);
+		__entry->vec = (unsigned int)(h - vec);
 	),
 
 	TP_printk("vec=%d [action=%s]", __entry->vec,
@@ -129,11 +157,11 @@ TRACE_EVENT(softirq_exit,
 	TP_ARGS(h, vec),
 
 	TP_STRUCT__entry(
-		__field(	int,	vec			)
+		__field(	unsigned int,	vec		)
 	),
 
 	TP_fast_assign(
-		__entry->vec = (int)(h - vec);
+		__entry->vec = (unsigned int)(h - vec);
 	),
 
 	TP_printk("vec=%d [action=%s]", __entry->vec,


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] softirq,tracing: enable to trace softirq raise latency
  2009-11-05  7:54 [PATCH] softirq,tracing: enable to trace softirq raise latency Lai Jiangshan
@ 2009-11-05 14:43 ` Mathieu Desnoyers
  2009-11-06  1:15   ` Lai Jiangshan
  2009-11-09  1:58 ` Frederic Weisbecker
  1 sibling, 1 reply; 7+ messages in thread
From: Mathieu Desnoyers @ 2009-11-05 14:43 UTC (permalink / raw)
  To: Lai Jiangshan
  Cc: Ingo Molnar, Steven Rostedt, fweisbec, Xiao Guangrong,
	linux-kernel, zhaolei, Li Zefan, Thomas Gleixner, Jason Baron

* Lai Jiangshan (laijs@cn.fujitsu.com) wrote:
> 
> Add a tracepoint for tracing when softirq action is raised.
> 
> It and the existed tracepoints complete softirq's tracepoints:
> softirq_raise, softirq_entry and softirq_exit.
> 
> And when this tracepoint is used in combination with
> the softirq_entry tracepoint we can determine
> the softirq raise latency.
> 

Hi Lai,

It generally looks good, we have a similar instrumentation point in the
LTTng tree, and it's really useful. It's a good idea to instrument
__raise_softirq_irqoff rather than just raise_softirq_irqoff: it
includes the HI/TASKLET and HRTIMER softirqs.

There is just a small comment which should probably also be changed,
please see below, besides that, you have my

Acked-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>

> Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
> ---
> diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
> index 75f3f00..b368d5d 100644
> --- a/include/linux/interrupt.h
> +++ b/include/linux/interrupt.h
> @@ -18,6 +18,7 @@
>  #include <asm/atomic.h>
>  #include <asm/ptrace.h>
>  #include <asm/system.h>
> +#include <trace/events/irq.h>
>  
>  /*
>   * These correspond to the IORESOURCE_IRQ_* defines in
> @@ -372,7 +373,13 @@ asmlinkage void do_softirq(void);
>  asmlinkage void __do_softirq(void);
>  extern void open_softirq(int nr, void (*action)(struct softirq_action *));
>  extern void softirq_init(void);
> -#define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
> +
> +static inline void __raise_softirq_irqoff(unsigned int nr)
> +{
> +	trace_softirq_raise(nr);
> +	or_softirq_pending(1UL << nr);
> +}
> +
>  extern void raise_softirq_irqoff(unsigned int nr);
>  extern void raise_softirq(unsigned int nr);
>  extern void wakeup_softirqd(void);
> diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
> index dcfcd44..799af09 100644
> --- a/include/trace/events/irq.h
> +++ b/include/trace/events/irq.h
> @@ -5,7 +5,9 @@
>  #define _TRACE_IRQ_H
>  
>  #include <linux/tracepoint.h>
> -#include <linux/interrupt.h>
> +
> +struct irqaction;
> +struct softirq_action;
>  
>  #define softirq_name(sirq) { sirq##_SOFTIRQ, #sirq }
>  #define show_softirq_name(val)				\
> @@ -83,6 +85,32 @@ TRACE_EVENT(irq_handler_exit,
>  );
>  
>  /**
> + * softirq_raise - called immediately when a softirq is raised
> + * @nr: softirq vector number
> + *
> + * Tracepoint for tracing when softirq action is raised.
> + * Also, when used in combination with the softirq_entry tracepoint
> + * we can determine the softirq raise latency.
> + */
> +TRACE_EVENT(softirq_raise,
> +
> +	TP_PROTO(unsigned int nr),
> +
> +	TP_ARGS(nr),
> +
> +	TP_STRUCT__entry(
> +		__field(	unsigned int,	vec		)
> +	),
> +
> +	TP_fast_assign(
> +		__entry->vec	= nr;
> +	),
> +
> +	TP_printk("vec=%d [action=%s]", __entry->vec,
> +		  show_softirq_name(__entry->vec))
> +);
> +
> +/**
>   * softirq_entry - called immediately before the softirq handler
>   * @h: pointer to struct softirq_action
>   * @vec: pointer to first struct softirq_action in softirq_vec array

Please change this comment to "@vec: softirq vector number" while you
are at it. The same probably needs to be done for softirq_exit. @vec are
not pointers: these are offsets.

Thanks,

Mathieu


> @@ -100,11 +128,11 @@ TRACE_EVENT(softirq_entry,
>  	TP_ARGS(h, vec),
>  
>  	TP_STRUCT__entry(
> -		__field(	int,	vec			)
> +		__field(	unsigned int,	vec		)
>  	),
>  
>  	TP_fast_assign(
> -		__entry->vec = (int)(h - vec);
> +		__entry->vec = (unsigned int)(h - vec);
>  	),
>  
>  	TP_printk("vec=%d [action=%s]", __entry->vec,
> @@ -129,11 +157,11 @@ TRACE_EVENT(softirq_exit,
>  	TP_ARGS(h, vec),
>  
>  	TP_STRUCT__entry(
> -		__field(	int,	vec			)
> +		__field(	unsigned int,	vec		)
>  	),
>  
>  	TP_fast_assign(
> -		__entry->vec = (int)(h - vec);
> +		__entry->vec = (unsigned int)(h - vec);
>  	),
>  
>  	TP_printk("vec=%d [action=%s]", __entry->vec,
> 

-- 
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] softirq,tracing: enable to trace softirq raise latency
  2009-11-05 14:43 ` Mathieu Desnoyers
@ 2009-11-06  1:15   ` Lai Jiangshan
  2009-11-06  1:29     ` Mathieu Desnoyers
  0 siblings, 1 reply; 7+ messages in thread
From: Lai Jiangshan @ 2009-11-06  1:15 UTC (permalink / raw)
  To: Mathieu Desnoyers
  Cc: Ingo Molnar, Steven Rostedt, fweisbec, Xiao Guangrong,
	linux-kernel, zhaolei, Li Zefan, Thomas Gleixner, Jason Baron

Mathieu Desnoyers wrote:
> * Lai Jiangshan (laijs@cn.fujitsu.com) wrote:
>> Add a tracepoint for tracing when softirq action is raised.
>>
>> It and the existed tracepoints complete softirq's tracepoints:
>> softirq_raise, softirq_entry and softirq_exit.
>>
>> And when this tracepoint is used in combination with
>> the softirq_entry tracepoint we can determine
>> the softirq raise latency.
>>
> 
> Hi Lai,
> 
> It generally looks good, we have a similar instrumentation point in the
> LTTng tree, and it's really useful. It's a good idea to instrument
> __raise_softirq_irqoff rather than just raise_softirq_irqoff: it
> includes the HI/TASKLET and HRTIMER softirqs.
> 
> There is just a small comment which should probably also be changed,
> please see below, besides that, you have my
> 
> Acked-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> 
>> Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
>> ---
>> diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
>> index 75f3f00..b368d5d 100644
>> --- a/include/linux/interrupt.h
>> +++ b/include/linux/interrupt.h
>> @@ -18,6 +18,7 @@
>>  #include <asm/atomic.h>
>>  #include <asm/ptrace.h>
>>  #include <asm/system.h>
>> +#include <trace/events/irq.h>
>>  
>>  /*
>>   * These correspond to the IORESOURCE_IRQ_* defines in
>> @@ -372,7 +373,13 @@ asmlinkage void do_softirq(void);
>>  asmlinkage void __do_softirq(void);
>>  extern void open_softirq(int nr, void (*action)(struct softirq_action *));
>>  extern void softirq_init(void);
>> -#define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
>> +
>> +static inline void __raise_softirq_irqoff(unsigned int nr)
>> +{
>> +	trace_softirq_raise(nr);
>> +	or_softirq_pending(1UL << nr);
>> +}
>> +
>>  extern void raise_softirq_irqoff(unsigned int nr);
>>  extern void raise_softirq(unsigned int nr);
>>  extern void wakeup_softirqd(void);
>> diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
>> index dcfcd44..799af09 100644
>> --- a/include/trace/events/irq.h
>> +++ b/include/trace/events/irq.h
>> @@ -5,7 +5,9 @@
>>  #define _TRACE_IRQ_H
>>  
>>  #include <linux/tracepoint.h>
>> -#include <linux/interrupt.h>
>> +
>> +struct irqaction;
>> +struct softirq_action;
>>  
>>  #define softirq_name(sirq) { sirq##_SOFTIRQ, #sirq }
>>  #define show_softirq_name(val)				\
>> @@ -83,6 +85,32 @@ TRACE_EVENT(irq_handler_exit,
>>  );
>>  
>>  /**
>> + * softirq_raise - called immediately when a softirq is raised
>> + * @nr: softirq vector number
>> + *
>> + * Tracepoint for tracing when softirq action is raised.
>> + * Also, when used in combination with the softirq_entry tracepoint
>> + * we can determine the softirq raise latency.
>> + */
>> +TRACE_EVENT(softirq_raise,
>> +
>> +	TP_PROTO(unsigned int nr),
>> +
>> +	TP_ARGS(nr),
>> +
>> +	TP_STRUCT__entry(
>> +		__field(	unsigned int,	vec		)
>> +	),
>> +
>> +	TP_fast_assign(
>> +		__entry->vec	= nr;
>> +	),
>> +
>> +	TP_printk("vec=%d [action=%s]", __entry->vec,
>> +		  show_softirq_name(__entry->vec))
>> +);
>> +
>> +/**
>>   * softirq_entry - called immediately before the softirq handler
>>   * @h: pointer to struct softirq_action
>>   * @vec: pointer to first struct softirq_action in softirq_vec array
> 
> Please change this comment to "@vec: softirq vector number" while you
> are at it. The same probably needs to be done for softirq_exit. @vec are
> not pointers: these are offsets.
> 

Thank you for you like it and your comment.

@vec are pointers here. it's softirq_vec. Don't need to change
these comments.

Lai

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] softirq,tracing: enable to trace softirq raise latency
  2009-11-06  1:15   ` Lai Jiangshan
@ 2009-11-06  1:29     ` Mathieu Desnoyers
  0 siblings, 0 replies; 7+ messages in thread
From: Mathieu Desnoyers @ 2009-11-06  1:29 UTC (permalink / raw)
  To: Lai Jiangshan
  Cc: Ingo Molnar, Steven Rostedt, fweisbec, Xiao Guangrong,
	linux-kernel, zhaolei, Li Zefan, Thomas Gleixner, Jason Baron

* Lai Jiangshan (laijs@cn.fujitsu.com) wrote:
> Mathieu Desnoyers wrote:
> > * Lai Jiangshan (laijs@cn.fujitsu.com) wrote:
> >> +/**
> >>   * softirq_entry - called immediately before the softirq handler
> >>   * @h: pointer to struct softirq_action
> >>   * @vec: pointer to first struct softirq_action in softirq_vec array
> > 
> > Please change this comment to "@vec: softirq vector number" while you
> > are at it. The same probably needs to be done for softirq_exit. @vec are
> > not pointers: these are offsets.
> > 
> 
> Thank you for you like it and your comment.
> 
> @vec are pointers here. it's softirq_vec. Don't need to change
> these comments.

Ah, yes, you're right. I got confused by looking only at the patch
context.

Thanks,

Mathieu

> 
> Lai

-- 
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] softirq,tracing: enable to trace softirq raise latency
  2009-11-05  7:54 [PATCH] softirq,tracing: enable to trace softirq raise latency Lai Jiangshan
  2009-11-05 14:43 ` Mathieu Desnoyers
@ 2009-11-09  1:58 ` Frederic Weisbecker
  1 sibling, 0 replies; 7+ messages in thread
From: Frederic Weisbecker @ 2009-11-09  1:58 UTC (permalink / raw)
  To: Lai Jiangshan
  Cc: Ingo Molnar, Steven Rostedt, Xiao Guangrong, Mathieu Desnoyers,
	linux-kernel, zhaolei, Li Zefan, Thomas Gleixner, Jason Baron

On Thu, Nov 05, 2009 at 03:54:55PM +0800, Lai Jiangshan wrote:
> 
> Add a tracepoint for tracing when softirq action is raised.
> 
> It and the existed tracepoints complete softirq's tracepoints:
> softirq_raise, softirq_entry and softirq_exit.
> 
> And when this tracepoint is used in combination with
> the softirq_entry tracepoint we can determine
> the softirq raise latency.
> 
> Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>


Looks good!

Acked-by: Frederic Weisbecker <fweisbec@gmail.com>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] softirq,tracing: enable to trace softirq raise latency
  2009-12-08  8:32 Lai Jiangshan
@ 2009-12-10  8:06 ` Ingo Molnar
  0 siblings, 0 replies; 7+ messages in thread
From: Ingo Molnar @ 2009-12-10  8:06 UTC (permalink / raw)
  To: Lai Jiangshan
  Cc: Mathieu Desnoyers, Steven Rostedt, Frederic Weisbecker, LKML


* Lai Jiangshan <laijs@cn.fujitsu.com> wrote:

> Rebase it for the newly codes
> Collect Acks(Acked-by Mathieu Desnoyers and Frederic Weisbecker)
> 
> 
> From: Lai Jiangshan <laijs@cn.fujitsu.com>
> 
> Add a tracepoint for tracing when softirq action is raised.
> 
> It and the existed tracepoints complete softirq's tracepoints:
> softirq_raise, softirq_entry and softirq_exit.
> 
> And when this tracepoint is used in combination with
> the softirq_entry tracepoint we can determine
> the softirq raise latency.
> 
> Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
> Acked-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> Acked-by: Frederic Weisbecker <fweisbec@gmail.com>

ok, it would be nice to expose this functionality via some sort of 'perf 
trace --irqlatency' (or perhaps a separate 'perf irq record' 'perf irq 
trace' tool) so that users/developers can make use of this new event and 
that we can check that it works and latencies are correct, etc.

	Ingo

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] softirq,tracing: enable to trace softirq raise latency
@ 2009-12-08  8:32 Lai Jiangshan
  2009-12-10  8:06 ` Ingo Molnar
  0 siblings, 1 reply; 7+ messages in thread
From: Lai Jiangshan @ 2009-12-08  8:32 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Mathieu Desnoyers, Steven Rostedt, Frederic Weisbecker, LKML

Rebase it for the newly codes
Collect Acks(Acked-by Mathieu Desnoyers and Frederic Weisbecker)


From: Lai Jiangshan <laijs@cn.fujitsu.com>

Add a tracepoint for tracing when softirq action is raised.

It and the existed tracepoints complete softirq's tracepoints:
softirq_raise, softirq_entry and softirq_exit.

And when this tracepoint is used in combination with
the softirq_entry tracepoint we can determine
the softirq raise latency.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Acked-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
---
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 75f3f00..b368d5d 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -18,6 +18,7 @@
 #include <asm/atomic.h>
 #include <asm/ptrace.h>
 #include <asm/system.h>
+#include <trace/events/irq.h>
 
 /*
  * These correspond to the IORESOURCE_IRQ_* defines in
@@ -372,7 +373,13 @@ asmlinkage void do_softirq(void);
 asmlinkage void __do_softirq(void);
 extern void open_softirq(int nr, void (*action)(struct softirq_action *));
 extern void softirq_init(void);
-#define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
+
+static inline void __raise_softirq_irqoff(unsigned int nr)
+{
+	trace_softirq_raise(nr);
+	or_softirq_pending(1UL << nr);
+}
+
 extern void raise_softirq_irqoff(unsigned int nr);
 extern void raise_softirq(unsigned int nr);
 extern void wakeup_softirqd(void);
diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h
index 0e4cfb6..7a21fe2 100644
--- a/include/trace/events/irq.h
+++ b/include/trace/events/irq.h
@@ -5,7 +5,9 @@
 #define _TRACE_IRQ_H
 
 #include <linux/tracepoint.h>
-#include <linux/interrupt.h>
+
+struct irqaction;
+struct softirq_action;
 
 #define softirq_name(sirq) { sirq##_SOFTIRQ, #sirq }
 #define show_softirq_name(val)				\
@@ -82,6 +84,32 @@ TRACE_EVENT(irq_handler_exit,
 		  __entry->irq, __entry->ret ? "handled" : "unhandled")
 );
 
+/**
+ * softirq_raise - called immediately when a softirq is raised
+ * @nr: softirq vector number
+ *
+ * Tracepoint for tracing when softirq action is raised.
+ * Also, when used in combination with the softirq_entry tracepoint
+ * we can determine the softirq raise latency.
+ */
+TRACE_EVENT(softirq_raise,
+
+	TP_PROTO(unsigned int nr),
+
+	TP_ARGS(nr),
+
+	TP_STRUCT__entry(
+		__field(	unsigned int,	vec		)
+	),
+
+	TP_fast_assign(
+		__entry->vec	= nr;
+	),
+
+	TP_printk("vec=%d [action=%s]", __entry->vec,
+		  show_softirq_name(__entry->vec))
+);
+
 DECLARE_EVENT_CLASS(softirq,
 
 	TP_PROTO(struct softirq_action *h, struct softirq_action *vec),
@@ -89,11 +117,11 @@ DECLARE_EVENT_CLASS(softirq,
 	TP_ARGS(h, vec),
 
 	TP_STRUCT__entry(
-		__field(	int,	vec			)
+		__field(	unsigned int,	vec		)
 	),
 
 	TP_fast_assign(
-		__entry->vec = (int)(h - vec);
+		__entry->vec = (unsigned int)(h - vec);
 	),
 
 	TP_printk("vec=%d [action=%s]", __entry->vec,

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-12-10  8:06 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-11-05  7:54 [PATCH] softirq,tracing: enable to trace softirq raise latency Lai Jiangshan
2009-11-05 14:43 ` Mathieu Desnoyers
2009-11-06  1:15   ` Lai Jiangshan
2009-11-06  1:29     ` Mathieu Desnoyers
2009-11-09  1:58 ` Frederic Weisbecker
2009-12-08  8:32 Lai Jiangshan
2009-12-10  8:06 ` Ingo Molnar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.