aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kernel/process.c')
-rw-r--r--arch/s390/kernel/process.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index 3201ae44799..4261aa79977 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -76,7 +76,6 @@ static void default_idle(void)
76 if (test_thread_flag(TIF_MCCK_PENDING)) { 76 if (test_thread_flag(TIF_MCCK_PENDING)) {
77 local_mcck_enable(); 77 local_mcck_enable();
78 local_irq_enable(); 78 local_irq_enable();
79 s390_handle_mcck();
80 return; 79 return;
81 } 80 }
82 trace_hardirqs_on(); 81 trace_hardirqs_on();
@@ -93,10 +92,12 @@ void cpu_idle(void)
93 for (;;) { 92 for (;;) {
94 tick_nohz_idle_enter(); 93 tick_nohz_idle_enter();
95 rcu_idle_enter(); 94 rcu_idle_enter();
96 while (!need_resched()) 95 while (!need_resched() && !test_thread_flag(TIF_MCCK_PENDING))
97 default_idle(); 96 default_idle();
98 rcu_idle_exit(); 97 rcu_idle_exit();
99 tick_nohz_idle_exit(); 98 tick_nohz_idle_exit();
99 if (test_thread_flag(TIF_MCCK_PENDING))
100 s390_handle_mcck();
100 preempt_enable_no_resched(); 101 preempt_enable_no_resched();
101 schedule(); 102 schedule();
102 preempt_disable(); 103 preempt_disable();