If apf is generated in L2 guest and is completed in L1 guest, it will
prefault this apf in L1 guest's mmu context.
Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
 struct kvm_arch_async_pf {
        u32 token;
        gfn_t gfn;
+       bool direct_map;
 };
 
 extern struct kvm_x86_ops *kvm_x86_ops;
 
        struct kvm_arch_async_pf arch;
        arch.token = (vcpu->arch.apf.id++ << 12) | vcpu->vcpu_id;
        arch.gfn = gfn;
+       arch.direct_map = vcpu->arch.mmu.direct_map;
 
        return kvm_setup_async_pf(vcpu, gva, gfn, &arch);
 }
 
 {
        int r;
 
-       if (!vcpu->arch.mmu.direct_map || is_error_page(work->page))
+       if (!vcpu->arch.mmu.direct_map || !work->arch.direct_map ||
+             is_error_page(work->page))
                return;
 
        r = kvm_mmu_reload(vcpu);