| From 155e4c47bf163f60d3f0eaf34a465d9b3d7552aa Mon Sep 17 00:00:00 2001 |
| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Thu, 17 Sep 2009 17:31:09 +0200 |
| Subject: [PATCH] latencytop: Convert latency_lock to raw_spinlock |
| |
| commit 0dfea57f1f486188303e598f96f0f92995bf9276 in tip. |
| |
| latency_lock is taken in the guts of the scheduler code and needs to |
| be a real spinlock on RT. convert it to raw_spinlock. |
| |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| |
| diff --git a/kernel/latencytop.c b/kernel/latencytop.c |
| index 877fb30..3f89349 100644 |
| --- a/kernel/latencytop.c |
| +++ b/kernel/latencytop.c |
| @@ -58,7 +58,7 @@ |
| #include <linux/list.h> |
| #include <linux/stacktrace.h> |
| |
| -static DEFINE_SPINLOCK(latency_lock); |
| +static DEFINE_RAW_SPINLOCK(latency_lock); |
| |
| #define MAXLR 128 |
| static struct latency_record latency_record[MAXLR]; |
| @@ -72,19 +72,19 @@ void clear_all_latency_tracing(struct task_struct *p) |
| if (!latencytop_enabled) |
| return; |
| |
| - spin_lock_irqsave(&latency_lock, flags); |
| + raw_spin_lock_irqsave(&latency_lock, flags); |
| memset(&p->latency_record, 0, sizeof(p->latency_record)); |
| p->latency_record_count = 0; |
| - spin_unlock_irqrestore(&latency_lock, flags); |
| + raw_spin_unlock_irqrestore(&latency_lock, flags); |
| } |
| |
| static void clear_global_latency_tracing(void) |
| { |
| unsigned long flags; |
| |
| - spin_lock_irqsave(&latency_lock, flags); |
| + raw_spin_lock_irqsave(&latency_lock, flags); |
| memset(&latency_record, 0, sizeof(latency_record)); |
| - spin_unlock_irqrestore(&latency_lock, flags); |
| + raw_spin_unlock_irqrestore(&latency_lock, flags); |
| } |
| |
| static void __sched |
| @@ -190,7 +190,7 @@ __account_scheduler_latency(struct task_struct *tsk, int usecs, int inter) |
| lat.max = usecs; |
| store_stacktrace(tsk, &lat); |
| |
| - spin_lock_irqsave(&latency_lock, flags); |
| + raw_spin_lock_irqsave(&latency_lock, flags); |
| |
| account_global_scheduler_latency(tsk, &lat); |
| |
| @@ -232,7 +232,7 @@ __account_scheduler_latency(struct task_struct *tsk, int usecs, int inter) |
| memcpy(&tsk->latency_record[i], &lat, sizeof(struct latency_record)); |
| |
| out_unlock: |
| - spin_unlock_irqrestore(&latency_lock, flags); |
| + raw_spin_unlock_irqrestore(&latency_lock, flags); |
| } |
| |
| static int lstats_show(struct seq_file *m, void *v) |
| -- |
| 1.7.1.1 |
| |