From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: Re: [Patch] don't spin with irq disabled Date: Thu, 26 Mar 2009 13:36:05 +0100 Message-ID: <49CB76B5.3040902@fujitsu-siemens.com> References: <49CB441E.9030006@fujitsu-siemens.com> <49CB81C2.76E4.0078.0@novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <49CB81C2.76E4.0078.0@novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Jan Beulich Cc: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org Jan Beulich wrote: >>>> Juergen Gross 26.03.09 10:00 >>> >> Attached patch reduces interrupt latency in lock handling. >> spin_lock_irq and spin_lock_irqsave used to turn off IRQs and then tried to >> get the lock. If the lock was already held, waiting for the lock was done with >> IRQs still off. >> The patch reenables IRQs during the wait loop. > > This is wrong - you must not enable interrupts if they weren't enabled upon > entry to these two functions. spin_lock_irq disables always IRQs. spin_unlock_irq enables always IRQs. They are always used in pairs, so IRQs should always be enabled on entry of spin_lock_irq. I'm not enabling IRQs unconditionally in spin_lock_irqsave, of course, but use the flags value saved before... Did I miss something? Or did you refer only to my inexact comment above? Juergen -- Juergen Gross Principal Developer IP SW OS6 Telephone: +49 (0) 89 636 47950 Fujitsu Siemens Computers e-mail: juergen.gross@fujitsu-siemens.com Otto-Hahn-Ring 6 Internet: www.fujitsu-siemens.com D-81739 Muenchen Company details: www.fujitsu-siemens.com/imprint.html