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 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html