Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp878406pxb; Tue, 3 Nov 2020 15:17:33 -0800 (PST) X-Google-Smtp-Source: ABdhPJzhwqwKacpoqYdN+NGiHaTW7objT8g73wrlA3TWx24aol78pGe3idSRCFDZMHJQEeELFjao X-Received: by 2002:a17:906:22c6:: with SMTP id q6mr22137611eja.433.1604445453275; Tue, 03 Nov 2020 15:17:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1604445453; cv=none; d=google.com; s=arc-20160816; b=RHEWYRcbyY2pwqRffH3AnfdqY26vEg5kMbxzQa4Ln+mxRRgPfeW5xC6wF8zpuNVBA7 NlGVDFSckkcsTe9ikB/3u6a80l9ocxpE6noXqA2yPsWDiO33NQHNsnhYiyaa/EGBlJH9 riQ5N+Ma+tZ68HC8tcSuHNgz4eKs62udbKj5ftEglG42NtAGo4EG+MLuvg1PFv/qN+ud 3WK5RjmXBUPkkqgdTxzsXPkN/J5PuDKnfwHc3ul6aSROUA00aNFa+S4sRClLEUC3VvmI dZ3502IiRyS6B4iG+lQskMG9ajuRy/9ZbBW1uxr1XvmLSQfuuG+rTAK62KMlvo0ANyJZ Glmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=NJcEbkk49/42xEuoJTBBrErFWD4G37ktoXfe+N7h3sQ=; b=UeyjKqnJaupfMhbgxGqnMSg6SdTapgkXxkcuYrqk/qFGtUnaVA6XhoAGt5XcGtDHuc 97wjwxqJK/vkUIEwRU8v2H92bqTD5t+oX36iKZjc5HoRpAcgBbtfTQqI2NYjgEZPXLeS Xs1N5wGtS6CmYwnm5n73scoL9AFPXNX4bRHfRQNZjVDEj2vpN+3GIYRQzerr5tjuQHzo yb70D+v1+YsvejEE0KT9SHhnL37WS8+NdDBnjkURUKjRWsM0p8sJtYKWU8eO6Uuj8wd0 7im1/NX2Dgxiiq6XqhY8xswTfEFcHxgLoHhT1DsWeAluq+3If3rluIGwHfM/yc58RCPy C29g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=sAAV6PGB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k10si86379edv.43.2020.11.03.15.17.10; Tue, 03 Nov 2020 15:17:33 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=sAAV6PGB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731695AbgKCUtE (ORCPT + 99 others); Tue, 3 Nov 2020 15:49:04 -0500 Received: from mail.kernel.org ([198.145.29.99]:41320 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731682AbgKCUtA (ORCPT ); Tue, 3 Nov 2020 15:49:00 -0500 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5C48C20719; Tue, 3 Nov 2020 20:48:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1604436539; bh=Fpydzvaweo0Y+3y3QPw0J6GRZc5CxqW6NB98jym14QE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sAAV6PGBPrd6rEBpYil9M1JsEwpZKR3Vcg96fsiGskBmXdaH/DAmulpRd2Sb6RSQ+ 96Vkkfbz3EFDuxssVaGOWyiyHD61nQ8F9BsF9HTbOJDuGqbrLA9WIPIO9Pt7xKNSvg Ht5/Ocpug+9gevr8/TQD5VcDjyYD+mjquAPXXRZM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Christophe Leroy , Michael Ellerman Subject: [PATCH 5.9 293/391] powerpc/32: Fix vmap stack - Do not activate MMU before reading task struct Date: Tue, 3 Nov 2020 21:35:44 +0100 Message-Id: <20201103203406.843607550@linuxfoundation.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201103203348.153465465@linuxfoundation.org> References: <20201103203348.153465465@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Christophe Leroy commit c118c7303ad528be8ff2aea8cd1ee15452c763f0 upstream. We need r1 to be properly set before activating MMU, so reading task_struct->stack must be done with MMU off. This means we need an additional register to play with MSR bits while r11 now points to the stack. For that, move r10 back to CR (As is already done for hash MMU) and use r10. We still don't have r1 correct yet when we activate MMU. It is done in following patch. Fixes: 028474876f47 ("powerpc/32: prepare for CONFIG_VMAP_STACK") Cc: stable@vger.kernel.org Signed-off-by: Christophe Leroy Signed-off-by: Michael Ellerman Link: https://lore.kernel.org/r/a027d447022a006c9c4958ac734128e577a3c5c1.1599486108.git.christophe.leroy@csgroup.eu Signed-off-by: Greg Kroah-Hartman --- arch/powerpc/kernel/head_32.S | 6 ------ arch/powerpc/kernel/head_32.h | 31 ++++++------------------------- 2 files changed, 6 insertions(+), 31 deletions(-) --- a/arch/powerpc/kernel/head_32.S +++ b/arch/powerpc/kernel/head_32.S @@ -274,14 +274,8 @@ __secondary_hold_acknowledge: DO_KVM 0x200 MachineCheck: EXCEPTION_PROLOG_0 -#ifdef CONFIG_VMAP_STACK - li r11, MSR_KERNEL & ~(MSR_IR | MSR_RI) /* can take DTLB miss */ - mtmsr r11 - isync -#endif #ifdef CONFIG_PPC_CHRP mfspr r11, SPRN_SPRG_THREAD - tovirt_vmstack r11, r11 lwz r11, RTAS_SP(r11) cmpwi cr1, r11, 0 bne cr1, 7f --- a/arch/powerpc/kernel/head_32.h +++ b/arch/powerpc/kernel/head_32.h @@ -39,24 +39,13 @@ .endm .macro EXCEPTION_PROLOG_1 for_rtas=0 -#ifdef CONFIG_VMAP_STACK - .ifeq \for_rtas - li r11, MSR_KERNEL & ~(MSR_IR | MSR_RI) /* can take DTLB miss */ - mtmsr r11 - isync - .endif subi r11, r1, INT_FRAME_SIZE /* use r1 if kernel */ -#else - tophys(r11,r1) /* use tophys(r1) if kernel */ - subi r11, r11, INT_FRAME_SIZE /* alloc exc. frame */ -#endif beq 1f mfspr r11,SPRN_SPRG_THREAD - tovirt_vmstack r11, r11 lwz r11,TASK_STACK-THREAD(r11) addi r11, r11, THREAD_SIZE - INT_FRAME_SIZE - tophys_novmstack r11, r11 1: + tophys_novmstack r11, r11 #ifdef CONFIG_VMAP_STACK mtcrf 0x7f, r11 bt 32 - THREAD_ALIGN_SHIFT, stack_overflow @@ -64,12 +53,11 @@ .endm .macro EXCEPTION_PROLOG_2 handle_dar_dsisr=0 -#if defined(CONFIG_VMAP_STACK) && defined(CONFIG_PPC_BOOK3S) -BEGIN_MMU_FTR_SECTION +#ifdef CONFIG_VMAP_STACK mtcr r10 -FTR_SECTION_ELSE - stw r10, _CCR(r11) -ALT_MMU_FTR_SECTION_END_IFSET(MMU_FTR_HPTE_TABLE) + li r10, MSR_KERNEL & ~(MSR_IR | MSR_RI) /* can take DTLB miss */ + mtmsr r10 + isync #else stw r10,_CCR(r11) /* save registers */ #endif @@ -77,11 +65,9 @@ ALT_MMU_FTR_SECTION_END_IFSET(MMU_FTR_HP stw r12,GPR12(r11) stw r9,GPR9(r11) stw r10,GPR10(r11) -#if defined(CONFIG_VMAP_STACK) && defined(CONFIG_PPC_BOOK3S) -BEGIN_MMU_FTR_SECTION +#ifdef CONFIG_VMAP_STACK mfcr r10 stw r10, _CCR(r11) -END_MMU_FTR_SECTION_IFSET(MMU_FTR_HPTE_TABLE) #endif mfspr r12,SPRN_SPRG_SCRATCH1 stw r12,GPR11(r11) @@ -97,11 +83,7 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_HPTE_T stw r10, _DSISR(r11) .endif lwz r9, SRR1(r12) -#if defined(CONFIG_VMAP_STACK) && defined(CONFIG_PPC_BOOK3S) -BEGIN_MMU_FTR_SECTION andi. r10, r9, MSR_PR -END_MMU_FTR_SECTION_IFSET(MMU_FTR_HPTE_TABLE) -#endif lwz r12, SRR0(r12) #else mfspr r12,SPRN_SRR0 @@ -328,7 +310,6 @@ label: #ifdef CONFIG_VMAP_STACK #ifdef CONFIG_SMP mfspr r11, SPRN_SPRG_THREAD - tovirt(r11, r11) lwz r11, TASK_CPU - THREAD(r11) slwi r11, r11, 3 addis r11, r11, emergency_ctx@ha