diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2011-03-21 13:32:17 +0100 |
|---|---|---|
| committer | Clark Williams <williams@redhat.com> | 2012-02-15 10:32:32 -0600 |
| commit | 31a092f0d40328fc2bfbb2d0b4e72a52d16cbf96 (patch) | |
| tree | 230d1be16d38b7dd1f5bfd83bd2c51e939ee3000 | |
| parent | 57c8ea9f160d1d44fb761c3a2301a812856832f0 (diff) | |
preempt-mark-legitimated-no-resched-sites.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
| -rw-r--r-- | arch/powerpc/kernel/idle.c | 2 | ||||
| -rw-r--r-- | arch/sparc/kernel/process_64.c | 2 | ||||
| -rw-r--r-- | include/linux/preempt.h | 5 | ||||
| -rw-r--r-- | kernel/sched.c | 6 | ||||
| -rw-r--r-- | kernel/softirq.c | 4 |
5 files changed, 11 insertions, 8 deletions
diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c index f46dae5a56ef..5d70d1046e11 100644 --- a/arch/powerpc/kernel/idle.c +++ b/arch/powerpc/kernel/idle.c @@ -95,7 +95,7 @@ void cpu_idle(void) ppc64_runlatch_on(); tick_nohz_restart_sched_tick(); if (cpu_should_die()) { - preempt_enable_no_resched(); + __preempt_enable_no_resched(); cpu_die(); } schedule_preempt_disabled(); diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index 8ba0dbe63bdc..86fe09afc89a 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c @@ -104,7 +104,7 @@ void cpu_idle(void) #ifdef CONFIG_HOTPLUG_CPU if (cpu_is_offline(cpu)) { - preempt_enable_no_resched(); + __preempt_enable_no_resched(); cpu_play_dead(); } #endif diff --git a/include/linux/preempt.h b/include/linux/preempt.h index 58969b2a8a82..227b0f584719 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -48,12 +48,14 @@ do { \ barrier(); \ } while (0) -#define preempt_enable_no_resched() \ +#define __preempt_enable_no_resched() \ do { \ barrier(); \ dec_preempt_count(); \ } while (0) +#define preempt_enable_no_resched() __preempt_enable_no_resched() + #define preempt_enable() \ do { \ preempt_enable_no_resched(); \ @@ -92,6 +94,7 @@ do { \ #else /* !CONFIG_PREEMPT_COUNT */ #define preempt_disable() do { } while (0) +#define __preempt_enable_no_resched() do { } while (0) #define preempt_enable_no_resched() do { } while (0) #define preempt_enable() do { } while (0) diff --git a/kernel/sched.c b/kernel/sched.c index 465fd119d3b2..e35f01c5146b 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -4415,7 +4415,7 @@ need_resched: post_schedule(rq); - preempt_enable_no_resched(); + __preempt_enable_no_resched(); if (need_resched()) goto need_resched; } @@ -4463,7 +4463,7 @@ EXPORT_SYMBOL(schedule); */ void __sched schedule_preempt_disabled(void) { - preempt_enable_no_resched(); + __preempt_enable_no_resched(); schedule(); preempt_disable(); } @@ -5705,7 +5705,7 @@ SYSCALL_DEFINE0(sched_yield) __release(rq->lock); spin_release(&rq->lock.dep_map, 1, _THIS_IP_); do_raw_spin_unlock(&rq->lock); - preempt_enable_no_resched(); + __preempt_enable_no_resched(); schedule(); diff --git a/kernel/softirq.c b/kernel/softirq.c index c9da2c84f99e..a8becbf41900 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -353,7 +353,7 @@ void irq_exit(void) if (idle_cpu(smp_processor_id()) && !in_interrupt() && !need_resched()) tick_nohz_stop_sched_tick(0); #endif - preempt_enable_no_resched(); + __preempt_enable_no_resched(); } /* @@ -759,7 +759,7 @@ static int run_ksoftirqd(void * __bind_cpu) if (local_softirq_pending()) __do_softirq(); local_irq_enable(); - preempt_enable_no_resched(); + __preempt_enable_no_resched(); cond_resched(); preempt_disable(); rcu_note_context_switch((long)__bind_cpu); |
