aboutsummaryrefslogtreecommitdiff
path: root/arch/mips
diff options
context:
space:
mode:
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>2011-03-16 19:05:32 -0400
committerMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>2011-03-16 19:05:32 -0400
commit3226b710a3f0d293990ed56b3c50deae8f7a22c6 (patch)
tree382ce7bb440da0cb0fae5c0fb690fc605638b574 /arch/mips
parent96555bc20c81d009277e72a0c1b7edd36fe78bba (diff)
mips-trace-clock-fix-order
mips trace clock fix order Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Diffstat (limited to 'arch/mips')
-rw-r--r--arch/mips/kernel/trace-clock.c31
1 files changed, 15 insertions, 16 deletions
diff --git a/arch/mips/kernel/trace-clock.c b/arch/mips/kernel/trace-clock.c
index 3ab0cc98732..cff5e231e92 100644
--- a/arch/mips/kernel/trace-clock.c
+++ b/arch/mips/kernel/trace-clock.c
@@ -138,15 +138,15 @@ void get_trace_clock(void)
{
int cpu;
- get_synthetic_tsc();
spin_lock(&async_tsc_lock);
- if (async_tsc_refcount++ || tsc_is_sync())
- goto end;
-
- async_tsc_enabled = 1;
- for_each_online_cpu(cpu)
- enable_trace_clock(cpu);
-end:
+ if (async_tsc_refcount++ || tsc_is_sync()) {
+ get_synthetic_tsc();
+ } else {
+ async_tsc_enabled = 1;
+ get_synthetic_tsc();
+ for_each_online_cpu(cpu)
+ enable_trace_clock(cpu);
+ }
spin_unlock(&async_tsc_lock);
}
EXPORT_SYMBOL_GPL(get_trace_clock);
@@ -157,15 +157,14 @@ void put_trace_clock(void)
spin_lock(&async_tsc_lock);
WARN_ON(async_tsc_refcount <= 0);
- if (async_tsc_refcount != 1 || !async_tsc_enabled)
- goto end;
-
- for_each_online_cpu(cpu)
- disable_trace_clock(cpu);
- async_tsc_enabled = 0;
-end:
+ if (async_tsc_refcount != 1 || !async_tsc_enabled) {
+ put_synthetic_tsc();
+ } else {
+ for_each_online_cpu(cpu)
+ disable_trace_clock(cpu);
+ async_tsc_enabled = 0;
+ }
async_tsc_refcount--;
spin_unlock(&async_tsc_lock);
- put_synthetic_tsc();
}
EXPORT_SYMBOL_GPL(put_trace_clock);