• V
    KVM: x86: svm: make sure NMI is injected after nmi_singlestep · c9e34935
    Vitaly Kuznetsov 提交于
    commit 99c221796a810055974b54c02e8f53297e48d146 upstream.
    
    I noticed that apic test from kvm-unit-tests always hangs on my EPYC 7401P,
    the hanging test nmi-after-sti is trying to deliver 30000 NMIs and tracing
    shows that we're sometimes able to deliver a few but never all.
    
    When we're trying to inject an NMI we may fail to do so immediately for
    various reasons, however, we still need to inject it so enable_nmi_window()
    arms nmi_singlestep mode. #DB occurs as expected, but we're not checking
    for pending NMIs before entering the guest and unless there's a different
    event to process, the NMI will never get delivered.
    
    Make KVM_REQ_EVENT request on the vCPU from db_interception() to make sure
    pending NMIs are checked and possibly injected.
    Signed-off-by: NVitaly Kuznetsov <vkuznets@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    c9e34935
svm.c 182.9 KB