diff options
Diffstat (limited to 'arch/s390/kernel/process.c')
| -rw-r--r-- | arch/s390/kernel/process.c | 32 | 
1 files changed, 9 insertions, 23 deletions
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index 536d64579d9..2bc3eddae34 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c @@ -61,18 +61,8 @@ unsigned long thread_saved_pc(struct task_struct *tsk)  	return sf->gprs[8];  } -/* - * The idle loop on a S390... - */ -static void default_idle(void) +void arch_cpu_idle(void)  { -	if (cpu_is_offline(smp_processor_id())) -		cpu_die(); -	local_irq_disable(); -	if (need_resched()) { -		local_irq_enable(); -		return; -	}  	local_mcck_disable();  	if (test_thread_flag(TIF_MCCK_PENDING)) {  		local_mcck_enable(); @@ -83,19 +73,15 @@ static void default_idle(void)  	vtime_stop_cpu();  } -void cpu_idle(void) +void arch_cpu_idle_exit(void)  { -	for (;;) { -		tick_nohz_idle_enter(); -		rcu_idle_enter(); -		while (!need_resched() && !test_thread_flag(TIF_MCCK_PENDING)) -			default_idle(); -		rcu_idle_exit(); -		tick_nohz_idle_exit(); -		if (test_thread_flag(TIF_MCCK_PENDING)) -			s390_handle_mcck(); -		schedule_preempt_disabled(); -	} +	if (test_thread_flag(TIF_MCCK_PENDING)) +		s390_handle_mcck(); +} + +void arch_cpu_idle_dead(void) +{ +	cpu_die();  }  extern void __kprobes kernel_thread_starter(void);  |