From patchwork Mon Jul 31 21:39:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ram Pai X-Patchwork-Id: 795961 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=kvm-ppc-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="ONkV1iPH"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xLtD757Kwz9s0g for ; Tue, 1 Aug 2017 07:40:39 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751114AbdGaVki (ORCPT ); Mon, 31 Jul 2017 17:40:38 -0400 Received: from mail-qt0-f195.google.com ([209.85.216.195]:36987 "EHLO mail-qt0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751113AbdGaVki (ORCPT ); Mon, 31 Jul 2017 17:40:38 -0400 Received: by mail-qt0-f195.google.com with SMTP id d10so18342703qtb.4 for ; Mon, 31 Jul 2017 14:40:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id; bh=JYY2f8MoGw69R9qMioTHD17jualpZTKAvn/blND+EBY=; b=ONkV1iPHSe6YD1bR+dVyrcKKR6iWLzqQFHRvj/4wopKJvdUM0VnWg1OaP3Y7WUQKpt osmobMh1xbQgGh18HLLspvp3XvHapab659hp1JMKhFOLq5uw57O0VK777fHye7+isnq6 rsb/sL52f01ttx+Z+MHHmc98TLdhy7QxfxJdURnCzE0Yz+N8YCkM5XKHoVrdXjBml2OT fWjGFjKtCVbypZlK8eoHqZ9Tv08ybXpOlILVB1lCYFWkz0Y2ocTO9xUBlDTZmTHVFdJK 6kpOiUCtK/uAV+q2X/Zg9AQmTBLSu1PUKkYpjkPZo4Z1fPF7X7sBQeJeBLFxv3wWswog c+YQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=JYY2f8MoGw69R9qMioTHD17jualpZTKAvn/blND+EBY=; b=izma6KR70Lo+4CD3fwOD6s5Z7CcV4AH/Jg0toKoXSs2f+bSGAm7z+O/mV1xxWiNoSJ qO4vWvZ11KWk/lsT6UXOjAhYipP8CBOu1vVkO9PYDQZmwkRFzGil7+sJGdNUaWiKB9JP jAOb6I55qn0+hSPcKUJKYnRad4Mqbu60zyiOv3YEtrorKjKCViEmNZBfwSFfBZcnJ+vp 2Uf3BkHo6QeUuim9AkfR1Lq93G8BZ4em8Jmkgds5E4m8Co64HcCmEEaIHCTdPafwadGK HYHePLXBHtG7wGKDYuWoSDumRxTtcQbMjAxmV7HUa3wrrTS/tQivtum2HIGu9+KE4rg0 fopw== X-Gm-Message-State: AIVw110ZpCfrHhP3XlNM644HSuw7as1dSDA+z4spYywVqWLvTEbQZDe3 gLZ1anCxGUUSoZha X-Received: by 10.200.52.212 with SMTP id x20mr25301781qtb.53.1501537237279; Mon, 31 Jul 2017 14:40:37 -0700 (PDT) Received: from localhost.localdomain (50-39-103-96.bvtn.or.frontiernet.net. [50.39.103.96]) by smtp.gmail.com with ESMTPSA id t1sm3962425qkb.91.2017.07.31.14.40.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 31 Jul 2017 14:40:36 -0700 (PDT) From: Ram Pai To: kvm-ppc@vger.kernel.org Cc: benh@kernel.crashing.org, paulus@samba.org, mpe@ellerman.id.au, khandual@linux.vnet.ibm.com, aneesh.kumar@linux.vnet.ibm.com, bsingharora@gmail.com, hbabu@us.ibm.com, linuxram@us.ibm.com, bauerman@linux.vnet.ibm.com Subject: [PATCH] kvmppc: protection keys fix Date: Mon, 31 Jul 2017 14:39:59 -0700 Message-Id: <1501537199-19233-1-git-send-email-linuxram@us.ibm.com> X-Mailer: git-send-email 1.7.1 Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org kvmppc_do_h_enter() hcall, clobbers the high-order two bits of the protection key, in the lower pte (ptel). Any pkey number above 7, hence fails to operate correctly. The following patch, preserves the pkey bits. Acked-by: Balbir Singh Reviewed-by: Paul Mackerras Signed-off-by: Ram Pai --- 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 deletion(-) diff --git a/arch/powerpc/include/asm/book3s/64/mmu-hash.h b/arch/powerpc/include/asm/book3s/64/mmu-hash.h index 6981a52..5c6b18a 100644 --- a/arch/powerpc/include/asm/book3s/64/mmu-hash.h +++ b/arch/powerpc/include/asm/book3s/64/mmu-hash.h @@ -104,6 +104,7 @@ #define HPTE_R_C ASM_CONST(0x0000000000000080) #define HPTE_R_R ASM_CONST(0x0000000000000100) #define HPTE_R_KEY_LO ASM_CONST(0x0000000000000e00) +#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); ptel |= pa; if (pa)