]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: PPC: Book3S PR: Fix WIMG handling under pHyp
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Wed, 22 Nov 2017 03:42:21 +0000 (14:42 +1100)
committerPaul Mackerras <paulus@ozlabs.org>
Wed, 10 Jan 2018 09:45:00 +0000 (20:45 +1100)
commitd54fea31530e5d9c66a1c92d1c4b4c8848d83cca
tree31dbc372395d8116904cece7bf6ad62c2e51e53b
parentbe52763412ffc6238a9fa4f9f23cd8b47b1d2f26
KVM: PPC: Book3S PR: Fix WIMG handling under pHyp

Commit 0b93062 ("KVM: PPC: Book3S PR: Preserve storage control bits")
added code to preserve WIMG bits but it missed 2 special cases:
- a magic page in kvmppc_mmu_book3s_64_xlate() and
- guest real mode in kvmppc_handle_pagefault().

For these ptes, WIMG was 0 and pHyp failed on these causing a guest to
stop in the very beginning at NIP=0x100 (due to 29442c16d "KVM: PPC:
Book3S PR: Exit KVM on failed mapping").

According to LoPAPR v1.1 14.5.4.1.2 H_ENTER:

 The hypervisor checks that the WIMG bits within the PTE are appropriate
 for the physical page number else H_Parameter return. (For System Memory
 pages WIMG=0010, or, 1110 if the SAO option is enabled, and for IO pages
 WIMG=01**.)

This hence initializes WIMG to non-zero value HPTE_R_M (0x10), as expected
by pHyp.

[paulus@ozlabs.org - fix compile for 32-bit]

Cc: stable@vger.kernel.org # v4.11+
Fixes: 0b93062 "KVM: PPC: Book3S PR: Preserve storage control bits"
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Tested-by: Ruediger Oertel <ro@suse.de>
Reviewed-by: Greg Kurz <groug@kaod.org>
Tested-by: Greg Kurz <groug@kaod.org>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
arch/powerpc/kvm/book3s_64_mmu.c
arch/powerpc/kvm/book3s_pr.c