diff options
author | Gleb Natapov <gleb@redhat.com> | 2010-10-17 18:13:42 +0200 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2011-01-12 11:23:06 +0200 |
commit | 56028d0861e48f7cc9c573d79f2d8a0a933a2bba (patch) | |
tree | fa42d19f235c585c6514337a26db9641780ac759 /virt | |
parent | af585b921e5d1e919947c4b1164b59507fe7cd7b (diff) | |
download | kernel_samsung_crespo-56028d0861e48f7cc9c573d79f2d8a0a933a2bba.zip kernel_samsung_crespo-56028d0861e48f7cc9c573d79f2d8a0a933a2bba.tar.gz kernel_samsung_crespo-56028d0861e48f7cc9c573d79f2d8a0a933a2bba.tar.bz2 |
KVM: Retry fault before vmentry
When page is swapped in it is mapped into guest memory only after guest
tries to access it again and generate another fault. To save this fault
we can map it immediately since we know that guest is going to access
the page. Do it only when tdp is enabled for now. Shadow paging case is
more complicated. CR[034] and EFER registers should be switched before
doing mapping and then switched back.
Acked-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'virt')
-rw-r--r-- | virt/kvm/async_pf.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/virt/kvm/async_pf.c b/virt/kvm/async_pf.c index 857d634..e97eae9 100644 --- a/virt/kvm/async_pf.c +++ b/virt/kvm/async_pf.c @@ -132,6 +132,8 @@ void kvm_check_async_pf_completion(struct kvm_vcpu *vcpu) list_del(&work->link); spin_unlock(&vcpu->async_pf.lock); + if (work->page) + kvm_arch_async_page_ready(vcpu, work); kvm_arch_async_page_present(vcpu, work); list_del(&work->queue); |