diff options
-rw-r--r-- | arch/x86/include/asm/kvm_host.h | 1 | ||||
-rw-r--r-- | arch/x86/kvm/mmu.c | 1 | ||||
-rw-r--r-- | arch/x86/kvm/x86.c | 3 |
3 files changed, 4 insertions, 1 deletions
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 116dac5e01d6..f1e8d5b99f5d 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h | |||
@@ -600,6 +600,7 @@ struct kvm_x86_ops { | |||
600 | struct kvm_arch_async_pf { | 600 | struct kvm_arch_async_pf { |
601 | u32 token; | 601 | u32 token; |
602 | gfn_t gfn; | 602 | gfn_t gfn; |
603 | bool direct_map; | ||
603 | }; | 604 | }; |
604 | 605 | ||
605 | extern struct kvm_x86_ops *kvm_x86_ops; | 606 | extern struct kvm_x86_ops *kvm_x86_ops; |
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index db0fd555a5a2..ab100a7e0c49 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c | |||
@@ -2609,6 +2609,7 @@ static int kvm_arch_setup_async_pf(struct kvm_vcpu *vcpu, gva_t gva, gfn_t gfn) | |||
2609 | struct kvm_arch_async_pf arch; | 2609 | struct kvm_arch_async_pf arch; |
2610 | arch.token = (vcpu->arch.apf.id++ << 12) | vcpu->vcpu_id; | 2610 | arch.token = (vcpu->arch.apf.id++ << 12) | vcpu->vcpu_id; |
2611 | arch.gfn = gfn; | 2611 | arch.gfn = gfn; |
2612 | arch.direct_map = vcpu->arch.mmu.direct_map; | ||
2612 | 2613 | ||
2613 | return kvm_setup_async_pf(vcpu, gva, gfn, &arch); | 2614 | return kvm_setup_async_pf(vcpu, gva, gfn, &arch); |
2614 | } | 2615 | } |
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 9b875ff05410..c673e726fbdb 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -6168,7 +6168,8 @@ void kvm_arch_async_page_ready(struct kvm_vcpu *vcpu, struct kvm_async_pf *work) | |||
6168 | { | 6168 | { |
6169 | int r; | 6169 | int r; |
6170 | 6170 | ||
6171 | if (!vcpu->arch.mmu.direct_map || is_error_page(work->page)) | 6171 | if (!vcpu->arch.mmu.direct_map || !work->arch.direct_map || |
6172 | is_error_page(work->page)) | ||
6172 | return; | 6173 | return; |
6173 | 6174 | ||
6174 | r = kvm_mmu_reload(vcpu); | 6175 | r = kvm_mmu_reload(vcpu); |