]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
perf_counter, x86: protect per-cpu variables with compile barriers only
authorRobert Richter <robert.richter@amd.com>
Wed, 29 Apr 2009 10:47:02 +0000 (12:47 +0200)
committerIngo Molnar <mingo@elte.hu>
Wed, 29 Apr 2009 12:51:02 +0000 (14:51 +0200)
Per-cpu variables needn't to be protected with cpu barriers
(smp_wmb()). Protection is only needed for preemption on the same cpu
(rescheduling or the nmi handler). This can be done using a compiler
barrier only.

[ Impact: micro-optimization ]

Signed-off-by: Robert Richter <robert.richter@amd.com>
Cc: Paul Mackerras <paulus@samba.org>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <1241002046-8832-6-git-send-email-robert.richter@amd.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/cpu/perf_counter.c

index 75a090394b6d268fa1f2cf63c76c9098614efd1b..ad663d5ad2d9117e0ea27aa7eacd361f013bd797 100644 (file)
@@ -673,7 +673,7 @@ try_generic:
        /*
         * Make it visible before enabling the hw:
         */
-       smp_wmb();
+       barrier();
 
        __hw_perf_counter_set_period(counter, hwc, idx);
        __pmc_generic_enable(counter, hwc, idx);
@@ -745,7 +745,7 @@ static void pmc_generic_disable(struct perf_counter *counter)
         * Make sure the cleared pointer becomes visible before we
         * (potentially) free the counter:
         */
-       smp_wmb();
+       barrier();
 
        /*
         * Drain the remaining delta count out of a counter