diff options
28 files changed, 36 insertions, 95 deletions
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 971d65c253a..c2ae3cd331f 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -239,9 +239,7 @@ void cpu_idle(void)  		leds_event(led_idle_end);  		rcu_idle_exit();  		tick_nohz_idle_exit(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/avr32/kernel/process.c b/arch/avr32/kernel/process.c index ea339575032..92c5af98a6f 100644 --- a/arch/avr32/kernel/process.c +++ b/arch/avr32/kernel/process.c @@ -40,9 +40,7 @@ void cpu_idle(void)  			cpu_idle_sleep();  		rcu_idle_exit();  		tick_nohz_idle_exit(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c index 8dd0416673c..a80a643f369 100644 --- a/arch/blackfin/kernel/process.c +++ b/arch/blackfin/kernel/process.c @@ -94,9 +94,7 @@ void cpu_idle(void)  			idle();  		rcu_idle_exit();  		tick_nohz_idle_exit(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/cris/kernel/process.c b/arch/cris/kernel/process.c index aa585e4e979..d8f50ff6fad 100644 --- a/arch/cris/kernel/process.c +++ b/arch/cris/kernel/process.c @@ -115,9 +115,7 @@ void cpu_idle (void)  				idle = default_idle;  			idle();  		} -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/frv/kernel/process.c b/arch/frv/kernel/process.c index 3901df1213c..29cc4978378 100644 --- a/arch/frv/kernel/process.c +++ b/arch/frv/kernel/process.c @@ -92,9 +92,7 @@ void cpu_idle(void)  				idle();  		} -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/h8300/kernel/process.c b/arch/h8300/kernel/process.c index 933bd388efb..1a173b35f47 100644 --- a/arch/h8300/kernel/process.c +++ b/arch/h8300/kernel/process.c @@ -81,9 +81,7 @@ void cpu_idle(void)  	while (1) {  		while (!need_resched())  			idle(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index 6d33c5cc94f..9dc52b63fc8 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c @@ -330,9 +330,7 @@ cpu_idle (void)  			normal_xtp();  #endif  		} -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  		check_pgt_cache();  		if (cpu_is_offline(cpu))  			play_dead(); diff --git a/arch/m32r/kernel/process.c b/arch/m32r/kernel/process.c index 422bea9f1db..3a4a32b2720 100644 --- a/arch/m32r/kernel/process.c +++ b/arch/m32r/kernel/process.c @@ -90,9 +90,7 @@ void cpu_idle (void)  			idle();  		} -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/m68k/kernel/process_mm.c b/arch/m68k/kernel/process_mm.c index 099283ee1a8..fe4186b5fc3 100644 --- a/arch/m68k/kernel/process_mm.c +++ b/arch/m68k/kernel/process_mm.c @@ -78,9 +78,7 @@ void cpu_idle(void)  	while (1) {  		while (!need_resched())  			idle(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/m68k/kernel/process_no.c b/arch/m68k/kernel/process_no.c index 5e1078cabe0..f7fe6c34859 100644 --- a/arch/m68k/kernel/process_no.c +++ b/arch/m68k/kernel/process_no.c @@ -73,9 +73,7 @@ void cpu_idle(void)  	/* endless idle loop with no priority at all */  	while (1) {  		idle(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/microblaze/kernel/process.c b/arch/microblaze/kernel/process.c index 7dcb5bfffb7..9155f7d9266 100644 --- a/arch/microblaze/kernel/process.c +++ b/arch/microblaze/kernel/process.c @@ -110,9 +110,7 @@ void cpu_idle(void)  		rcu_idle_exit();  		tick_nohz_idle_exit(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  		check_pgt_cache();  	}  } diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c index 7955409051c..61f1cb45a1d 100644 --- a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c @@ -80,9 +80,7 @@ void __noreturn cpu_idle(void)  #endif  		rcu_idle_exit();  		tick_nohz_idle_exit(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c index 28eec310253..cac401d37f7 100644 --- a/arch/mn10300/kernel/process.c +++ b/arch/mn10300/kernel/process.c @@ -123,9 +123,7 @@ void cpu_idle(void)  			idle();  		} -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index 62c60b87d03..d4b94b395c1 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c @@ -71,9 +71,7 @@ void cpu_idle(void)  	while (1) {  		while (!need_resched())  			barrier(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  		check_pgt_cache();  	}  } diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c index 0a48bf5db6c..65035141552 100644 --- a/arch/powerpc/kernel/idle.c +++ b/arch/powerpc/kernel/idle.c @@ -101,11 +101,11 @@ void cpu_idle(void)  		ppc64_runlatch_on();  		rcu_idle_exit();  		tick_nohz_idle_exit(); -		preempt_enable_no_resched(); -		if (cpu_should_die()) +		if (cpu_should_die()) { +			preempt_enable_no_resched();  			cpu_die(); -		schedule(); -		preempt_disable(); +		} +		schedule_preempt_disabled();  	}  } diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c index 8fc62586a97..a5fbf4cb632 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)  		if (hvlpevent_is_pending())  			process_iSeries_events(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } @@ -615,9 +613,7 @@ static void iseries_dedicated_idle(void)  		ppc64_runlatch_on();  		rcu_idle_exit();  		tick_nohz_idle_exit(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index e795933eb2c..7618085b416 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c @@ -97,9 +97,7 @@ void cpu_idle(void)  		tick_nohz_idle_exit();  		if (test_thread_flag(TIF_MCCK_PENDING))  			s390_handle_mcck(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/score/kernel/process.c b/arch/score/kernel/process.c index 25d08030a88..2707023c756 100644 --- a/arch/score/kernel/process.c +++ b/arch/score/kernel/process.c @@ -53,9 +53,7 @@ void __noreturn cpu_idle(void)  		while (!need_resched())  			barrier(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/sh/kernel/idle.c b/arch/sh/kernel/idle.c index 406508d4ce7..7e489282656 100644 --- a/arch/sh/kernel/idle.c +++ b/arch/sh/kernel/idle.c @@ -114,9 +114,7 @@ void cpu_idle(void)  		rcu_idle_exit();  		tick_nohz_idle_exit(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c index f793742eec2..935fdbcd88c 100644 --- a/arch/sparc/kernel/process_32.c +++ b/arch/sparc/kernel/process_32.c @@ -113,9 +113,7 @@ void cpu_idle(void)  			while (!need_resched())  				cpu_relax();  		} -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  		check_pgt_cache();  	}  } @@ -138,9 +136,7 @@ void cpu_idle(void)  			while (!need_resched())  				cpu_relax();  		} -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  		check_pgt_cache();  	}  } diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index 39d8b05201a..ab9a2926821 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c @@ -104,15 +104,13 @@ void cpu_idle(void)  		rcu_idle_exit();  		tick_nohz_idle_exit(); -		preempt_enable_no_resched(); -  #ifdef CONFIG_HOTPLUG_CPU -		if (cpu_is_offline(cpu)) +		if (cpu_is_offline(cpu)) { +			preempt_enable_no_resched();  			cpu_play_dead(); +		}  #endif - -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c index 4c1ac6e5347..6ae495ef2b9 100644 --- a/arch/tile/kernel/process.c +++ b/arch/tile/kernel/process.c @@ -108,9 +108,7 @@ void cpu_idle(void)  		}  		rcu_idle_exit();  		tick_nohz_idle_exit(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index c08d1ff12b7..49888fefe79 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c @@ -119,9 +119,7 @@ void cpu_idle(void)  		}  		rcu_idle_exit();  		tick_nohz_idle_exit(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index cfa5c90c01d..e34257c70c2 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c @@ -156,9 +156,7 @@ void cpu_idle(void)  		}  		tick_nohz_idle_exit(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c index 47041e7c088..2c9004770c4 100644 --- a/arch/xtensa/kernel/process.c +++ b/arch/xtensa/kernel/process.c @@ -113,9 +113,7 @@ void cpu_idle(void)  	while (1) {  		while (!need_resched())  			platform_idle(); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  	}  } diff --git a/init/main.c b/init/main.c index ff49a6dacfb..4990f7ec776 100644 --- a/init/main.c +++ b/init/main.c @@ -374,11 +374,8 @@ static noinline void __init_refok rest_init(void)  	 * at least once to get things moving:  	 */  	init_idle_bootup_task(current); -	preempt_enable_no_resched(); -	schedule(); - +	schedule_preempt_disabled();  	/* Call into cpu_idle with preempt disabled */ -	preempt_disable();  	cpu_idle();  } diff --git a/kernel/mutex.c b/kernel/mutex.c index 89096dd8786..a307cc9c952 100644 --- a/kernel/mutex.c +++ b/kernel/mutex.c @@ -240,9 +240,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,  		/* didn't get the lock, go to sleep: */  		spin_unlock_mutex(&lock->wait_lock, flags); -		preempt_enable_no_resched(); -		schedule(); -		preempt_disable(); +		schedule_preempt_disabled();  		spin_lock_mutex(&lock->wait_lock, flags);  	} diff --git a/kernel/softirq.c b/kernel/softirq.c index 4eb3a0fa351..79b524767a2 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -744,9 +744,7 @@ static int run_ksoftirqd(void * __bind_cpu)  	while (!kthread_should_stop()) {  		preempt_disable();  		if (!local_softirq_pending()) { -			preempt_enable_no_resched(); -			schedule(); -			preempt_disable(); +			schedule_preempt_disabled();  		}  		__set_current_state(TASK_RUNNING);  |