• Paolo Bonzini's avatar
    KVM: nVMX: track NMI blocking state separately for each VMCS · 4c4a6f79
    Paolo Bonzini authored
    vmx_recover_nmi_blocking is using a cached value of the guest
    interruptibility info, which is stored in vmx->nmi_known_unmasked.
    vmx_recover_nmi_blocking is run for both normal and nested guests,
    so the cached value must be per-VMCS.
    
    This fixes eventinj.flat in a nested non-EPT environment.  With EPT it
    works, because the EPT violation handler doesn't have the
    vmx->nmi_known_unmasked optimization (it is unnecessary because, unlike
    vmx_recover_nmi_blocking, it can just look at the exit qualification).
    
    Thanks to Wanpeng Li for debugging the testcase and providing an initial
    patch.
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
    4c4a6f79
vmx.c 332 KB