[glsdk/meta-ti-glsdk.git] / recipes-bsp / linux / linux-omap / linus / 0026-KVM-MMU-Fix-incorrect-direct-gfn-for-unpaged-mode-sh.patch
1 From 22c5ed7018eb4157e317c8513fe2ced2c8ec5e0c Mon Sep 17 00:00:00 2001
2 From: Avi Kivity <avi@redhat.com>
3 Date: Tue, 28 Dec 2010 12:09:07 +0200
4 Subject: [PATCH 26/65] KVM: MMU: Fix incorrect direct gfn for unpaged mode shadow
6 We use the physical address instead of the base gfn for the four
7 PAE page directories we use in unpaged mode. When the guest accesses
8 an address above 1GB that is backed by a large host page, a BUG_ON()
9 in kvm_mmu_set_gfn() triggers.
11 Resolves: https://bugzilla.kernel.org/show_bug.cgi?id=21962
12 Reported-and-tested-by: Nicolas Prochazka <prochazka.nicolas@gmail.com>
13 KVM-Stable-Tag.
14 Signed-off-by: Avi Kivity <avi@redhat.com>
15 ---
16 arch/x86/kvm/mmu.c | 3 ++-
17 1 files changed, 2 insertions(+), 1 deletions(-)
19 diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
20 index fb8b376..fbb04ae 100644
21 --- a/arch/x86/kvm/mmu.c
22 +++ b/arch/x86/kvm/mmu.c
23 @@ -2394,7 +2394,8 @@ static int mmu_alloc_direct_roots(struct kvm_vcpu *vcpu)
24 ASSERT(!VALID_PAGE(root));
25 spin_lock(&vcpu->kvm->mmu_lock);
26 kvm_mmu_free_some_pages(vcpu);
27 - sp = kvm_mmu_get_page(vcpu, i << 30, i << 30,
28 + sp = kvm_mmu_get_page(vcpu, i << (30 - PAGE_SHIFT),
29 + i << 30,
30 PT32_ROOT_LEVEL, 1, ACC_ALL,
31 NULL);
32 root = __pa(sp->spt);
33 --
34 1.6.6.1