From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756293Ab1IBVu6 (ORCPT ); Fri, 2 Sep 2011 17:50:58 -0400 Received: from claw.goop.org ([74.207.240.146]:45372 "EHLO claw.goop.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756229Ab1IBVu5 (ORCPT ); Fri, 2 Sep 2011 17:50:57 -0400 Message-ID: <4E614FBD.2030509@goop.org> Date: Fri, 02 Sep 2011 14:50:53 -0700 From: Jeremy Fitzhardinge User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20110816 Thunderbird/6.0 MIME-Version: 1.0 To: Peter Zijlstra CC: "H. Peter Anvin" , Linus Torvalds , Ingo Molnar , the arch/x86 maintainers , Linux Kernel Mailing List , Nick Piggin , Avi Kivity , Marcelo Tosatti , KVM , Andi Kleen , Xen Devel , Jeremy Fitzhardinge , Stefano Stabellini Subject: Re: [PATCH 08/13] xen/pvticketlock: disable interrupts while blocking References: <38bb37e15f6e5056d5238adac945bc1837a996ec.1314922370.git.jeremy.fitzhardinge@citrix.com> <1314974826.1861.1.camel@twins> <4E612EA1.20007@goop.org> <1314996468.8255.0.camel@twins> In-Reply-To: <1314996468.8255.0.camel@twins> X-Enigmail-Version: 1.3.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/02/2011 01:47 PM, Peter Zijlstra wrote: > On Fri, 2011-09-02 at 12:29 -0700, Jeremy Fitzhardinge wrote: >>> I know that its generally considered bad form, but there's at least one >>> spinlock that's only taken from NMI context and thus hasn't got any >>> deadlock potential. >> Which one? > arch/x86/kernel/traps.c:nmi_reason_lock > > It serializes NMI access to the NMI reason port across CPUs. Ah, OK. Well, that will never happen in a PV Xen guest. But PV ticketlocks are equally applicable to an HVM Xen domain (and KVM guest), so I guess there's at least some chance there could be a virtual emulated NMI. Maybe? Does qemu do that kind of thing? But, erm, does that even make sense? I'm assuming the NMI reason port tells the CPU why it got an NMI. If multiple CPUs can get NMIs and there's only a single reason port, then doesn't that mean that either 1) they all got the NMI for the same reason, or 2) having a single port is inherently racy? How does the locking actually work there? J