KVM: nVMX: Report NMIs as allowed when in L2 and Exit-on-NMI is set
Report NMIs as allowed when the vCPU is in L2 and L2 is being run with Exit-on-NMI enabled, as NMIs are always unblocked from L1's perspective in this case. Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Message-Id: <20200423022550.15113-7-sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
a9fa7cb6aa
commit
429ab576f3
@ -698,11 +698,6 @@ static bool nested_exit_intr_ack_set(struct kvm_vcpu *vcpu)
|
||||
VM_EXIT_ACK_INTR_ON_EXIT;
|
||||
}
|
||||
|
||||
static bool nested_exit_on_nmi(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
return nested_cpu_has_nmi_exiting(get_vmcs12(vcpu));
|
||||
}
|
||||
|
||||
static int nested_vmx_check_apic_access_controls(struct kvm_vcpu *vcpu,
|
||||
struct vmcs12 *vmcs12)
|
||||
{
|
||||
|
@ -225,6 +225,11 @@ static inline bool nested_cpu_has_save_preemption_timer(struct vmcs12 *vmcs12)
|
||||
VM_EXIT_SAVE_VMX_PREEMPTION_TIMER;
|
||||
}
|
||||
|
||||
static inline bool nested_exit_on_nmi(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
return nested_cpu_has_nmi_exiting(get_vmcs12(vcpu));
|
||||
}
|
||||
|
||||
/*
|
||||
* In nested virtualization, check if L1 asked to exit on external interrupts.
|
||||
* For most existing hypervisors, this will always return true.
|
||||
|
@ -4515,6 +4515,9 @@ static bool vmx_nmi_allowed(struct kvm_vcpu *vcpu)
|
||||
if (to_vmx(vcpu)->nested.nested_run_pending)
|
||||
return false;
|
||||
|
||||
if (is_guest_mode(vcpu) && nested_exit_on_nmi(vcpu))
|
||||
return true;
|
||||
|
||||
if (!enable_vnmi &&
|
||||
to_vmx(vcpu)->loaded_vmcs->soft_vnmi_blocked)
|
||||
return false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user