|
@@ -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);
|