diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2009-11-17 11:59:15 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2009-12-14 17:55:33 -0500 |
commit | fe841226bd954fba4fd79f037a876053fe9c3217 (patch) | |
tree | 0819ff8a78b9eeed61a1dc26b5aa900f48d0c2e3 | |
parent | 0986b11b12ad2baed338385f79fd0dec58a23fc6 (diff) |
sched: Convert cpupri lock to raw_spinlock
Convert locks which cannot be sleeping locks in preempt-rt to
raw_spinlocks.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Acked-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | kernel/sched_cpupri.c | 10 | ||||
-rw-r--r-- | kernel/sched_cpupri.h | 2 |
2 files changed, 6 insertions, 6 deletions
diff --git a/kernel/sched_cpupri.c b/kernel/sched_cpupri.c index 0f052fc674d5..597b33099dfa 100644 --- a/kernel/sched_cpupri.c +++ b/kernel/sched_cpupri.c | |||
@@ -135,26 +135,26 @@ void cpupri_set(struct cpupri *cp, int cpu, int newpri) | |||
135 | if (likely(newpri != CPUPRI_INVALID)) { | 135 | if (likely(newpri != CPUPRI_INVALID)) { |
136 | struct cpupri_vec *vec = &cp->pri_to_cpu[newpri]; | 136 | struct cpupri_vec *vec = &cp->pri_to_cpu[newpri]; |
137 | 137 | ||
138 | spin_lock_irqsave(&vec->lock, flags); | 138 | raw_spin_lock_irqsave(&vec->lock, flags); |
139 | 139 | ||
140 | cpumask_set_cpu(cpu, vec->mask); | 140 | cpumask_set_cpu(cpu, vec->mask); |
141 | vec->count++; | 141 | vec->count++; |
142 | if (vec->count == 1) | 142 | if (vec->count == 1) |
143 | set_bit(newpri, cp->pri_active); | 143 | set_bit(newpri, cp->pri_active); |
144 | 144 | ||
145 | spin_unlock_irqrestore(&vec->lock, flags); | 145 | raw_spin_unlock_irqrestore(&vec->lock, flags); |
146 | } | 146 | } |
147 | if (likely(oldpri != CPUPRI_INVALID)) { | 147 | if (likely(oldpri != CPUPRI_INVALID)) { |
148 | struct cpupri_vec *vec = &cp->pri_to_cpu[oldpri]; | 148 | struct cpupri_vec *vec = &cp->pri_to_cpu[oldpri]; |
149 | 149 | ||
150 | spin_lock_irqsave(&vec->lock, flags); | 150 | raw_spin_lock_irqsave(&vec->lock, flags); |
151 | 151 | ||
152 | vec->count--; | 152 | vec->count--; |
153 | if (!vec->count) | 153 | if (!vec->count) |
154 | clear_bit(oldpri, cp->pri_active); | 154 | clear_bit(oldpri, cp->pri_active); |
155 | cpumask_clear_cpu(cpu, vec->mask); | 155 | cpumask_clear_cpu(cpu, vec->mask); |
156 | 156 | ||
157 | spin_unlock_irqrestore(&vec->lock, flags); | 157 | raw_spin_unlock_irqrestore(&vec->lock, flags); |
158 | } | 158 | } |
159 | 159 | ||
160 | *currpri = newpri; | 160 | *currpri = newpri; |
@@ -180,7 +180,7 @@ int cpupri_init(struct cpupri *cp, bool bootmem) | |||
180 | for (i = 0; i < CPUPRI_NR_PRIORITIES; i++) { | 180 | for (i = 0; i < CPUPRI_NR_PRIORITIES; i++) { |
181 | struct cpupri_vec *vec = &cp->pri_to_cpu[i]; | 181 | struct cpupri_vec *vec = &cp->pri_to_cpu[i]; |
182 | 182 | ||
183 | spin_lock_init(&vec->lock); | 183 | raw_spin_lock_init(&vec->lock); |
184 | vec->count = 0; | 184 | vec->count = 0; |
185 | if (!zalloc_cpumask_var(&vec->mask, gfp)) | 185 | if (!zalloc_cpumask_var(&vec->mask, gfp)) |
186 | goto cleanup; | 186 | goto cleanup; |
diff --git a/kernel/sched_cpupri.h b/kernel/sched_cpupri.h index 9a7e859b8fbf..7cb5bb6b95be 100644 --- a/kernel/sched_cpupri.h +++ b/kernel/sched_cpupri.h | |||
@@ -12,7 +12,7 @@ | |||
12 | /* values 2-101 are RT priorities 0-99 */ | 12 | /* values 2-101 are RT priorities 0-99 */ |
13 | 13 | ||
14 | struct cpupri_vec { | 14 | struct cpupri_vec { |
15 | spinlock_t lock; | 15 | raw_spinlock_t lock; |
16 | int count; | 16 | int count; |
17 | cpumask_var_t mask; | 17 | cpumask_var_t mask; |
18 | }; | 18 | }; |