]> git.karo-electronics.de Git - linux-beck.git/commitdiff
perf_counter: Optimize disable of time based sw counters
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Wed, 20 May 2009 10:21:21 +0000 (12:21 +0200)
committerIngo Molnar <mingo@elte.hu>
Wed, 20 May 2009 10:43:33 +0000 (12:43 +0200)
Currently we call hrtimer_cancel() unconditionally on disable of time based
software counters. Avoid when possible.

[ Impact: micro-optimize the code ]

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: John Kacur <jkacur@redhat.com>
LKML-Reference: <20090520102553.388185031@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/perf_counter.c

index db02eb16c777fd273307b1d1eb26f9c2f78b5c66..473ed2cafbfcaa904f48a1148e2dcb0716a683ae 100644 (file)
@@ -2716,7 +2716,8 @@ static int cpu_clock_perf_counter_enable(struct perf_counter *counter)
 
 static void cpu_clock_perf_counter_disable(struct perf_counter *counter)
 {
-       hrtimer_cancel(&counter->hw.hrtimer);
+       if (counter->hw.irq_period)
+               hrtimer_cancel(&counter->hw.hrtimer);
        cpu_clock_perf_counter_update(counter);
 }
 
@@ -2767,7 +2768,8 @@ static int task_clock_perf_counter_enable(struct perf_counter *counter)
 
 static void task_clock_perf_counter_disable(struct perf_counter *counter)
 {
-       hrtimer_cancel(&counter->hw.hrtimer);
+       if (counter->hw.irq_period)
+               hrtimer_cancel(&counter->hw.hrtimer);
        task_clock_perf_counter_update(counter, counter->ctx->time);
 
 }