On Thu, Apr 23, 2020 at 05:10:45PM +0200, Paolo Bonzini wrote: > On 23/04/20 16:42, Sean Christopherson wrote: > > On Tue, Apr 14, 2020 at 04:11:07PM -0400, Cathy Avery wrote: > >> With NMI intercept moved to check_nested_events there is a race > >> condition where vcpu->arch.nmi_pending is set late causing > > How is nmi_pending set late? The KVM_{G,S}ET_VCPU_EVENTS paths can't set > > it because the current KVM_RUN thread holds the mutex, and the only other > > call to process_nmi() is in the request path of vcpu_enter_guest, which has > > already executed. > > > > I think the actual cause is priority inversion between NMI and > interrupts, because NMI is added last in patch 1. Ah, that makes more sense. I stared/glared at this exact code for a long while and came to the conclusion that the "late" behavior was exclusive to interrupts, would have been a shame if all that glaring was for naught.