Message ID | CANRm+CxYAkt_OoiwQq9rG+bSTHEir_ocEkawUX5Ak3_ibPVdrQ@mail.gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 24/07/2017 15:57, Wanpeng Li wrote: > > if (!((vmcs12->exception_bitmap & (1u << nr)) || > - (nr == PF_VECTOR && vcpu->arch.exception.nested_apf))) > + (nr == PF_VECTOR && (vcpu->arch.exception.nested_apf || > + nested_vmx_is_page_fault_vmexit(vmcs12, > vcpu->arch.exception.error_code))))) > return 0; No, it would be more like if (nr == PF_VECTOR ? (vcpu->arch.exception.nested_apf || nested_vmx_is_page_fault_vmexit(vmcs12, vcpu->arch.exception.error_code)) : (vmcs12->exception_bitmap & (1u << nr))) but I've sent an RFC patch that also fixes the exit qualification. Paolo
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 29fd8af..52afd23 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -2439,7 +2439,8 @@ static int nested_vmx_check_exception(struct kvm_vcpu *vcpu) unsigned int nr = vcpu->arch.exception.nr; if (!((vmcs12->exception_bitmap & (1u << nr)) || - (nr == PF_VECTOR && vcpu->arch.exception.nested_apf))) + (nr == PF_VECTOR && (vcpu->arch.exception.nested_apf || + nested_vmx_is_page_fault_vmexit(vmcs12, vcpu->arch.exception.error_code))))) return 0;