Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1214358pxf; Fri, 12 Mar 2021 04:54:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJztAs7K/qoSnl0GdmM3aHVBgsk9NRinQ0MMrPH0tQNT/MDs+lce0WFcjpWJqL6bV4o0h6N9 X-Received: by 2002:a50:e0c3:: with SMTP id j3mr14301265edl.32.1615553675216; Fri, 12 Mar 2021 04:54:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615553675; cv=none; d=google.com; s=arc-20160816; b=iiVRngC1/qcnDFI++1FCN5r1p66C7rwM96L3b+H+BOAq29npjQwY9Iy/PtIlTFs2ZI rsXfPmlCcJdBu2S5CzecF8FYAbJA10fxJ5jNOef+4VLObDq789dSG/xZMbRnzp49wFZf 0i7TtjCKS5LXEvm4JZXxlLQ6yB0W6dL4H58aSdkoVIQuGiMxPEXrFmBbaVbwO83PrpC0 gIM98fK1tcZg1WDkmdxizaeHtG3uV7u6fli8O4PcIRa5tKQchUaCaZDujllWHA9jV2A2 2LKedfsK0vKtHA9RHSbQk6KbGvY/HcET/S+1V2NfOvP2B7doKNyIdTpCP8nRvgBhNkw0 zj3A== 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=GwxnZfRD4wMb+EYxmstluTbpKe4/o1/qUi3ulmK3xtu3hOJFEw/42581WFNagkYi+4 1Q0ZfMP27S0tsrHQLFSeGgovydLPqDv6Eq9SYCAJLtUqvnCx9xgo1RJpuqOAt39vWGjD vaAklHw4kNox5gCRrq5uVu1ritLzVZrnyUUUzxAivrci1s9eEXBCdu35FhyyeYQSVRlW lYSZZX629Vd5xdrKCUb4K8Y3ga9+29hO3i81oU8pswa8RU7ElIuhFAYOSybzqGsLxx29 p8fGOG+s8ihcxiGM2r72vXMCxBOGYX20qbj7WMWpighmO4Yv5tJAjrj9YLyZTkCiATXX QztQ== 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 j7si3945537ejc.237.2021.03.12.04.54.12; Fri, 12 Mar 2021 04:54:35 -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 S232165AbhCLMvD (ORCPT + 99 others); Fri, 12 Mar 2021 07:51:03 -0500 Received: from pegase1.c-s.fr ([93.17.236.30]:37656 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231450AbhCLMuZ (ORCPT ); Fri, 12 Mar 2021 07:50:25 -0500 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 4Dxlz33dg6z9ttBY; Fri, 12 Mar 2021 13:50:23 +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 qVegsku802Fl; Fri, 12 Mar 2021 13:50:23 +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 4Dxlz32VBqz9ttBL; Fri, 12 Mar 2021 13:50:23 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 54FD18B812; Fri, 12 Mar 2021 13:50:24 +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 DiTfJERopCVu; Fri, 12 Mar 2021 13:50:24 +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 1AA548B764; Fri, 12 Mar 2021 13:50:24 +0100 (CET) Received: by po16121vm.idsi0.si.c-s.fr (Postfix, from userid 0) id E407B675C9; Fri, 12 Mar 2021 12:50:23 +0000 (UTC) Message-Id: <853a2e28ca7c5fc85617037030f99fe6070c9536.1615552867.git.christophe.leroy@csgroup.eu> In-Reply-To: References: From: Christophe Leroy Subject: [PATCH v3 14/41] 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: Fri, 12 Mar 2021 12:50:23 +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