From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756763Ab1INPCJ (ORCPT ); Wed, 14 Sep 2011 11:02:09 -0400 Received: from mx1.redhat.com ([209.132.183.28]:28503 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751612Ab1INPCH (ORCPT ); Wed, 14 Sep 2011 11:02:07 -0400 Message-ID: <4E70C1BE.7060209@redhat.com> Date: Wed, 14 Sep 2011 18:01:18 +0300 From: Avi Kivity User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20110816 Thunderbird/6.0 MIME-Version: 1.0 To: Andi Kleen CC: Don Zickus , Jeremy Fitzhardinge , Peter Zijlstra , "H. Peter Anvin" , Linus Torvalds , Ingo Molnar , the arch/x86 maintainers , Linux Kernel Mailing List , Nick Piggin , Marcelo Tosatti , KVM , Xen Devel , Jeremy Fitzhardinge , Stefano Stabellini Subject: Re: [PATCH 08/13] xen/pvticketlock: disable interrupts while blocking References: <20110907134411.GV5795@redhat.com> <4E678992.5050709@redhat.com> <20110907155657.GX5795@redhat.com> <4E679AF4.50209@redhat.com> <20110907165203.GQ6838@redhat.com> <4E67A551.4000502@redhat.com> <20110913184044.GN5795@redhat.com> <20110913190320.GR7761@one.firstfloor.org> <20110913192152.GO5795@redhat.com> <4E7050F7.3000208@redhat.com> <20110914144926.GU7761@one.firstfloor.org> In-Reply-To: <20110914144926.GU7761@one.firstfloor.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/14/2011 05:49 PM, Andi Kleen wrote: > On Wed, Sep 14, 2011 at 10:00:07AM +0300, Avi Kivity wrote: > > On 09/13/2011 10:21 PM, Don Zickus wrote: > > >Or are you saying an NMI in an idle system will have the same %rip thus > > >falsely detecting a back-to-back NMI? > > > > > > > > > > That's easy to avoid - insert an instruction zeroing the last nmi_rip > > somewhere before or after hlt. It's always okay to execute such an > > instruction (outside the nmi handler itself), since nmi_rip is meant to > > detect a "no instructions executed" condition. > > At least for classic hlt there is no simple "after hlt" because it's all > interrupt handlers and exceptions and everything else that can interrupt > combined. If an NMI hits in an interrupt handler, or in the "after hlt" section before the write-to-last-nmi-rip, then we'll see that %rip has changed. If it hits after the write-to-last-nmi-rip instruction (or in the hlt itself), then we'll also see that %rip has changed, due to the effect of that instruction. -- error compiling committee.c: too many arguments to function