diff options
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap/linus/0026-KVM-MMU-Fix-incorrect-direct-gfn-for-unpaged-mode-sh.patch')
-rw-r--r-- | extras/recipes-kernel/linux/linux-omap/linus/0026-KVM-MMU-Fix-incorrect-direct-gfn-for-unpaged-mode-sh.patch | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap/linus/0026-KVM-MMU-Fix-incorrect-direct-gfn-for-unpaged-mode-sh.patch b/extras/recipes-kernel/linux/linux-omap/linus/0026-KVM-MMU-Fix-incorrect-direct-gfn-for-unpaged-mode-sh.patch new file mode 100644 index 00000000..9372cf05 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap/linus/0026-KVM-MMU-Fix-incorrect-direct-gfn-for-unpaged-mode-sh.patch | |||
@@ -0,0 +1,35 @@ | |||
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 | ||
5 | |||
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. | ||
10 | |||
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(-) | ||
18 | |||
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 | ||
35 | |||