On 09/14/2011 10:34 PM, Andi Kleen wrote:
On Wed, Sep 14, 2011 at 10:26:21PM +0300, Avi Kivity wrote: > On 09/14/2011 08:28 PM, Andi Kleen wrote: > >> 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. > > > >It won't handle multiple NMIs in halt. I assume that's reasonable common. > > > > Why not? They all have the same original RIPs and there is no way to distingush them.
That's how we detect multiple NMIs. 1. First NMI is posted 2. NMI handler starts 3. 2nd NMI posted, queued 4. First NMI source handled 5. IRET 6. Queued NMI hits the core 7. back-to-back NMI detected (same rip) 8. Second (and third...) NMI source handled 9. Execution continues. -- I have a truly marvellous patch that fixes the bug which this signature is too narrow to contain. -- 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