From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964976AbWFNOXg (ORCPT ); Wed, 14 Jun 2006 10:23:36 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S964977AbWFNOXg (ORCPT ); Wed, 14 Jun 2006 10:23:36 -0400 Received: from mtagate6.uk.ibm.com ([195.212.29.139]:30808 "EHLO mtagate6.uk.ibm.com") by vger.kernel.org with ESMTP id S964976AbWFNOXf (ORCPT ); Wed, 14 Jun 2006 10:23:35 -0400 Date: Wed, 14 Jun 2006 16:23:18 +0200 From: Heiko Carstens To: Ingo Molnar , Arjan van de Ven , Andrew Morton Cc: linux-kernel@vger.kernel.org, Martin Schwidefsky Subject: [patch 7/8] lock validator: s390 use raw_spinlock in mcck handler Message-ID: <20060614142318.GH1241@osiris.boeblingen.de.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: mutt-ng/devel-r802 (Linux) Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org From: Heiko Carstens Machine checks on s390 are always enabled (except in the machine check handler itself). Therefore use a raw_spinlock in the machine check handler to avoid deadlocks in the lock validator. Signed-off-by: Heiko Carstens --- drivers/s390/s390mach.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff -purN a/drivers/s390/s390mach.c b/drivers/s390/s390mach.c --- a/drivers/s390/s390mach.c 2006-06-14 13:44:52.000000000 +0200 +++ b/drivers/s390/s390mach.c 2006-06-14 13:45:01.000000000 +0200 @@ -372,7 +372,7 @@ s390_revalidate_registers(struct mci *mc void s390_do_machine_check(struct pt_regs *regs) { - static DEFINE_SPINLOCK(ipd_lock); + static raw_spinlock_t ipd_lock = (raw_spinlock_t)__RAW_SPIN_LOCK_UNLOCKED; static unsigned long long last_ipd; static int ipd_count; unsigned long long tmp; @@ -418,7 +418,7 @@ s390_do_machine_check(struct pt_regs *re * retry this instruction. */ - spin_lock(&ipd_lock); + __raw_spin_lock(&ipd_lock); tmp = get_clock(); @@ -432,7 +432,7 @@ s390_do_machine_check(struct pt_regs *re if (ipd_count == MAX_IPD_COUNT) s390_handle_damage("too many ipd retries."); - spin_unlock(&ipd_lock); + __raw_spin_unlock(&ipd_lock); } else { /* Processing damage -> stopping machine */