Re: [PATCH] KVM/VMX: Invoke NMI non-IST entry instead of IST entry

From: Paolo Bonzini
Date: Tue May 04 2021 - 17:56:40 EST


On 04/05/21 23:51, Sean Christopherson wrote:
On Tue, May 04, 2021, Paolo Bonzini wrote:
On 04/05/21 23:23, Andy Lutomirski wrote:
On May 4, 2021, at 2:21 PM, Sean Christopherson <seanjc@xxxxxxxxxx> wrote:
FWIW, NMIs are masked if the VM-Exit was due to an NMI.

Huh, indeed: "An NMI causes subsequent NMIs to be blocked, but only after
the VM exit completes".

Then this whole change is busted, since nothing will unmask NMIs. Revert it?
Looks like the easiest way out indeed.

I've no objection to reverting to intn, but what does reverting versus handling
NMI on the kernel stack have to do with NMIs being blocked on VM-Exit due to NMI?
I'm struggling mightily to connect the dots.

Nah, you're right: vmx_do_interrupt_nmi_irqoff will not call the handler directly, rather it calls the IDT entrypoint which *will* do an IRET and unmask NMIs. I trusted Andy too much on this one. :)

Thomas's posted patch ("[PATCH] KVM/VMX: Invoke NMI non-IST entry instead of IST entry") looks good.

Paolo