From patchwork Tue Mar 29 17:06:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Pierre-Cl=C3=A9ment_Tosi?= X-Patchwork-Id: 1610770 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256 header.s=20210112 header.b=kAbYm0oa; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KSbZW3cTxz9sGB for ; Wed, 30 Mar 2022 04:06:43 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 2D51183D0C; Tue, 29 Mar 2022 19:06:39 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="kAbYm0oa"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 9BABA83F91; Tue, 29 Mar 2022 19:06:37 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wm1-x349.google.com (mail-wm1-x349.google.com [IPv6:2a00:1450:4864:20::349]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 2385E83986 for ; Tue, 29 Mar 2022 19:06:35 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=3mjxDYgUKBjkkojndbjjbgZ.Xjhp-Wjjogdnon.YZis.YZ@flex--ptosi.bounces.google.com Received: by mail-wm1-x349.google.com with SMTP id i65-20020a1c3b44000000b00385c3f3defaso7022615wma.3 for ; Tue, 29 Mar 2022 10:06:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:message-id:mime-version:subject:from:to:cc :content-transfer-encoding; bh=csfoVqIP6aadDxoXqDVb7KBxRi2nAAyZXmJEMDtKoJw=; b=kAbYm0oaThLCMQchp/5SEOOnWXTDOkfIj7MppatiIxt3tUe4c3oaVVWexVBgyXl9w+ gnap+l/h8bCYdbX4fiN8Zhgm95xpmgfTE2zLrKS+2TTVKptX7rrpBNIpI0SrEryyLqkX MTHQgsr9ivUnIpyOdZjY2kGgyJvDHrQOzrSg1/zg2kAtHwRO6As/WBgBmnI6SiyRemzP gy8pOvjo8Hfmnmni1owH6FY2ZrFeiK0+hajI+OnUh56NXK7JI83Ak2GxykJo/kFzRrl+ 3YbmSxWj1uudo2lJE+ozEDZdJWt/8qP9okEdoeKdq5fN47D5fwy5DRye0VRmmSTo5GGI 1Mbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc :content-transfer-encoding; bh=csfoVqIP6aadDxoXqDVb7KBxRi2nAAyZXmJEMDtKoJw=; b=N2F9M3QH7ugLJR9lBdXLpP1v8cVuglBLRu2rMj60xFfjbVBD6WHzV6IVE8rOvXg6Rx OJPZfxx40Ixx2RyQAqpsEIHYo2e0uo1FZfBUTA/0Goi6KpiM5Ohph9+YgoYiUKdJxg8M ifoJh5AzSx8qczLHH495u0g8qYJ8iqgZziC+kVUFGt6M/O+B6k4Gxpi05o0UtCCtJc+H eBrrS8zoIEUNXMk+kqoHFvyZk5D0MyKh5/av+AlCvBKKYotjo3kPenNeHtwkJkcuZJKy RiBsd+zCFZwnDCjbSXl6eyySS8f0BQSC4f08oPQhjUNEft3hF3OezNXp+3MpGs+AJUnL umXA== X-Gm-Message-State: AOAM532xLvq+aCn0urbqhajxOxLeCpTLrT9sxYmxPnupQtKO5ODitb02 PnMwWS06GYBvTRTrDPLATC5PSOQ+TnO4Q4mXxx/j6AWRfIL7h5zmGCMoWreI7KZYcik0OzIdcB0 5T3DL4mYZfbcJKPNa9cphIxHQLHzt/0Px9vTShqpKI1pC0jrBokudqwIq X-Google-Smtp-Source: ABdhPJy6bJ41kE+M1J2b8uCp8kDLPIYrQTDVL+0De4uhTI7H5ZGoX9afZB1vtN6jzt5aj4NOpf/asY8gJg== X-Received: from ptosi1.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:afb]) (user=ptosi job=sendgmr) by 2002:a1c:2544:0:b0:381:18a:a46d with SMTP id l65-20020a1c2544000000b00381018aa46dmr253270wml.26.1648573594408; Tue, 29 Mar 2022 10:06:34 -0700 (PDT) Date: Tue, 29 Mar 2022 18:06:05 +0100 Message-Id: <20220329170607.689006-1-ptosi@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.35.1.1021.g381101b075-goog Subject: [PATCH 1/3] armv8: Include in mmu.h From: " =?utf-8?q?Pierre-Cl=C3=A9ment_Tosi?= " To: u-boot@lists.denx.de Cc: " =?utf-8?q?Pierre-Cl=C3=A9ment_Tosi?= " , Tom Rini , York Sun X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean Import missing definition of type u64. Fixes: 22932ffc03e5 ("ARMv8: Adjust MMU setup") Signed-off-by: Pierre-Clément Tosi Cc: Tom Rini Cc: York Sun --- arch/arm/include/asm/armv8/mmu.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm/include/asm/armv8/mmu.h b/arch/arm/include/asm/armv8/mmu.h index fc97c55114..517300e566 100644 --- a/arch/arm/include/asm/armv8/mmu.h +++ b/arch/arm/include/asm/armv8/mmu.h @@ -104,6 +104,9 @@ #define TCR_EL3_RSVD (1 << 31 | 1 << 23) #ifndef __ASSEMBLY__ + +#include + static inline void set_ttbr_tcr_mair(int el, u64 table, u64 tcr, u64 attr) { asm volatile("dsb sy"); From patchwork Tue Mar 29 17:06:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Pierre-Cl=C3=A9ment_Tosi?= X-Patchwork-Id: 1610771 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256 header.s=20210112 header.b=buvFQ3OS; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KSbZv0hM2z9t25 for ; Wed, 30 Mar 2022 04:07:02 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id B3FBB84016; Tue, 29 Mar 2022 19:06:58 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="buvFQ3OS"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id CBB7A84017; Tue, 29 Mar 2022 19:06:56 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wm1-x349.google.com (mail-wm1-x349.google.com [IPv6:2a00:1450:4864:20::349]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id E313C84016 for ; Tue, 29 Mar 2022 19:06:53 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=3rTxDYgUKBkw3726wu22uzs.q208-p227zw676.rs1B.rs@flex--ptosi.bounces.google.com Received: by mail-wm1-x349.google.com with SMTP id i6-20020a1c5406000000b0038c97ed0db5so7015928wmb.7 for ; Tue, 29 Mar 2022 10:06:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc:content-transfer-encoding; bh=uNdpv93ZOKeM05uopptX4tTdtQhIa8jnAgdHb/7cg50=; b=buvFQ3OShdhtJr+Kt/uxaX4xG6gBR7L2NpDgWSD9HdbAf/GIZ0xuxn3sqNcbZdQ7Hu duy2+voii4wcrcvhDVHgXayg+egRIjNghCo+EWCjd5KyO/XSFwByXi6BMEG5ob8DZLV3 jb2NEFSxYhMjWZJzd7o1GIFNJ3bThelOxICBRFvmYXo9ogO6J0qL+x8Rqfpl0q2MWwee ayfuI4+25iw6yh24WUKoTNdkIu/Ls1MJ7Ml0Zs93IpoUzOvHp/1sQ/bJmUdb2k40hXEJ QNSbTL15Xm8Dfl422n6r7hgoTUVYgUx5UM8ZoLQGElNBSLOVHmUICBAG8M2RJG9/1W4v c9SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc:content-transfer-encoding; bh=uNdpv93ZOKeM05uopptX4tTdtQhIa8jnAgdHb/7cg50=; b=eZg04iH1zLOZrqom89g7lsWoqirnd5sGDQhSDfT6rveShkdJvAj6OJN2rAh5z2MHK+ 2Rx5nJlOKo9S9DBu/f02oYaI1H7beMMnwhmWbHfYJox3lN4u2AkjuPg+6rmb0QkpsHCZ Kj11X4WzMb+c5rfPgYOPM3TOV9Ow8jVUz1/GBMuzFzQiwihFgLwZ3xFALYHZcICIK9c0 YikbO3JwODLBeTw9KQ+NKT7q1GFSl73sU9CT2KM1iZNcKnv2fQ8GFWQMXlMwJ5kWa6br SineqLGmfTpftbJEXjJ1blOAui9tsuj+wzUmKmuLp7ONM0vmLEBNPt0zbbsMORIo9R7H J3dA== X-Gm-Message-State: AOAM533LvyQZ/vezkTNETRncSYWQVRDQHnFMnGFcBpnr+9RI2qZSR2ZY vT3oYJXusPkqI5hrxNx0RmzZHVCP3vtBqneoLp1Q64N7SVffxVQpjXeUf5juzK18Jv0kwX10sci 1OULA5ajaXI3QQllPkYKRJgs9T8d+bBLxmegwkhC95qRZVhrH6XYx+puy X-Google-Smtp-Source: ABdhPJwKAMYOq97VUhAzy1hPzLFnVSZfWUvjQaASyBi4HdRAV2Pg0ywVXwwHxI7R5hUDLvM+Bt6jPMX3qw== X-Received: from ptosi1.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:afb]) (user=ptosi job=sendgmr) by 2002:a1c:4e18:0:b0:38c:bd8d:6bd9 with SMTP id g24-20020a1c4e18000000b0038cbd8d6bd9mr218423wmh.94.1648573613405; Tue, 29 Mar 2022 10:06:53 -0700 (PDT) Date: Tue, 29 Mar 2022 18:06:06 +0100 In-Reply-To: <20220329170607.689006-1-ptosi@google.com> Message-Id: <20220329170607.689006-2-ptosi@google.com> Mime-Version: 1.0 References: <20220329170607.689006-1-ptosi@google.com> X-Mailer: git-send-email 2.35.1.1021.g381101b075-goog Subject: [PATCH 2/3] armv8: Drop support for non-MEMORY_ATTRIBUTES MAIR From: " =?utf-8?q?Pierre-Cl=C3=A9ment_Tosi?= " To: u-boot@lists.denx.de Cc: " =?utf-8?q?Pierre-Cl=C3=A9ment_Tosi?= " , Tom Rini , Patrick Delaunay , Patrice Chotard X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean Remove the ability for caller code to set MAIR through set_ttbr_tcr_mair() as that doesn't seem to be used nor necessary given that the register is typically initialized once to a compile-time constant, MEMORY_ATTRIBUTES, to be used by the hardware as a byte array to be indexed through the 3-bit attribute entry in PTEs (see MT_NORMAL and MT_DEVICE_*). As those attribute offsets are themselves CPP macros, it is very unlikely for U-Boot to start dynamically defining the value of MAIR at runtime. For now, keep setting the register from within the function so that no functional change should be expected. Signed-off-by: Pierre-Clément Tosi Cc: Tom Rini Cc: Patrick Delaunay Cc: Patrice Chotard --- arch/arm/cpu/armv8/cache_v8.c | 3 +-- arch/arm/cpu/armv8/fsl-layerscape/cpu.c | 9 +++------ arch/arm/include/asm/armv8/mmu.h | 4 +++- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/arch/arm/cpu/armv8/cache_v8.c b/arch/arm/cpu/armv8/cache_v8.c index 3de18c7675..b91b61713e 100644 --- a/arch/arm/cpu/armv8/cache_v8.c +++ b/arch/arm/cpu/armv8/cache_v8.c @@ -415,8 +415,7 @@ __weak void mmu_setup(void) setup_all_pgtables(); el = current_el(); - set_ttbr_tcr_mair(el, gd->arch.tlb_addr, get_tcr(el, NULL, NULL), - MEMORY_ATTRIBUTES); + set_ttbr_tcr(el, gd->arch.tlb_addr, get_tcr(el, NULL, NULL)); /* enable the mmu */ set_sctlr(get_sctlr() | CR_M); diff --git a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c index 2ded3e4efc..5917058fa1 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/cpu.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/cpu.c @@ -451,10 +451,8 @@ static inline void early_mmu_setup(void) setup_pgtables(); /* point TTBR to the new table */ - set_ttbr_tcr_mair(el, gd->arch.tlb_addr, - get_tcr(el, NULL, NULL) & - ~(TCR_ORGN_MASK | TCR_IRGN_MASK), - MEMORY_ATTRIBUTES); + set_ttbr_tcr(el, gd->arch.tlb_addr, get_tcr(el, NULL, NULL) + & ~(TCR_ORGN_MASK | TCR_IRGN_MASK)); set_sctlr(get_sctlr() | CR_M); } @@ -607,8 +605,7 @@ static inline void final_mmu_setup(void) invalidate_icache_all(); /* point TTBR to the new table */ - set_ttbr_tcr_mair(el, gd->arch.tlb_addr, get_tcr(el, NULL, NULL), - MEMORY_ATTRIBUTES); + set_ttbr_tcr(el, gd->arch.tlb_addr, get_tcr(el, NULL, NULL)); set_sctlr(get_sctlr() | CR_M); } diff --git a/arch/arm/include/asm/armv8/mmu.h b/arch/arm/include/asm/armv8/mmu.h index 517300e566..7c17c06e98 100644 --- a/arch/arm/include/asm/armv8/mmu.h +++ b/arch/arm/include/asm/armv8/mmu.h @@ -107,8 +107,10 @@ #include -static inline void set_ttbr_tcr_mair(int el, u64 table, u64 tcr, u64 attr) +static inline void set_ttbr_tcr(int el, u64 table, u64 tcr) { + const u64 attr = MEMORY_ATTRIBUTES; + asm volatile("dsb sy"); if (el == 1) { asm volatile("msr ttbr0_el1, %0" : : "r" (table) : "memory"); From patchwork Tue Mar 29 17:06:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Pierre-Cl=C3=A9ment_Tosi?= X-Patchwork-Id: 1610772 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256 header.s=20210112 header.b=QrkXisaj; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KSbbC0TK6z9sDX for ; Wed, 30 Mar 2022 04:07:16 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id A6CA284040; Tue, 29 Mar 2022 19:07:13 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="QrkXisaj"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 3E93283D0C; Tue, 29 Mar 2022 19:07:12 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wm1-x349.google.com (mail-wm1-x349.google.com [IPv6:2a00:1450:4864:20::349]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id A16B684040 for ; Tue, 29 Mar 2022 19:07:08 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=3uzxDYgUKBloHLGKA8GG8D6.4GEM-3GGLDAKLK.56FP.56@flex--ptosi.bounces.google.com Received: by mail-wm1-x349.google.com with SMTP id m185-20020a1c26c2000000b0038c9e1197f6so2171775wmm.4 for ; Tue, 29 Mar 2022 10:07:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc:content-transfer-encoding; bh=wAT+9YjQAHxTzG55HVtLUbPsGeSGcCaJnPni0s3GEJk=; b=QrkXisajBiG/3XIg2yR+O8YqwOepJYKD6woRCgpf5vGRydgQU+2aLcaxN5pPV2k5NJ rkB1TaVg7DJvtLefDdohpMI1QU4C2DNOrIMka99QTpcOvhX/61hScxJlAkEiVqclwvxP D3OudLbq+Qvxju7xgYUPdbYQUWIgbEVvEk2lSl5EGAuxbHhUqxuobw0BlOpQpW4oFmFH MTrObHBPMKRS9cZjIcxrCC0Kcxy29y7RCzo1l7JhFJBKe13fS5FcApUH9TAMdoP1f08P ftiZIqShsEkxQ9Y7M1lejMaiuJyXNV0WZa2ULU9pFNKd3gPpgGrIIZHpaDf80L94E3sh eulA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc:content-transfer-encoding; bh=wAT+9YjQAHxTzG55HVtLUbPsGeSGcCaJnPni0s3GEJk=; b=o4Qsth74M/94bj6575iAF95mp1zlgVTiwqD1VRICufrivwUmJzBQFuHCl32xjy1kcr 84aj7ri+RaVKaO3taiebb0VaTf9sw95vClxrh1yfSkUXjvd7kw3xcsP3b8URMnOjbdv+ 4MveDK39nHtXk+6B9b9FmVElR60fhfoOBdOJ0UG6TsUXvgUrMqBXRRiz8h02jmD7h3M9 UFdkYyh0y43CgwEc+Jk48fKpX59oyTZtaMI1xOmGm0fi485WLWt0TgGckLUUj7ez/eUW akAiRArXdjCRUR+CxcJvZejBEtVbaLL++4XOfhudwRCrbQNbVE30DMCrU/DoFW3C6MdQ rnKA== X-Gm-Message-State: AOAM532SpGhZqNFaQqKrK0eHNxWxzcDLKqLilnkN8by6Q7lmJIQsLQmQ 7VnmcOVZm4V8HdXK+fSuPsQteSpjqWSNhuqV66xRs6jwRKEpT08ws0UDUvmghqkc7DSkA7+Sq2z jZY8TgnuUEdZrROah8nRAIQuHP/D7EdkANE+FGYvU64VI87o6AqpNXevY X-Google-Smtp-Source: ABdhPJy3YTPubSmo6Lu3A2jLtGiU26xd3OAmKlrxqEnrqONSfaZjOQ3Xzy4wPcOS2KXLruh0ZcwpOsrjaQ== X-Received: from ptosi1.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:afb]) (user=ptosi job=sendgmr) by 2002:a05:600c:3c89:b0:37f:aacb:cac7 with SMTP id bg9-20020a05600c3c8900b0037faacbcac7mr184704wmb.1.1648573627785; Tue, 29 Mar 2022 10:07:07 -0700 (PDT) Date: Tue, 29 Mar 2022 18:06:07 +0100 In-Reply-To: <20220329170607.689006-1-ptosi@google.com> Message-Id: <20220329170607.689006-3-ptosi@google.com> Mime-Version: 1.0 References: <20220329170607.689006-1-ptosi@google.com> X-Mailer: git-send-email 2.35.1.1021.g381101b075-goog Subject: [PATCH 3/3] armv8: Initialize MAIR in early boot From: " =?utf-8?q?Pierre-Cl=C3=A9ment_Tosi?= " To: u-boot@lists.denx.de Cc: " =?utf-8?q?Pierre-Cl=C3=A9ment_Tosi?= " , Tom Rini X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean As the register is initialized to a constant value, it can be set at any point before the MMU has been enabled. Instead of waiting until the very last moment to do so, initialize it during early boot, when we initialize other system registers. This ensures it is valid at any point once the C runtime is up. Signed-off-by: Pierre-Clément Tosi Cc: Tom Rini --- arch/arm/cpu/armv8/Kconfig | 6 ++++++ arch/arm/cpu/armv8/start.S | 12 ++++++++++++ arch/arm/include/asm/armv8/mmu.h | 5 ----- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/arch/arm/cpu/armv8/Kconfig b/arch/arm/cpu/armv8/Kconfig index 9967376eca..efb451e9a5 100644 --- a/arch/arm/cpu/armv8/Kconfig +++ b/arch/arm/cpu/armv8/Kconfig @@ -31,6 +31,12 @@ config ARMV8_SET_SMPEN it can be safely enabled when EL2/EL3 initialized SMPEN bit or when CPU implementation doesn't include that register. +config ARMV8_SET_MAIR + bool "Initialize the MAIR to its constant value out of boot" + default y if !SYS_DISABLE_DCACHE_OPS + help + Say Y here to set MAIR_ELx (MEMORY_ATTRIBUTES), needed by the MMU. + config ARMV8_SPIN_TABLE bool "Support spin-table enable method" depends on ARMV8_MULTIENTRY && OF_LIBFDT diff --git a/arch/arm/cpu/armv8/start.S b/arch/arm/cpu/armv8/start.S index 91b00a46cc..dca58922c1 100644 --- a/arch/arm/cpu/armv8/start.S +++ b/arch/arm/cpu/armv8/start.S @@ -135,6 +135,18 @@ pie_fixup_done: msr cpacr_el1, x0 /* Enable FP/SIMD */ 0: +#ifdef CONFIG_ARMV8_SET_MAIR + ldr x2, =(MEMORY_ATTRIBUTES) + switch_el x1, 3f, 2f, 1f + b 0f +3: msr mair_el3, x2 + b 0f +2: msr mair_el2, x2 + b 0f +1: msr mair_el1, x2 +0: +#endif + #ifdef COUNTER_FREQUENCY branch_if_not_highest_el x0, 4f ldr x0, =COUNTER_FREQUENCY diff --git a/arch/arm/include/asm/armv8/mmu.h b/arch/arm/include/asm/armv8/mmu.h index 7c17c06e98..c9fbfcaed2 100644 --- a/arch/arm/include/asm/armv8/mmu.h +++ b/arch/arm/include/asm/armv8/mmu.h @@ -109,21 +109,16 @@ static inline void set_ttbr_tcr(int el, u64 table, u64 tcr) { - const u64 attr = MEMORY_ATTRIBUTES; - asm volatile("dsb sy"); if (el == 1) { asm volatile("msr ttbr0_el1, %0" : : "r" (table) : "memory"); asm volatile("msr tcr_el1, %0" : : "r" (tcr) : "memory"); - asm volatile("msr mair_el1, %0" : : "r" (attr) : "memory"); } else if (el == 2) { asm volatile("msr ttbr0_el2, %0" : : "r" (table) : "memory"); asm volatile("msr tcr_el2, %0" : : "r" (tcr) : "memory"); - asm volatile("msr mair_el2, %0" : : "r" (attr) : "memory"); } else if (el == 3) { asm volatile("msr ttbr0_el3, %0" : : "r" (table) : "memory"); asm volatile("msr tcr_el3, %0" : : "r" (tcr) : "memory"); - asm volatile("msr mair_el3, %0" : : "r" (attr) : "memory"); } else { hang(); }