diff options
28 files changed, 36 insertions, 95 deletions
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 971d65c253a9..c2ae3cd331fe 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -239,9 +239,7 @@ void cpu_idle(void) | |||
239 | leds_event(led_idle_end); | 239 | leds_event(led_idle_end); |
240 | rcu_idle_exit(); | 240 | rcu_idle_exit(); |
241 | tick_nohz_idle_exit(); | 241 | tick_nohz_idle_exit(); |
242 | preempt_enable_no_resched(); | 242 | schedule_preempt_disabled(); |
243 | schedule(); | ||
244 | preempt_disable(); | ||
245 | } | 243 | } |
246 | } | 244 | } |
247 | 245 | ||
diff --git a/arch/avr32/kernel/process.c b/arch/avr32/kernel/process.c index ea3395750324..92c5af98a6f7 100644 --- a/arch/avr32/kernel/process.c +++ b/arch/avr32/kernel/process.c | |||
@@ -40,9 +40,7 @@ void cpu_idle(void) | |||
40 | cpu_idle_sleep(); | 40 | cpu_idle_sleep(); |
41 | rcu_idle_exit(); | 41 | rcu_idle_exit(); |
42 | tick_nohz_idle_exit(); | 42 | tick_nohz_idle_exit(); |
43 | preempt_enable_no_resched(); | 43 | schedule_preempt_disabled(); |
44 | schedule(); | ||
45 | preempt_disable(); | ||
46 | } | 44 | } |
47 | } | 45 | } |
48 | 46 | ||
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c index 8dd0416673cb..a80a643f3691 100644 --- a/arch/blackfin/kernel/process.c +++ b/arch/blackfin/kernel/process.c | |||
@@ -94,9 +94,7 @@ void cpu_idle(void) | |||
94 | idle(); | 94 | idle(); |
95 | rcu_idle_exit(); | 95 | rcu_idle_exit(); |
96 | tick_nohz_idle_exit(); | 96 | tick_nohz_idle_exit(); |
97 | preempt_enable_no_resched(); | 97 | schedule_preempt_disabled(); |
98 | schedule(); | ||
99 | preempt_disable(); | ||
100 | } | 98 | } |
101 | } | 99 | } |
102 | 100 | ||
diff --git a/arch/cris/kernel/process.c b/arch/cris/kernel/process.c index aa585e4e979e..d8f50ff6fadd 100644 --- a/arch/cris/kernel/process.c +++ b/arch/cris/kernel/process.c | |||
@@ -115,9 +115,7 @@ void cpu_idle (void) | |||
115 | idle = default_idle; | 115 | idle = default_idle; |
116 | idle(); | 116 | idle(); |
117 | } | 117 | } |
118 | preempt_enable_no_resched(); | 118 | schedule_preempt_disabled(); |
119 | schedule(); | ||
120 | preempt_disable(); | ||
121 | } | 119 | } |
122 | } | 120 | } |
123 | 121 | ||
diff --git a/arch/frv/kernel/process.c b/arch/frv/kernel/process.c index 3901df1213c0..29cc49783787 100644 --- a/arch/frv/kernel/process.c +++ b/arch/frv/kernel/process.c | |||
@@ -92,9 +92,7 @@ void cpu_idle(void) | |||
92 | idle(); | 92 | idle(); |
93 | } | 93 | } |
94 | 94 | ||
95 | preempt_enable_no_resched(); | 95 | schedule_preempt_disabled(); |
96 | schedule(); | ||
97 | preempt_disable(); | ||
98 | } | 96 | } |
99 | } | 97 | } |
100 | 98 | ||
diff --git a/arch/h8300/kernel/process.c b/arch/h8300/kernel/process.c index 933bd388efb2..1a173b35f475 100644 --- a/arch/h8300/kernel/process.c +++ b/arch/h8300/kernel/process.c | |||
@@ -81,9 +81,7 @@ void cpu_idle(void) | |||
81 | while (1) { | 81 | while (1) { |
82 | while (!need_resched()) | 82 | while (!need_resched()) |
83 | idle(); | 83 | idle(); |
84 | preempt_enable_no_resched(); | 84 | schedule_preempt_disabled(); |
85 | schedule(); | ||
86 | preempt_disable(); | ||
87 | } | 85 | } |
88 | } | 86 | } |
89 | 87 | ||
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index 6d33c5cc94f0..9dc52b63fc87 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c | |||
@@ -330,9 +330,7 @@ cpu_idle (void) | |||
330 | normal_xtp(); | 330 | normal_xtp(); |
331 | #endif | 331 | #endif |
332 | } | 332 | } |
333 | preempt_enable_no_resched(); | 333 | schedule_preempt_disabled(); |
334 | schedule(); | ||
335 | preempt_disable(); | ||
336 | check_pgt_cache(); | 334 | check_pgt_cache(); |
337 | if (cpu_is_offline(cpu)) | 335 | if (cpu_is_offline(cpu)) |
338 | play_dead(); | 336 | play_dead(); |
diff --git a/arch/m32r/kernel/process.c b/arch/m32r/kernel/process.c index 422bea9f1dbc..3a4a32b27208 100644 --- a/arch/m32r/kernel/process.c +++ b/arch/m32r/kernel/process.c | |||
@@ -90,9 +90,7 @@ void cpu_idle (void) | |||
90 | 90 | ||
91 | idle(); | 91 | idle(); |
92 | } | 92 | } |
93 | preempt_enable_no_resched(); | 93 | schedule_preempt_disabled(); |
94 | schedule(); | ||
95 | preempt_disable(); | ||
96 | } | 94 | } |
97 | } | 95 | } |
98 | 96 | ||
diff --git a/arch/m68k/kernel/process_mm.c b/arch/m68k/kernel/process_mm.c index 099283ee1a8f..fe4186b5fc32 100644 --- a/arch/m68k/kernel/process_mm.c +++ b/arch/m68k/kernel/process_mm.c | |||
@@ -78,9 +78,7 @@ void cpu_idle(void) | |||
78 | while (1) { | 78 | while (1) { |
79 | while (!need_resched()) | 79 | while (!need_resched()) |
80 | idle(); | 80 | idle(); |
81 | preempt_enable_no_resched(); | 81 | schedule_preempt_disabled(); |
82 | schedule(); | ||
83 | preempt_disable(); | ||
84 | } | 82 | } |
85 | } | 83 | } |
86 | 84 | ||
diff --git a/arch/m68k/kernel/process_no.c b/arch/m68k/kernel/process_no.c index 5e1078cabe0e..f7fe6c348595 100644 --- a/arch/m68k/kernel/process_no.c +++ b/arch/m68k/kernel/process_no.c | |||
@@ -73,9 +73,7 @@ void cpu_idle(void) | |||
73 | /* endless idle loop with no priority at all */ | 73 | /* endless idle loop with no priority at all */ |
74 | while (1) { | 74 | while (1) { |
75 | idle(); | 75 | idle(); |
76 | preempt_enable_no_resched(); | 76 | schedule_preempt_disabled(); |
77 | schedule(); | ||
78 | preempt_disable(); | ||
79 | } | 77 | } |
80 | } | 78 | } |
81 | 79 | ||
diff --git a/arch/microblaze/kernel/process.c b/arch/microblaze/kernel/process.c index 7dcb5bfffb75..9155f7d92669 100644 --- a/arch/microblaze/kernel/process.c +++ b/arch/microblaze/kernel/process.c | |||
@@ -110,9 +110,7 @@ void cpu_idle(void) | |||
110 | rcu_idle_exit(); | 110 | rcu_idle_exit(); |
111 | tick_nohz_idle_exit(); | 111 | tick_nohz_idle_exit(); |
112 | 112 | ||
113 | preempt_enable_no_resched(); | 113 | schedule_preempt_disabled(); |
114 | schedule(); | ||
115 | preempt_disable(); | ||
116 | check_pgt_cache(); | 114 | check_pgt_cache(); |
117 | } | 115 | } |
118 | } | 116 | } |
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c index 7955409051c4..61f1cb45a1d5 100644 --- a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c | |||
@@ -80,9 +80,7 @@ void __noreturn cpu_idle(void) | |||
80 | #endif | 80 | #endif |
81 | rcu_idle_exit(); | 81 | rcu_idle_exit(); |
82 | tick_nohz_idle_exit(); | 82 | tick_nohz_idle_exit(); |
83 | preempt_enable_no_resched(); | 83 | schedule_preempt_disabled(); |
84 | schedule(); | ||
85 | preempt_disable(); | ||
86 | } | 84 | } |
87 | } | 85 | } |
88 | 86 | ||
diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c index 28eec3102535..cac401d37f75 100644 --- a/arch/mn10300/kernel/process.c +++ b/arch/mn10300/kernel/process.c | |||
@@ -123,9 +123,7 @@ void cpu_idle(void) | |||
123 | idle(); | 123 | idle(); |
124 | } | 124 | } |
125 | 125 | ||
126 | preempt_enable_no_resched(); | 126 | schedule_preempt_disabled(); |
127 | schedule(); | ||
128 | preempt_disable(); | ||
129 | } | 127 | } |
130 | } | 128 | } |
131 | 129 | ||
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index 62c60b87d039..d4b94b395c16 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c | |||
@@ -71,9 +71,7 @@ void cpu_idle(void) | |||
71 | while (1) { | 71 | while (1) { |
72 | while (!need_resched()) | 72 | while (!need_resched()) |
73 | barrier(); | 73 | barrier(); |
74 | preempt_enable_no_resched(); | 74 | schedule_preempt_disabled(); |
75 | schedule(); | ||
76 | preempt_disable(); | ||
77 | check_pgt_cache(); | 75 | check_pgt_cache(); |
78 | } | 76 | } |
79 | } | 77 | } |
diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c index 0a48bf5db6c8..65035141552b 100644 --- a/arch/powerpc/kernel/idle.c +++ b/arch/powerpc/kernel/idle.c | |||
@@ -101,11 +101,11 @@ void cpu_idle(void) | |||
101 | ppc64_runlatch_on(); | 101 | ppc64_runlatch_on(); |
102 | rcu_idle_exit(); | 102 | rcu_idle_exit(); |
103 | tick_nohz_idle_exit(); | 103 | tick_nohz_idle_exit(); |
104 | preempt_enable_no_resched(); | 104 | if (cpu_should_die()) { |
105 | if (cpu_should_die()) | 105 | preempt_enable_no_resched(); |
106 | cpu_die(); | 106 | cpu_die(); |
107 | schedule(); | 107 | } |
108 | preempt_disable(); | 108 | schedule_preempt_disabled(); |
109 | } | 109 | } |
110 | } | 110 | } |
111 | 111 | ||
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c index 8fc62586a973..a5fbf4cb6329 100644 --- a/arch/powerpc/platforms/iseries/setup.c +++ b/arch/powerpc/platforms/iseries/setup.c | |||
@@ -584,9 +584,7 @@ static void iseries_shared_idle(void) | |||
584 | if (hvlpevent_is_pending()) | 584 | if (hvlpevent_is_pending()) |
585 | process_iSeries_events(); | 585 | process_iSeries_events(); |
586 | 586 | ||
587 | preempt_enable_no_resched(); | 587 | schedule_preempt_disabled(); |
588 | schedule(); | ||
589 | preempt_disable(); | ||
590 | } | 588 | } |
591 | } | 589 | } |
592 | 590 | ||
@@ -615,9 +613,7 @@ static void iseries_dedicated_idle(void) | |||
615 | ppc64_runlatch_on(); | 613 | ppc64_runlatch_on(); |
616 | rcu_idle_exit(); | 614 | rcu_idle_exit(); |
617 | tick_nohz_idle_exit(); | 615 | tick_nohz_idle_exit(); |
618 | preempt_enable_no_resched(); | 616 | schedule_preempt_disabled(); |
619 | schedule(); | ||
620 | preempt_disable(); | ||
621 | } | 617 | } |
622 | } | 618 | } |
623 | 619 | ||
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index e795933eb2cb..7618085b4164 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c | |||
@@ -97,9 +97,7 @@ void cpu_idle(void) | |||
97 | tick_nohz_idle_exit(); | 97 | tick_nohz_idle_exit(); |
98 | if (test_thread_flag(TIF_MCCK_PENDING)) | 98 | if (test_thread_flag(TIF_MCCK_PENDING)) |
99 | s390_handle_mcck(); | 99 | s390_handle_mcck(); |
100 | preempt_enable_no_resched(); | 100 | schedule_preempt_disabled(); |
101 | schedule(); | ||
102 | preempt_disable(); | ||
103 | } | 101 | } |
104 | } | 102 | } |
105 | 103 | ||
diff --git a/arch/score/kernel/process.c b/arch/score/kernel/process.c index 25d08030a883..2707023c7563 100644 --- a/arch/score/kernel/process.c +++ b/arch/score/kernel/process.c | |||
@@ -53,9 +53,7 @@ void __noreturn cpu_idle(void) | |||
53 | while (!need_resched()) | 53 | while (!need_resched()) |
54 | barrier(); | 54 | barrier(); |
55 | 55 | ||
56 | preempt_enable_no_resched(); | 56 | schedule_preempt_disabled(); |
57 | schedule(); | ||
58 | preempt_disable(); | ||
59 | } | 57 | } |
60 | } | 58 | } |
61 | 59 | ||
diff --git a/arch/sh/kernel/idle.c b/arch/sh/kernel/idle.c index 406508d4ce74..7e4892826563 100644 --- a/arch/sh/kernel/idle.c +++ b/arch/sh/kernel/idle.c | |||
@@ -114,9 +114,7 @@ void cpu_idle(void) | |||
114 | 114 | ||
115 | rcu_idle_exit(); | 115 | rcu_idle_exit(); |
116 | tick_nohz_idle_exit(); | 116 | tick_nohz_idle_exit(); |
117 | preempt_enable_no_resched(); | 117 | schedule_preempt_disabled(); |
118 | schedule(); | ||
119 | preempt_disable(); | ||
120 | } | 118 | } |
121 | } | 119 | } |
122 | 120 | ||
diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c index f793742eec2b..935fdbcd88c2 100644 --- a/arch/sparc/kernel/process_32.c +++ b/arch/sparc/kernel/process_32.c | |||
@@ -113,9 +113,7 @@ void cpu_idle(void) | |||
113 | while (!need_resched()) | 113 | while (!need_resched()) |
114 | cpu_relax(); | 114 | cpu_relax(); |
115 | } | 115 | } |
116 | preempt_enable_no_resched(); | 116 | schedule_preempt_disabled(); |
117 | schedule(); | ||
118 | preempt_disable(); | ||
119 | check_pgt_cache(); | 117 | check_pgt_cache(); |
120 | } | 118 | } |
121 | } | 119 | } |
@@ -138,9 +136,7 @@ void cpu_idle(void) | |||
138 | while (!need_resched()) | 136 | while (!need_resched()) |
139 | cpu_relax(); | 137 | cpu_relax(); |
140 | } | 138 | } |
141 | preempt_enable_no_resched(); | 139 | schedule_preempt_disabled(); |
142 | schedule(); | ||
143 | preempt_disable(); | ||
144 | check_pgt_cache(); | 140 | check_pgt_cache(); |
145 | } | 141 | } |
146 | } | 142 | } |
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index 39d8b05201a2..ab9a29268213 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c | |||
@@ -104,15 +104,13 @@ void cpu_idle(void) | |||
104 | rcu_idle_exit(); | 104 | rcu_idle_exit(); |
105 | tick_nohz_idle_exit(); | 105 | tick_nohz_idle_exit(); |
106 | 106 | ||
107 | preempt_enable_no_resched(); | ||
108 | |||
109 | #ifdef CONFIG_HOTPLUG_CPU | 107 | #ifdef CONFIG_HOTPLUG_CPU |
110 | if (cpu_is_offline(cpu)) | 108 | if (cpu_is_offline(cpu)) { |
109 | preempt_enable_no_resched(); | ||
111 | cpu_play_dead(); | 110 | cpu_play_dead(); |
111 | } | ||
112 | #endif | 112 | #endif |
113 | 113 | schedule_preempt_disabled(); | |
114 | schedule(); | ||
115 | preempt_disable(); | ||
116 | } | 114 | } |
117 | } | 115 | } |
118 | 116 | ||
diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c index 4c1ac6e5347a..6ae495ef2b99 100644 --- a/arch/tile/kernel/process.c +++ b/arch/tile/kernel/process.c | |||
@@ -108,9 +108,7 @@ void cpu_idle(void) | |||
108 | } | 108 | } |
109 | rcu_idle_exit(); | 109 | rcu_idle_exit(); |
110 | tick_nohz_idle_exit(); | 110 | tick_nohz_idle_exit(); |
111 | preempt_enable_no_resched(); | 111 | schedule_preempt_disabled(); |
112 | schedule(); | ||
113 | preempt_disable(); | ||
114 | } | 112 | } |
115 | } | 113 | } |
116 | 114 | ||
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index c08d1ff12b7c..49888fefe794 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c | |||
@@ -119,9 +119,7 @@ void cpu_idle(void) | |||
119 | } | 119 | } |
120 | rcu_idle_exit(); | 120 | rcu_idle_exit(); |
121 | tick_nohz_idle_exit(); | 121 | tick_nohz_idle_exit(); |
122 | preempt_enable_no_resched(); | 122 | schedule_preempt_disabled(); |
123 | schedule(); | ||
124 | preempt_disable(); | ||
125 | } | 123 | } |
126 | } | 124 | } |
127 | 125 | ||
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index cfa5c90c01db..e34257c70c28 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c | |||
@@ -156,9 +156,7 @@ void cpu_idle(void) | |||
156 | } | 156 | } |
157 | 157 | ||
158 | tick_nohz_idle_exit(); | 158 | tick_nohz_idle_exit(); |
159 | preempt_enable_no_resched(); | 159 | schedule_preempt_disabled(); |
160 | schedule(); | ||
161 | preempt_disable(); | ||
162 | } | 160 | } |
163 | } | 161 | } |
164 | 162 | ||
diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c index 47041e7c088c..2c9004770c4e 100644 --- a/arch/xtensa/kernel/process.c +++ b/arch/xtensa/kernel/process.c | |||
@@ -113,9 +113,7 @@ void cpu_idle(void) | |||
113 | while (1) { | 113 | while (1) { |
114 | while (!need_resched()) | 114 | while (!need_resched()) |
115 | platform_idle(); | 115 | platform_idle(); |
116 | preempt_enable_no_resched(); | 116 | schedule_preempt_disabled(); |
117 | schedule(); | ||
118 | preempt_disable(); | ||
119 | } | 117 | } |
120 | } | 118 | } |
121 | 119 | ||
diff --git a/init/main.c b/init/main.c index ff49a6dacfbb..4990f7ec776a 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -374,11 +374,8 @@ static noinline void __init_refok rest_init(void) | |||
374 | * at least once to get things moving: | 374 | * at least once to get things moving: |
375 | */ | 375 | */ |
376 | init_idle_bootup_task(current); | 376 | init_idle_bootup_task(current); |
377 | preempt_enable_no_resched(); | 377 | schedule_preempt_disabled(); |
378 | schedule(); | ||
379 | |||
380 | /* Call into cpu_idle with preempt disabled */ | 378 | /* Call into cpu_idle with preempt disabled */ |
381 | preempt_disable(); | ||
382 | cpu_idle(); | 379 | cpu_idle(); |
383 | } | 380 | } |
384 | 381 | ||
diff --git a/kernel/mutex.c b/kernel/mutex.c index 89096dd8786f..a307cc9c9526 100644 --- a/kernel/mutex.c +++ b/kernel/mutex.c | |||
@@ -240,9 +240,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass, | |||
240 | 240 | ||
241 | /* didn't get the lock, go to sleep: */ | 241 | /* didn't get the lock, go to sleep: */ |
242 | spin_unlock_mutex(&lock->wait_lock, flags); | 242 | spin_unlock_mutex(&lock->wait_lock, flags); |
243 | preempt_enable_no_resched(); | 243 | schedule_preempt_disabled(); |
244 | schedule(); | ||
245 | preempt_disable(); | ||
246 | spin_lock_mutex(&lock->wait_lock, flags); | 244 | spin_lock_mutex(&lock->wait_lock, flags); |
247 | } | 245 | } |
248 | 246 | ||
diff --git a/kernel/softirq.c b/kernel/softirq.c index 4eb3a0fa351e..79b524767a24 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
@@ -744,9 +744,7 @@ static int run_ksoftirqd(void * __bind_cpu) | |||
744 | while (!kthread_should_stop()) { | 744 | while (!kthread_should_stop()) { |
745 | preempt_disable(); | 745 | preempt_disable(); |
746 | if (!local_softirq_pending()) { | 746 | if (!local_softirq_pending()) { |
747 | preempt_enable_no_resched(); | 747 | schedule_preempt_disabled(); |
748 | schedule(); | ||
749 | preempt_disable(); | ||
750 | } | 748 | } |
751 | 749 | ||
752 | __set_current_state(TASK_RUNNING); | 750 | __set_current_state(TASK_RUNNING); |