public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [git-pull -tip] x86:perf_counter cleanup
@ 2009-03-08 10:13 Jaswinder Singh Rajput
  2009-03-08 10:20 ` Peter Zijlstra
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Jaswinder Singh Rajput @ 2009-03-08 10:13 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner, Peter Zijlstra, x86 maintainers,
	LKML


The following changes since commit 880860e392d92c457e8116cdee39ec4d109174ee:
  Paul Mackerras (1):
        perfcounters/powerpc: add support for POWER4 processors

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/jaswinder/linux-2.6-tip.git perfcounters/core

Jaswinder Singh Rajput (2):
      x86: perf_counter.c remove unused variables
      x86: perf_counter.c fix style problems

 arch/x86/kernel/cpu/perf_counter.c |   16 ++++++----------
 1 files changed, 6 insertions(+), 10 deletions(-)

Complete diff:
diff --git a/arch/x86/kernel/cpu/perf_counter.c b/arch/x86/kernel/cpu/perf_counter.c
index f585371..7460895 100644
--- a/arch/x86/kernel/cpu/perf_counter.c
+++ b/arch/x86/kernel/cpu/perf_counter.c
@@ -17,7 +17,6 @@
 #include <linux/kdebug.h>
 #include <linux/sched.h>
 
-#include <asm/perf_counter.h>
 #include <asm/apic.h>
 
 static bool perf_counters_initialized __read_mostly;
@@ -263,6 +262,9 @@ static u64 pmc_amd_save_disable_all(void)
 	return enabled;
 }
 
+/*
+ * Exported because of ACPI idle
+ */
 u64 hw_perf_save_disable(void)
 {
 	if (unlikely(!perf_counters_initialized))
@@ -270,9 +272,6 @@ u64 hw_perf_save_disable(void)
 
 	return pmc_ops->save_disable_all();
 }
-/*
- * Exported because of ACPI idle
- */
 EXPORT_SYMBOL_GPL(hw_perf_save_disable);
 
 static void pmc_intel_restore_all(u64 ctrl)
@@ -301,6 +300,9 @@ static void pmc_amd_restore_all(u64 ctrl)
 	}
 }
 
+/*
+ * Exported because of ACPI idle
+ */
 void hw_perf_restore(u64 ctrl)
 {
 	if (unlikely(!perf_counters_initialized))
@@ -308,9 +310,6 @@ void hw_perf_restore(u64 ctrl)
 
 	pmc_ops->restore_all(ctrl);
 }
-/*
- * Exported because of ACPI idle
- */
 EXPORT_SYMBOL_GPL(hw_perf_restore);
 
 static u64 pmc_intel_get_status(u64 mask)
@@ -954,9 +953,6 @@ static struct pmc_x86_ops *pmc_intel_init(void)
 
 static struct pmc_x86_ops *pmc_amd_init(void)
 {
-	u64 old;
-	int bits;
-
 	nr_counters_generic = 4;
 	nr_counters_fixed = 0;
 	counter_value_mask = 0x0000FFFFFFFFFFFFULL;



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

* Re: [git-pull -tip] x86:perf_counter cleanup
  2009-03-08 10:13 [git-pull -tip] x86:perf_counter cleanup Jaswinder Singh Rajput
@ 2009-03-08 10:20 ` Peter Zijlstra
  2009-03-08 10:39   ` Jaswinder Singh Rajput
  2009-03-08 10:32 ` Peter Zijlstra
  2009-03-08 10:34 ` Peter Zijlstra
  2 siblings, 1 reply; 9+ messages in thread
From: Peter Zijlstra @ 2009-03-08 10:20 UTC (permalink / raw)
  To: Jaswinder Singh Rajput
  Cc: Ingo Molnar, Thomas Gleixner, x86 maintainers, LKML

On Sun, 2009-03-08 at 15:43 +0530, Jaswinder Singh Rajput wrote:

> +/*
> + * Exported because of ACPI idle
> + */
>  u64 hw_perf_save_disable(void)
>  {
>  	if (unlikely(!perf_counters_initialized))
> @@ -270,9 +272,6 @@ u64 hw_perf_save_disable(void)
>  
>  	return pmc_ops->save_disable_all();
>  }
> -/*
> - * Exported because of ACPI idle
> - */
>  EXPORT_SYMBOL_GPL(hw_perf_save_disable);
>  
>  static void pmc_intel_restore_all(u64 ctrl)
> @@ -301,6 +300,9 @@ static void pmc_amd_restore_all(u64 ctrl)
>  	}
>  }
>  
> +/*
> + * Exported because of ACPI idle
> + */
>  void hw_perf_restore(u64 ctrl)
>  {
>  	if (unlikely(!perf_counters_initialized))
> @@ -308,9 +310,6 @@ void hw_perf_restore(u64 ctrl)
>  
>  	pmc_ops->restore_all(ctrl);
>  }
> -/*
> - * Exported because of ACPI idle
> - */
>  EXPORT_SYMBOL_GPL(hw_perf_restore);

Please leave those comments where they are, they do not describe the
function, but comment on the export.

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

* Re: [git-pull -tip] x86:perf_counter cleanup
  2009-03-08 10:13 [git-pull -tip] x86:perf_counter cleanup Jaswinder Singh Rajput
  2009-03-08 10:20 ` Peter Zijlstra
@ 2009-03-08 10:32 ` Peter Zijlstra
  2009-03-08 10:34 ` Peter Zijlstra
  2 siblings, 0 replies; 9+ messages in thread
From: Peter Zijlstra @ 2009-03-08 10:32 UTC (permalink / raw)
  To: Jaswinder Singh Rajput
  Cc: Ingo Molnar, Thomas Gleixner, x86 maintainers, LKML

On Sun, 2009-03-08 at 15:43 +0530, Jaswinder Singh Rajput wrote:
>  
>  static struct pmc_x86_ops *pmc_amd_init(void)
>  {
> -       u64 old;
> -       int bits;
> -
>         nr_counters_generic = 4;
>         nr_counters_fixed = 0;
>         counter_value_mask = 0x0000FFFFFFFFFFFFULL;



I would rather we try something like the below:

diff --git a/arch/x86/kernel/cpu/perf_counter.c b/arch/x86/kernel/cpu/perf_counter.c
index f585371..ccb4f79 100644
--- a/arch/x86/kernel/cpu/perf_counter.c
+++ b/arch/x86/kernel/cpu/perf_counter.c
@@ -957,12 +957,39 @@ static struct pmc_x86_ops *pmc_amd_init(void)
 	u64 old;
 	int bits;
 
+	pr_info("AMD Performance Monitoring support detected.\n");
+
 	nr_counters_generic = 4;
 	nr_counters_fixed = 0;
-	counter_value_mask = 0x0000FFFFFFFFFFFFULL;
-	counter_value_bits = 48;
+	counter_value_mask = ~0ULL;
 
-	pr_info("AMD Performance Monitoring support detected.\n");
+	rdmsrl(MSR_K7_PERFCTR0, old);
+	wrmsrl(MSR_K7_PERFCTR0, counter_value_mask);
+
+	/*
+	 * Ensure the counter_value_mask write, is completed before
+	 * we try to read it back.
+	 */ 
+	mb();
+
+	/* read the truncated mask */
+	rdmsrl(MSR_K7_PERFCTR0, counter_value_mask);
+	wrmsrl(MSR_K7_PERFCTR0, old);
+
+	bits = 32 + fls(counter_value_mask >> 32);
+	if (bits == 32)
+		bits = fls((u32)counter_value_mask);
+	counter_value_bits = bits;
+
+	if (counter_value_bits != 48 ||
+	    counter_value_mask != ((1ULL << counter_value_bits) - 1)) {
+		printk(KERN_ERR "Bad cpu! speculated through full memory barrier!\n");
+		printk(KERN_ERR " ... old value: %llx\n", old);
+		printk(KERN_ERR " ... new value: %llx\n", counter_value_mask);
+
+		counter_value_bits = 48;
+		counter_value_mask = 0x0000FFFFFFFFFFFFULL;
+	}
 
 	return &pmc_amd_ops;
 }


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

* Re: [git-pull -tip] x86:perf_counter cleanup
  2009-03-08 10:13 [git-pull -tip] x86:perf_counter cleanup Jaswinder Singh Rajput
  2009-03-08 10:20 ` Peter Zijlstra
  2009-03-08 10:32 ` Peter Zijlstra
@ 2009-03-08 10:34 ` Peter Zijlstra
  2009-03-08 15:52   ` [tip:perfcounters/core] x86: perf_counter cleanup Peter Zijlstra
  2 siblings, 1 reply; 9+ messages in thread
From: Peter Zijlstra @ 2009-03-08 10:34 UTC (permalink / raw)
  To: Jaswinder Singh Rajput
  Cc: Ingo Molnar, Thomas Gleixner, x86 maintainers, LKML


An actual cleanup would be:

---
Subject: perf_counters: cleanup amd64 code a little
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Thu Mar 05 21:18:49 CET 2009

Use and actual unsigned long bitmap instead of casting our way around.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
---
 arch/x86/kernel/cpu/perf_counter.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Index: linux-2.6/arch/x86/kernel/cpu/perf_counter.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/cpu/perf_counter.c
+++ linux-2.6/arch/x86/kernel/cpu/perf_counter.c
@@ -37,7 +37,7 @@ struct cpu_hw_counters {
 	unsigned long		used[BITS_TO_LONGS(X86_PMC_IDX_MAX)];
 	unsigned long		interrupts;
 	u64			throttle_ctrl;
-	u64			active_mask;
+	unsigned long		active_mask[BITS_TO_LONGS(X86_PMC_IDX_MAX)];
 	int			enabled;
 };
 
@@ -291,7 +291,7 @@ static void pmc_amd_restore_all(u64 ctrl
 		return;
 
 	for (idx = 0; idx < nr_counters_generic; idx++) {
-		if (test_bit(idx, (unsigned long *)&cpuc->active_mask)) {
+		if (test_bit(idx, cpuc->active_mask)) {
 			u64 val;
 
 			rdmsrl(MSR_K7_EVNTSEL0 + idx, val);
@@ -377,7 +377,7 @@ static void pmc_amd_enable(int idx, u64 
 {
 	struct cpu_hw_counters *cpuc = &__get_cpu_var(cpu_hw_counters);
 
-	set_bit(idx, (unsigned long *)&cpuc->active_mask);
+	set_bit(idx, cpuc->active_mask);
 	if (cpuc->enabled)
 		config |= ARCH_PERFMON_EVENTSEL0_ENABLE;
 
@@ -401,7 +401,7 @@ static void pmc_amd_disable(int idx, u64
 {
 	struct cpu_hw_counters *cpuc = &__get_cpu_var(cpu_hw_counters);
 
-	clear_bit(idx, (unsigned long *)&cpuc->active_mask);
+	clear_bit(idx, cpuc->active_mask);
 	wrmsrl(MSR_K7_EVNTSEL0 + idx, config);
 
 }


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

* Re: [git-pull -tip] x86:perf_counter cleanup
  2009-03-08 10:20 ` Peter Zijlstra
@ 2009-03-08 10:39   ` Jaswinder Singh Rajput
  2009-03-08 10:41     ` Ingo Molnar
  2009-03-08 10:46     ` Peter Zijlstra
  0 siblings, 2 replies; 9+ messages in thread
From: Jaswinder Singh Rajput @ 2009-03-08 10:39 UTC (permalink / raw)
  To: Peter Zijlstra; +Cc: Ingo Molnar, Thomas Gleixner, x86 maintainers, LKML

Hello Peter,

On Sun, 2009-03-08 at 11:20 +0100, Peter Zijlstra wrote:
> On Sun, 2009-03-08 at 15:43 +0530, Jaswinder Singh Rajput wrote:
> 
> > +/*
> > + * Exported because of ACPI idle
> > + */
> >  u64 hw_perf_save_disable(void)
> >  {
> >  	if (unlikely(!perf_counters_initialized))
> > @@ -270,9 +272,6 @@ u64 hw_perf_save_disable(void)
> >  
> >  	return pmc_ops->save_disable_all();
> >  }
> > -/*
> > - * Exported because of ACPI idle
> > - */
> >  EXPORT_SYMBOL_GPL(hw_perf_save_disable);
> >  
> >  static void pmc_intel_restore_all(u64 ctrl)
> > @@ -301,6 +300,9 @@ static void pmc_amd_restore_all(u64 ctrl)
> >  	}
> >  }
> >  
> > +/*
> > + * Exported because of ACPI idle
> > + */
> >  void hw_perf_restore(u64 ctrl)
> >  {
> >  	if (unlikely(!perf_counters_initialized))
> > @@ -308,9 +310,6 @@ void hw_perf_restore(u64 ctrl)
> >  
> >  	pmc_ops->restore_all(ctrl);
> >  }
> > -/*
> > - * Exported because of ACPI idle
> > - */
> >  EXPORT_SYMBOL_GPL(hw_perf_restore);
> 
> Please leave those comments where they are, they do not describe the
> function, but comment on the export.

Have you checked this:
http://git.kernel.org/?p=linux/kernel/git/jaswinder/linux-2.6-tip.git;a=commitdiff;h=1ae843834668af3a30484e256fb27dc1a49f59cb

These leads to warnings:
 WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable
 WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable

So we have two options:
1. which I already shown above
2. remove these comments

Please let me know, which option you will prefer.

Thanks,
--
JSR


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

* Re: [git-pull -tip] x86:perf_counter cleanup
  2009-03-08 10:39   ` Jaswinder Singh Rajput
@ 2009-03-08 10:41     ` Ingo Molnar
  2009-03-08 11:39       ` Jaswinder Singh Rajput
  2009-03-08 10:46     ` Peter Zijlstra
  1 sibling, 1 reply; 9+ messages in thread
From: Ingo Molnar @ 2009-03-08 10:41 UTC (permalink / raw)
  To: Jaswinder Singh Rajput
  Cc: Peter Zijlstra, Thomas Gleixner, x86 maintainers, LKML


* Jaswinder Singh Rajput <jaswinder@kernel.org> wrote:

> Hello Peter,
> 
> On Sun, 2009-03-08 at 11:20 +0100, Peter Zijlstra wrote:
> > On Sun, 2009-03-08 at 15:43 +0530, Jaswinder Singh Rajput wrote:
> > 
> > > +/*
> > > + * Exported because of ACPI idle
> > > + */
> > >  u64 hw_perf_save_disable(void)
> > >  {
> > >  	if (unlikely(!perf_counters_initialized))
> > > @@ -270,9 +272,6 @@ u64 hw_perf_save_disable(void)
> > >  
> > >  	return pmc_ops->save_disable_all();
> > >  }
> > > -/*
> > > - * Exported because of ACPI idle
> > > - */
> > >  EXPORT_SYMBOL_GPL(hw_perf_save_disable);
> > >  
> > >  static void pmc_intel_restore_all(u64 ctrl)
> > > @@ -301,6 +300,9 @@ static void pmc_amd_restore_all(u64 ctrl)
> > >  	}
> > >  }
> > >  
> > > +/*
> > > + * Exported because of ACPI idle
> > > + */
> > >  void hw_perf_restore(u64 ctrl)
> > >  {
> > >  	if (unlikely(!perf_counters_initialized))
> > > @@ -308,9 +310,6 @@ void hw_perf_restore(u64 ctrl)
> > >  
> > >  	pmc_ops->restore_all(ctrl);
> > >  }
> > > -/*
> > > - * Exported because of ACPI idle
> > > - */
> > >  EXPORT_SYMBOL_GPL(hw_perf_restore);
> > 
> > Please leave those comments where they are, they do not describe the
> > function, but comment on the export.
> 
> Have you checked this:
> http://git.kernel.org/?p=linux/kernel/git/jaswinder/linux-2.6-tip.git;a=commitdiff;h=1ae843834668af3a30484e256fb27dc1a49f59cb
> 
> These leads to warnings:
>  WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable
>  WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable

ignore those checkpatch warnings, they are wrong in this case.

> So we have two options:
> 1. which I already shown above
> 2. remove these comments

  3. ignore incorrect warnings

	Ingo

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

* Re: [git-pull -tip] x86:perf_counter cleanup
  2009-03-08 10:39   ` Jaswinder Singh Rajput
  2009-03-08 10:41     ` Ingo Molnar
@ 2009-03-08 10:46     ` Peter Zijlstra
  1 sibling, 0 replies; 9+ messages in thread
From: Peter Zijlstra @ 2009-03-08 10:46 UTC (permalink / raw)
  To: Jaswinder Singh Rajput
  Cc: Ingo Molnar, Thomas Gleixner, x86 maintainers, LKML

On Sun, 2009-03-08 at 16:09 +0530, Jaswinder Singh Rajput wrote:
> These leads to warnings:
>  WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable
>  WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable

Its the exception that makes the rule ;-)




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

* Re: [git-pull -tip] x86:perf_counter cleanup
  2009-03-08 10:41     ` Ingo Molnar
@ 2009-03-08 11:39       ` Jaswinder Singh Rajput
  0 siblings, 0 replies; 9+ messages in thread
From: Jaswinder Singh Rajput @ 2009-03-08 11:39 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Peter Zijlstra, Thomas Gleixner, x86 maintainers, LKML

On Sun, 2009-03-08 at 11:41 +0100, Ingo Molnar wrote:
> * Jaswinder Singh Rajput <jaswinder@kernel.org> wrote:
> > These leads to warnings:
> >  WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable
> >  WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable
> 
> ignore those checkpatch warnings, they are wrong in this case.

OK, ignored for time being.

Log messages available at:
http://git.kernel.org/?p=linux/kernel/git/jaswinder/linux-2.6-tip.git;a=shortlog;h=perfcounters/core

So here is new pull request:

The following changes since commit 880860e392d92c457e8116cdee39ec4d109174ee:
  Paul Mackerras (1):
        perfcounters/powerpc: add support for POWER4 processors

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/jaswinder/linux-2.6-tip.git perfcounters/core

Jaswinder Singh Rajput (2):
      x86: perf_counter.c remove unused variables
      x86: perf_counter.c remove duplicate header file

 arch/x86/kernel/cpu/perf_counter.c |    4 ----
 1 files changed, 0 insertions(+), 4 deletions(-)

Complete diff:
diff --git a/arch/x86/kernel/cpu/perf_counter.c b/arch/x86/kernel/cpu/perf_counter.c
index f585371..79d88bf 100644
--- a/arch/x86/kernel/cpu/perf_counter.c
+++ b/arch/x86/kernel/cpu/perf_counter.c
@@ -17,7 +17,6 @@
 #include <linux/kdebug.h>
 #include <linux/sched.h>
 
-#include <asm/perf_counter.h>
 #include <asm/apic.h>
 
 static bool perf_counters_initialized __read_mostly;
@@ -954,9 +953,6 @@ static struct pmc_x86_ops *pmc_intel_init(void)
 
 static struct pmc_x86_ops *pmc_amd_init(void)
 {
-	u64 old;
-	int bits;
-
 	nr_counters_generic = 4;
 	nr_counters_fixed = 0;
 	counter_value_mask = 0x0000FFFFFFFFFFFFULL;



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

* [tip:perfcounters/core] x86: perf_counter cleanup
  2009-03-08 10:34 ` Peter Zijlstra
@ 2009-03-08 15:52   ` Peter Zijlstra
  0 siblings, 0 replies; 9+ messages in thread
From: Peter Zijlstra @ 2009-03-08 15:52 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, hpa, mingo, a.p.zijlstra, jaswinder, peterz, tglx,
	mingo

Commit-ID:  184fe4ab1f2e4dfa45584889bb3820031648386b
Gitweb:     http://git.kernel.org/tip/184fe4ab1f2e4dfa45584889bb3820031648386b
Author:     "Peter Zijlstra" <peterz@infradead.org>
AuthorDate: Sun, 8 Mar 2009 11:34:19 +0100
Commit:     Ingo Molnar <mingo@elte.hu>
CommitDate: Sun, 8 Mar 2009 16:24:49 +0100

x86: perf_counter cleanup

Use and actual unsigned long bitmap instead of casting our way around.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Jaswinder Singh Rajput <jaswinder@kernel.org>
LKML-Reference: <1236508459.22914.3645.camel@twins>
Signed-off-by: Ingo Molnar <mingo@elte.hu>


---
 arch/x86/kernel/cpu/perf_counter.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kernel/cpu/perf_counter.c b/arch/x86/kernel/cpu/perf_counter.c
index f585371..1df4210 100644
--- a/arch/x86/kernel/cpu/perf_counter.c
+++ b/arch/x86/kernel/cpu/perf_counter.c
@@ -37,7 +37,7 @@ struct cpu_hw_counters {
 	unsigned long		used[BITS_TO_LONGS(X86_PMC_IDX_MAX)];
 	unsigned long		interrupts;
 	u64			throttle_ctrl;
-	u64			active_mask;
+	unsigned long		active_mask[BITS_TO_LONGS(X86_PMC_IDX_MAX)];
 	int			enabled;
 };
 
@@ -291,7 +291,7 @@ static void pmc_amd_restore_all(u64 ctrl)
 		return;
 
 	for (idx = 0; idx < nr_counters_generic; idx++) {
-		if (test_bit(idx, (unsigned long *)&cpuc->active_mask)) {
+		if (test_bit(idx, cpuc->active_mask)) {
 			u64 val;
 
 			rdmsrl(MSR_K7_EVNTSEL0 + idx, val);
@@ -377,7 +377,7 @@ static void pmc_amd_enable(int idx, u64 config)
 {
 	struct cpu_hw_counters *cpuc = &__get_cpu_var(cpu_hw_counters);
 
-	set_bit(idx, (unsigned long *)&cpuc->active_mask);
+	set_bit(idx, cpuc->active_mask);
 	if (cpuc->enabled)
 		config |= ARCH_PERFMON_EVENTSEL0_ENABLE;
 
@@ -401,7 +401,7 @@ static void pmc_amd_disable(int idx, u64 config)
 {
 	struct cpu_hw_counters *cpuc = &__get_cpu_var(cpu_hw_counters);
 
-	clear_bit(idx, (unsigned long *)&cpuc->active_mask);
+	clear_bit(idx, cpuc->active_mask);
 	wrmsrl(MSR_K7_EVNTSEL0 + idx, config);
 
 }

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

end of thread, other threads:[~2009-03-08 15:53 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-08 10:13 [git-pull -tip] x86:perf_counter cleanup Jaswinder Singh Rajput
2009-03-08 10:20 ` Peter Zijlstra
2009-03-08 10:39   ` Jaswinder Singh Rajput
2009-03-08 10:41     ` Ingo Molnar
2009-03-08 11:39       ` Jaswinder Singh Rajput
2009-03-08 10:46     ` Peter Zijlstra
2009-03-08 10:32 ` Peter Zijlstra
2009-03-08 10:34 ` Peter Zijlstra
2009-03-08 15:52   ` [tip:perfcounters/core] x86: perf_counter cleanup Peter Zijlstra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox