2017-06-14 2:19 GMT+08:00 Radim Krčmář <rkrcmar@xxxxxxxxxx>: > 2017-06-12 23:08-0700, Wanpeng Li: >> From: Wanpeng Li <wanpeng.li@xxxxxxxxxxx> >> >> Adds another flag bit (bit 2) to MSR_KVM_ASYNC_PF_EN. If bit 2 is 1, async >> page faults are delivered to L1 as #PF vmexits; if bit 2 is 0, kvm_can_do_async_pf >> returns 0 if in guest mode. >> >> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> >> Cc: Radim Krčmář <rkrcmar@xxxxxxxxxx> >> Signed-off-by: Wanpeng Li <wanpeng.li@xxxxxxxxxxx> >> --- > > I think KVM (L1) should also do something like > > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > index dd274db9bf77..c15a9f178e60 100644 > --- a/arch/x86/kvm/vmx.c > +++ b/arch/x86/kvm/vmx.c > @@ -7991,7 +7991,7 @@ static bool nested_vmx_exit_handled(struct kvm_vcpu *vcpu) > if (is_nmi(intr_info)) > return false; > else if (is_page_fault(intr_info)) > - return enable_ept; > + return !vmx->apf_reason && enable_ept; > else if (is_no_device(intr_info) && > !(vmcs12->guest_cr0 & X86_CR0_TS)) > return false; > > so it doesn't pass the APF directed towards it (L1) into L2 if there is > L3 at the moment. Agreed. I will do this in v2. Regards, Wanpeng Li