Received: by 10.223.176.46 with SMTP id f43csp2674704wra; Mon, 22 Jan 2018 01:21:19 -0800 (PST) X-Google-Smtp-Source: AH8x227WPgBV1fx1uVR0pXi9L/5QgxlaIlbw4WMerTK47vVnyxLaGCSCEFY1WQ7Ol3GIPYm2AFGu X-Received: by 2002:a17:902:7887:: with SMTP id q7-v6mr2952456pll.86.1516612879484; Mon, 22 Jan 2018 01:21:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516612879; cv=none; d=google.com; s=arc-20160816; b=CCIIiSBFp4G4GXmDYQZ2uSk2sMd9Ph5lqjGGf2sUpKJFLNJTUGbWkYTetOdx5YYka7 IT31xi1/nP9vwInPyjWbgSUhloMailY0GkKAcWsfFR08TmaSW/wIiEZdAxw+296+r2hG 8wj6zu0KIZ/3DHvL6kpUqAncMWx/dWLX5xvK1wzwdQMYjsoB2yQvkrRfZmaySeTqg8EQ pWCnP7cdoARej/uoFjbGBCmfPtCnPG6uMPuI4a3Tn93q74K99XbschwxCRIipnTVMFWt vKHrlB4p4dBfC10MusSjeDvoaddk7OXfvyXJRPQzDaxzhj/crqZ+1XFivk7HW9zYLkvB NSFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=VdieKyWquBWVXDxq106wKGiguJ+TUhIR+F5ZfGjeo5M=; b=hXVUsUpmB1flChBD5kS5FTPLQFrMBPRz5+OBFUG5mSBfKAMfNN+lyjEt2kL1RmhgB3 xb5E7GsJdUyy5R8mnrusblyVwCS5FqQ3R2ZXixoTfnjvSQgoh4TkAPZrwP/ukbCzw3+M Pw8atKqWHbYkGzFh1U2oyMkLELwKT/lddTkDSYajUgwGQ6taV7unXknnpo1wZA+/RAyS zB5QzXUWwzoWpmLPiMc+DHG9Lr/M4kYRPOZ+8KRQSgLKWeLFEuHNmAdFzcRVFiyHwAjv Bk/Z21lGdmst8tJ2/G+6Eze0NNNEPUm/KQh8a8wq8HWfcwQ6bocm89z+I/AnYwuG1AJp pXNw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t64si13618728pgb.300.2018.01.22.01.21.05; Mon, 22 Jan 2018 01:21:19 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752611AbeAVIua (ORCPT + 99 others); Mon, 22 Jan 2018 03:50:30 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:32964 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751237AbeAVIu1 (ORCPT ); Mon, 22 Jan 2018 03:50:27 -0500 Received: from localhost (LFbn-1-12258-90.w90-92.abo.wanadoo.fr [90.92.71.90]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 22C4E491; Mon, 22 Jan 2018 08:50:26 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Nicholas Piggin , Michael Ellerman Subject: [PATCH 4.14 11/89] powerpc/64s: Convert slb_miss_common to use RFI_TO_USER/KERNEL Date: Mon, 22 Jan 2018 09:44:51 +0100 Message-Id: <20180122083955.820975906@linuxfoundation.org> X-Mailer: git-send-email 2.16.0 In-Reply-To: <20180122083954.683903493@linuxfoundation.org> References: <20180122083954.683903493@linuxfoundation.org> User-Agent: quilt/0.65 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Nicholas Piggin commit c7305645eb0c1621351cfc104038831ae87c0053 upstream. In the SLB miss handler we may be returning to user or kernel. We need to add a check early on and save the result in the cr4 register, and then we bifurcate the return path based on that. Signed-off-by: Nicholas Piggin Signed-off-by: Michael Ellerman Signed-off-by: Greg Kroah-Hartman --- arch/powerpc/kernel/exceptions-64s.S | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S @@ -596,6 +596,9 @@ EXC_COMMON_BEGIN(slb_miss_common) stw r9,PACA_EXSLB+EX_CCR(r13) /* save CR in exc. frame */ std r10,PACA_EXSLB+EX_LR(r13) /* save LR */ + andi. r9,r11,MSR_PR // Check for exception from userspace + cmpdi cr4,r9,MSR_PR // And save the result in CR4 for later + /* * Test MSR_RI before calling slb_allocate_realmode, because the * MSR in r11 gets clobbered. However we still want to allocate @@ -622,9 +625,32 @@ END_MMU_FTR_SECTION_IFCLR(MMU_FTR_TYPE_R /* All done -- return from exception. */ + bne cr4,1f /* returning to kernel */ + +.machine push +.machine "power4" + mtcrf 0x80,r9 + mtcrf 0x08,r9 /* MSR[PR] indication is in cr4 */ + mtcrf 0x04,r9 /* MSR[RI] indication is in cr5 */ + mtcrf 0x02,r9 /* I/D indication is in cr6 */ + mtcrf 0x01,r9 /* slb_allocate uses cr0 and cr7 */ +.machine pop + + RESTORE_CTR(r9, PACA_EXSLB) + RESTORE_PPR_PACA(PACA_EXSLB, r9) + mr r3,r12 + ld r9,PACA_EXSLB+EX_R9(r13) + ld r10,PACA_EXSLB+EX_R10(r13) + ld r11,PACA_EXSLB+EX_R11(r13) + ld r12,PACA_EXSLB+EX_R12(r13) + ld r13,PACA_EXSLB+EX_R13(r13) + RFI_TO_USER + b . /* prevent speculative execution */ +1: .machine push .machine "power4" mtcrf 0x80,r9 + mtcrf 0x08,r9 /* MSR[PR] indication is in cr4 */ mtcrf 0x04,r9 /* MSR[RI] indication is in cr5 */ mtcrf 0x02,r9 /* I/D indication is in cr6 */ mtcrf 0x01,r9 /* slb_allocate uses cr0 and cr7 */ @@ -638,9 +664,10 @@ END_MMU_FTR_SECTION_IFCLR(MMU_FTR_TYPE_R ld r11,PACA_EXSLB+EX_R11(r13) ld r12,PACA_EXSLB+EX_R12(r13) ld r13,PACA_EXSLB+EX_R13(r13) - rfid + RFI_TO_KERNEL b . /* prevent speculative execution */ + 2: std r3,PACA_EXSLB+EX_DAR(r13) mr r3,r12 mfspr r11,SPRN_SRR0