On Sun, Apr 19, 2009 at 05:57:56PM +0300, Avi Kivity wrote: > Gleb Natapov wrote: >> On Sun, Apr 19, 2009 at 05:20:37PM +0300, Avi Kivity wrote: >> >>> Gleb Natapov wrote: >>> >>>>> Could you elaborate on that? How/why does it use NMIs for task >>>>> switching? >>>>> >>>>> >>>> During WHQL testing (or if you just enable verifier on windows 2003) >>>> windows changes hibernate to not power down a PC, but resume >>>> immediately. During this immediate resume it sends NMI to non-boot CPUs >>>> while IDT for nmi is configured as a task gate. I am not sure it >>>> actually calls IRET after that. >>>> >>> If it doesn't call IRET, it will never see another NMI. >>> >>> But of course it will execute IRET, as part of normal execution. You >>> can't do anything without it. >>> >>> >> Boot CPU can send INIT after task switch (and I think this is what >> happens). >> > > But eventually it will execute IRET. > Yes :) But I strongly suspect that NMI window will be opened after SIPI even before first IRET. > (We need to fix INIT to clear the NMI blocking flag, not that it matters > so much) If we reset intercept mask on INIT, but don't clear NMI blocking flag we will never receive NMIs on the vcpu. -- Gleb. -- 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