Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932957AbYCEL5z (ORCPT ); Wed, 5 Mar 2008 06:57:55 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1763315AbYCEL5V (ORCPT ); Wed, 5 Mar 2008 06:57:21 -0500 Received: from mtagate3.de.ibm.com ([195.212.29.152]:25944 "EHLO mtagate3.de.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754016AbYCEL5T (ORCPT ); Wed, 5 Mar 2008 06:57:19 -0500 Message-Id: <20080305115713.374958723@de.ibm.com> References: <20080305115432.691030908@de.ibm.com> User-Agent: quilt/0.46-1 Date: Wed, 05 Mar 2008 12:54:34 +0100 From: Martin Schwidefsky To: linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org Cc: Heiko Carstens , Martin Schwidefsky Subject: [patch 02/10] idle: Fix machine check handling in idle loop. Content-Disposition: inline; filename=002-idle-mcck.diff Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1886 Lines: 56 From: Heiko Carstens 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 ++++ arch/s390/kernel/time.c | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) Index: quilt-2.6/arch/s390/kernel/process.c =================================================================== --- quilt-2.6.orig/arch/s390/kernel/process.c +++ quilt-2.6/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; Index: quilt-2.6/arch/s390/kernel/time.c =================================================================== --- quilt-2.6.orig/arch/s390/kernel/time.c +++ quilt-2.6/arch/s390/kernel/time.c @@ -209,8 +209,6 @@ static void stop_hz_timer(void) */ static void start_hz_timer(void) { - BUG_ON(!in_interrupt()); - if (!cpu_isset(smp_processor_id(), nohz_cpu_mask)) return; account_ticks(get_clock()); -- blue skies, Martin. "Reality continues to ruin my life." - Calvin. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/