On 2014-03-07 20:48, Paolo Bonzini wrote:
> Il 07/03/2014 20:03, Jan Kiszka ha scritto:
>> @@ -4631,22 +4631,8 @@ static void vmx_set_nmi_mask(struct kvm_vcpu
>> *vcpu, bool masked)
>>
>> static int vmx_nmi_allowed(struct kvm_vcpu *vcpu)
>> {
>> - if (is_guest_mode(vcpu)) {
>> - if (to_vmx(vcpu)->nested.nested_run_pending)
>> - return 0;
>> - if (nested_exit_on_nmi(vcpu)) {
>> - nested_vmx_vmexit(vcpu, EXIT_REASON_EXCEPTION_NMI,
>> - NMI_VECTOR | INTR_TYPE_NMI_INTR |
>> - INTR_INFO_VALID_MASK, 0);
>> - /*
>> - * The NMI-triggered VM exit counts as injection:
>> - * clear this one and block further NMIs.
>> - */
>> - vcpu->arch.nmi_pending = 0;
>> - vmx_set_nmi_mask(vcpu, true);
>> - return 0;
>> - }
>> - }
>> + if (to_vmx(vcpu)->nested.nested_run_pending)
>> + return 0;
>>
>> if (!cpu_has_virtual_nmis() && to_vmx(vcpu)->soft_vnmi_blocked)
>> return 0;
>> @@ -4658,19 +4644,8 @@ static int vmx_nmi_allowed(struct kvm_vcpu *vcpu)
>>
>> static int vmx_interrupt_allowed(struct kvm_vcpu *vcpu)
>> {
>> - if (is_guest_mode(vcpu)) {
>> - if (to_vmx(vcpu)->nested.nested_run_pending)
>> - return 0;
>> - if (nested_exit_on_intr(vcpu)) {
>> - nested_vmx_vmexit(vcpu, EXIT_REASON_EXTERNAL_INTERRUPT,
>> - 0, 0);
>> - /*
>> - * fall through to normal code, but now in L1, not L2
>> - */
>> - }
>> - }
>> -
>> - return (vmcs_readl(GUEST_RFLAGS) & X86_EFLAGS_IF) &&
>> + return (!to_vmx(vcpu)->nested.nested_run_pending &&
>> + vmcs_readl(GUEST_RFLAGS) & X86_EFLAGS_IF) &&
>> !(vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) &
>> (GUEST_INTR_STATE_STI | GUEST_INTR_STATE_MOV_SS));
>
> The checks on nested_run_pending are not needed anymore and can be
> replaced with a WARN_ON. Otherwise,Nope, that won't be correct: If we have a pending interrupt that L1 does not intercept, we still trigger this condition legally. Jan > > Reviewed-by: Paolo Bonzini <[email protected]> > > Paolo > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to [email protected] > More majordomo info at http://vger.kernel.org/majordomo-info.html >
signature.asc
Description: OpenPGP digital signature
