From 5ccd0e43bb916872022df974d0f39337797d9277 Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Wed, 5 Mar 2008 12:37:08 +0100 Subject: [S390] idle: Fix machine check handling in idle loop. If a machine check handling is pending when the idle loop is entered default_idle will be left with timer ticks and virtual timer disabled. Fix this by "calling" the idle_chain. Also a BUG_ON(!in_interrupt) in start_hz_timer must be removed since the function now gets called from non interrupt context as well. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky --- arch/s390/kernel/process.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'arch/s390/kernel/process.c') diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index 1c59ec161cf..ce203154d8c 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c @@ -152,6 +152,10 @@ static void default_idle(void) local_mcck_disable(); if (test_thread_flag(TIF_MCCK_PENDING)) { local_mcck_enable(); + /* disable monitor call class 0 */ + __ctl_clear_bit(8, 15); + atomic_notifier_call_chain(&idle_chain, S390_CPU_NOT_IDLE, + hcpu); local_irq_enable(); s390_handle_mcck(); return; -- cgit v1.2.3