KVM: Allow cross page reads and writes from cached translations.
authorAndrew Honig <ahonig@google.com>
Fri, 29 Mar 2013 16:35:21 +0000 (09:35 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 25 Apr 2013 19:25:50 +0000 (20:25 +0100)
commitc471da1e3f5c6e43397dccf47cefd8edc86aa9f0
treeb4d78661a2eb6db1b82f4382f416c9358011434d
parent6d29de40486edf7d5a61d40f4b18431e2c644ad0
KVM: Allow cross page reads and writes from cached translations.

commit 8f964525a121f2ff2df948dac908dcc65be21b5b upstream.

This patch adds support for kvm_gfn_to_hva_cache_init functions for
reads and writes that will cross a page.  If the range falls within
the same memslot, then this will be a fast operation.  If the range
is split between two memslots, then the slower kvm_read_guest and
kvm_write_guest are used.

Tested: Test against kvm_clock unit tests.

Signed-off-by: Andrew Honig <ahonig@google.com>
Signed-off-by: Gleb Natapov <gleb@redhat.com>
[bwh: Backported to 3.2:
 - Drop change in lapic.c
 - Keep using __gfn_to_memslot() in kvm_gfn_to_hva_cache_init()]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
arch/x86/kvm/x86.c
include/linux/kvm_host.h
include/linux/kvm_types.h
virt/kvm/kvm_main.c