On Wed, Aug 02, 2017 at 02:18:42PM +0530, Aneesh Kumar K.V wrote: > Ram Pai <linuxram@xxxxxxxxxx> writes: > > > kvmppc_do_h_enter() hcall, clobbers the high-order two bits of > > the protection key in the lower pte (ptel). Hence > > any pkey number above 7 fails to behave. > > > > The following patch, preserves the pkey bits. > > > > Signed-off-by: Ram Pai <linuxram@xxxxxxxxxx> > > --- > > arch/powerpc/include/asm/book3s/64/mmu-hash.h | 1 + > > arch/powerpc/kvm/book3s_hv_rm_mmu.c | 2 +- > > 2 files changed, 2 insertions(+), 1 deletions(-) > > > > diff --git a/arch/powerpc/include/asm/book3s/64/mmu-hash.h b/arch/powerpc/include/asm/book3s/64/mmu-hash.h > > index 369f9ff..f07a1c0 100644 > > --- a/arch/powerpc/include/asm/book3s/64/mmu-hash.h > > +++ b/arch/powerpc/include/asm/book3s/64/mmu-hash.h > > @@ -109,6 +109,7 @@ > > #define HPTE_R_KEY_BIT2 ASM_CONST(0x0000000000000800) > > #define HPTE_R_KEY_BIT3 ASM_CONST(0x0000000000000400) > > #define HPTE_R_KEY_BIT4 ASM_CONST(0x0000000000000200) > > +#define HPTE_R_KEY (HPTE_R_KEY_LO | HPTE_R_KEY_HI) > > > > #define HPTE_V_1TB_SEG ASM_CONST(0x4000000000000000) > > #define HPTE_V_VRMA_MASK ASM_CONST(0x4001ffffff000000) > > diff --git a/arch/powerpc/kvm/book3s_hv_rm_mmu.c b/arch/powerpc/kvm/book3s_hv_rm_mmu.c > > index ce6f212..d9462ab 100644 > > --- a/arch/powerpc/kvm/book3s_hv_rm_mmu.c > > +++ b/arch/powerpc/kvm/book3s_hv_rm_mmu.c > > @@ -268,7 +268,7 @@ long kvmppc_do_h_enter(struct kvm *kvm, unsigned long flags, > > if (!realmode) > > local_irq_restore(irq_flags); > > > > - ptel &= ~(HPTE_R_PP0 - psize); > > + ptel &= HPTE_R_KEY | HPTE_R_PP0 | (psize-1); > > Is this all needed to get keys to work on kvm ? We use key value 31 and > key value 0 along with absent and invalid hpte config to indicate mmio > and host swapped pages ? Won't that need to be fixed ? It should be fine, though if you want to audit the code go ahead. Yong Ji fixed it last year to check for key 31 only when the HPTE is absent, to clear the key when making a HPTE absent unless it is an MMIO HPTE (and then it's set to 31), and to set the key to the guest-requested key when making the HPTE present. Paul. -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html