Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2497277pxb; Tue, 9 Mar 2021 04:11:37 -0800 (PST) X-Google-Smtp-Source: ABdhPJz6wGIM1OjWN0pAzIhmMKzgsc1iQpl1L4Mg5RQnD0QJ/a5BQFBpLeHWF9/JBZcvBLKmKS31 X-Received: by 2002:a05:6402:c88:: with SMTP id cm8mr3739195edb.62.1615291896752; Tue, 09 Mar 2021 04:11:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615291896; cv=none; d=google.com; s=arc-20160816; b=MFM8fR7sslKngkTywn1U0lixCqqVUYnKr4YoxjweewXVWEX51woI+nZGEIqf2OdypD +m3sMNMTbD0GxLZNf7r+mqacEXzF4Hj8RMCT3TpS/0w0WITEaDtKChNpxFrWMTyCUEVY y3LICiWg3qH4lzANflleIvnhRS1i0+YYeNODDAuE88Na0MyqpdokvfNxEAsj7lnjEihN Z8TLk3dC4vI9wodYOgpW+66RURGZVnE0F/Y4DBiWrIx1EA1O+FfVzNJ4Pq3NzdkrIRFu 9qHjlRoxepczmykZHXswMZSG6NCrmra9tfhyuUNkltgX8miWLPWd7/FxzlRuKIHElYBS DsKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:cc:to:subject:from:references:in-reply-to :message-id; bh=RVEptK3/RJ56pjhawd1MWo2OOFH0V5iBhtt9YSEa0zA=; b=luplCYhbb7ro/qLaet3pPKvLbhjmaGR3PwgogmsHX267h3V+a0EY1mMQzE4Y1L+q1/ IVvPyoXVbAUPuRuDDG+9i/pD11pgkgpGhICustiIka3GxJ1IHeyuEz0SEBC76GXy5hyx huKz5B2eNdf6c2kyE2RgGFEPa8X2wgQRD6JIh9ZTaYZ9/RrnL6YktyEIJmGRZL+9l6EN tzpyu27BvUDUKQaTnEZfo997G54b2t0vNUzMJZ/G44+rg6N+CwMiM2ZT2mh//RBfFTlG iABi9CKZhu4X3ioeG03j4iGtP81Nk/H7G719albsHBuz2+Epj3AVU8Rzhj/y67MxyfMA zUvg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h6si8991522ejs.315.2021.03.09.04.11.13; Tue, 09 Mar 2021 04:11:36 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231376AbhCIMKS (ORCPT + 99 others); Tue, 9 Mar 2021 07:10:18 -0500 Received: from pegase1.c-s.fr ([93.17.236.30]:44292 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229544AbhCIMJn (ORCPT ); Tue, 9 Mar 2021 07:09:43 -0500 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 4DvvCS4Cd7z9tyjM; Tue, 9 Mar 2021 13:09:40 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id 8h_O7B2Hk1-I; Tue, 9 Mar 2021 13:09:40 +0100 (CET) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 4DvvCS2ZYNz9tyjJ; Tue, 9 Mar 2021 13:09:40 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 8DDF88B804; Tue, 9 Mar 2021 13:09:41 +0100 (CET) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id jfGAoJi_wQ5F; Tue, 9 Mar 2021 13:09:41 +0100 (CET) Received: from po16121vm.idsi0.si.c-s.fr (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 4B2598B800; Tue, 9 Mar 2021 13:09:41 +0100 (CET) Received: by po16121vm.idsi0.si.c-s.fr (Postfix, from userid 0) id 2EDA167555; Tue, 9 Mar 2021 12:09:41 +0000 (UTC) Message-Id: <08c13f1fad1d0a5aac22f37f2569aeb79acc7d2f.1615291472.git.christophe.leroy@csgroup.eu> In-Reply-To: References: From: Christophe Leroy Subject: [PATCH v2 15/43] powerpc/32: Tag DAR in EXCEPTION_PROLOG_2 for the 8xx To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , npiggin@gmail.com Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Date: Tue, 9 Mar 2021 12:09:41 +0000 (UTC) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 8xx requires to tag the DAR with a magic value in order to fixup DAR on faults generated by 'dcbX', as the 8xx forgets to update the DAR for those faults. Do the tagging as early as possible, that is before enabling MMU. Signed-off-by: Christophe Leroy --- arch/powerpc/kernel/head_32.h | 6 ++++++ arch/powerpc/kernel/head_8xx.S | 18 ++++++------------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/arch/powerpc/kernel/head_32.h b/arch/powerpc/kernel/head_32.h index 1b707755c68e..910f86642eec 100644 --- a/arch/powerpc/kernel/head_32.h +++ b/arch/powerpc/kernel/head_32.h @@ -57,6 +57,12 @@ .endm .macro EXCEPTION_PROLOG_2 handle_dar_dsisr=0 +#ifdef CONFIG_PPC_8xx + .if \handle_dar_dsisr + li r11, RPN_PATTERN + mtspr SPRN_DAR, r11 /* Tag DAR, to be used in DTLB Error */ + .endif +#endif LOAD_REG_IMMEDIATE(r11, MSR_KERNEL & ~(MSR_IR | MSR_RI)) /* can take DTLB miss */ mtmsr r11 isync diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S index 792e2fd86479..cdbfa9d41353 100644 --- a/arch/powerpc/kernel/head_8xx.S +++ b/arch/powerpc/kernel/head_8xx.S @@ -30,6 +30,12 @@ #include #include +/* + * Value for the bits that have fixed value in RPN entries. + * Also used for tagging DAR for DTLBerror. + */ +#define RPN_PATTERN 0x00f0 + #include "head_32.h" .macro compare_to_kernel_boundary scratch, addr @@ -42,12 +48,6 @@ #endif .endm -/* - * Value for the bits that have fixed value in RPN entries. - * Also used for tagging DAR for DTLBerror. - */ -#define RPN_PATTERN 0x00f0 - #define PAGE_SHIFT_512K 19 #define PAGE_SHIFT_8M 23 @@ -124,8 +124,6 @@ instruction_counter: . = 0x200 MachineCheck: EXCEPTION_PROLOG handle_dar_dsisr=1 - li r6, RPN_PATTERN - mtspr SPRN_DAR, r6 /* Tag DAR, to be used in DTLB Error */ addi r3,r1,STACK_FRAME_OVERHEAD EXC_XFER_STD(0x200, machine_check_exception) @@ -136,8 +134,6 @@ MachineCheck: . = 0x600 Alignment: EXCEPTION_PROLOG handle_dar_dsisr=1 - li r6, RPN_PATTERN - mtspr SPRN_DAR, r6 /* Tag DAR, to be used in DTLB Error */ addi r3,r1,STACK_FRAME_OVERHEAD b .Lalignment_exception_ool @@ -331,8 +327,6 @@ DataTLBError: cmpwi cr1, r11, RPN_PATTERN beq- cr1, FixupDAR /* must be a buggy dcbX, icbi insn. */ DARFixed:/* Return from dcbx instruction bug workaround */ - li r11, RPN_PATTERN - mtspr SPRN_DAR, r11 /* Tag DAR, to be used in DTLB Error */ EXCEPTION_PROLOG_1 EXCEPTION_PROLOG_2 handle_dar_dsisr=1 lwz r4, _DAR(r11) -- 2.25.0