From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7FDBFC4321A for ; Wed, 20 Jan 2021 13:58:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5329623381 for ; Wed, 20 Jan 2021 13:58:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388838AbhATN6r (ORCPT ); Wed, 20 Jan 2021 08:58:47 -0500 Received: from mout.gmx.net ([212.227.15.15]:37119 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389844AbhATN3Z (ORCPT ); Wed, 20 Jan 2021 08:29:25 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1611149254; bh=s+ysOp4OcvfRllPUaGW+Vz2xQAyomqy7xIT6QOV4oaQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=OW+6blaI6lZsvDiIrRkXFfuhKpbCF1mPXlZZnWfPVeKtDA8PgS6JoUgi3XNRp25Xo KaB+oo1ozexSmGo8SRpjlv+tmoNDf3CUmbkB4MlSuwUDL4Vrwubj2jwUDztd0WHAwv fciCabDX/718a98oXRZ48K6t3sZRpRr+7KjnE3BM= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([83.204.192.78]) by mail.gmx.net (mrgmx004 [212.227.17.184]) with ESMTPSA (Nemesis) id 1MZTmO-1lYi5A0kBK-00WWzx; Wed, 20 Jan 2021 14:27:34 +0100 From: Mohamed Mediouni To: linux-arm-kernel@lists.infradead.org Cc: Catalin Marinas , Will Deacon , Mark Rutland , Marc Zyngier , Hector Martin , linux-kernel@vger.kernel.org, Mohamed Mediouni , Stan Skowronek Subject: [RFC PATCH 3/7] arm64: mm: use nGnRnE instead of nGnRE on Apple processors Date: Wed, 20 Jan 2021 14:27:13 +0100 Message-Id: <20210120132717.395873-4-mohamed.mediouni@caramail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210120132717.395873-1-mohamed.mediouni@caramail.com> References: <20210120132717.395873-1-mohamed.mediouni@caramail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:tgRN9ZZSe4I0G1AnOStUrLzlx9ePZFoTVM7kvlMbPu/L2SyFwd2 wVJoN+bOlH6NLGXNiegaSDh5m7jd1xuzbp3eGpZ2y9bfJVLBs/1kd6gq64kAGriYnH1zxgg 3n0lRknK/OWJeYjRcO2YOtv55SssMWh7o26n74OqFUiYwMSD4hjhSwZsx64N8PkVaMnJDge UpFJEdaabuc5buav1mjuA== X-UI-Out-Filterresults: notjunk:1;V03:K0:cvzZywDWErY=:y87grJtHm0+LLMwsB+ZsLA FQaQM0GBgeYTo2zySC2+7rX+N7JR8Z2G4x2vnkC2DGABO5aN44monBSOY5Tz3f0CYbv+KSAHC wgpKeKWhUUlhwce/w3dkuyQ+h2DMTugsn5tg9O8t/wwaoZDQt4S1YL19LON3R8FaGaEebcFA1 T8kD4LQjBvYh45z7HxMh3/N6BQLigNimFrhF/61U6swlP163sHAowwsN+fTOZOLr2zkefb8RZ ZX7ljnLxnniP3RfV9jQLVj2vl4GCcDs89CvWzXAj3iNxCkpinIyio0IZbhh5G3H3VqQ3I5juJ L77usap/mtCJS+Wlss2aBsOEoki9BCxIVpHm5p+0iUfrDAGcnlZyq2UsjgOHFQ+nkCozhBhnG mZztXr1na/R7I/mWIe6tNLbwe5KLb9Cn5cdS103mn+qZsvpTnfURS9YoOAUclJhJ2LvrpBU/+ HK+JgWusLCdqTZorPVgITAjtNSdAL7MsbNLtFYMDnY9DYUsqbN8ug44AuYxqPGRpmJPjowYJ9 lhiwm5Xihcg+xqil4Jk2nmZ8deBhGGzkP6OL2VVvilGS9txan80AVlHjroi0h/4EJ/r6htm29 kWHL/Nhc875N+O59EFm1+lUOhWGaV5iDUfLJzL7iobEH7FCKhNLWZH6qUp2t7IgtfpP3fOauz aZ3XmxivUFASM8urLjVfbgIBOyUihnkFbvlkPLlu9jSYcnp1Bm7/DQe0YLJnhLY1S14SN0wdS 1lFRMqLq3il1sBq4z0aHvoPx0EAHnXspuZqBJe393uCPggl5zKCjOkyQFsW0VmV7x10hAXYm9 esdzlvE7O5P/ZJwV6EM0THsYz5q0qix4VFUfDuTXwVZmT4cFAR+yS2GXYdi0dLWip3gpjd9QX yYIsUxiArBl26aqG5p42QDt/DImVR9J5Amb1E+HOA= Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use nGnRnE instead of nGnRE on Apple SoCs to workaround a serious hardware= quirk. On Apple processors, writes using the nGnRE device memory type get dropped= in flight, getting to nowhere. Signed-off-by: Stan Skowronek Signed-off-by: Mohamed Mediouni =2D-- arch/arm64/mm/proc.S | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S index 1f7ee8c8b7b8..06436916f137 100644 =2D-- a/arch/arm64/mm/proc.S +++ b/arch/arm64/mm/proc.S @@ -51,6 +51,25 @@ #define TCR_KASAN_HW_FLAGS 0 #endif +#ifdef CONFIG_ARCH_APPLE + +/* + * Apple cores appear to black-hole writes done with nGnRE. + * We settled on a work-around that uses MAIR vs changing every single us= er of + * nGnRE across the arm64 code. + */ + +#define MAIR_EL1_SET_APPLE \ + (MAIR_ATTRIDX(MAIR_ATTR_DEVICE_nGnRnE, MT_DEVICE_nGnRnE) | \ + MAIR_ATTRIDX(MAIR_ATTR_DEVICE_nGnRnE, MT_DEVICE_nGnRE) | \ + MAIR_ATTRIDX(MAIR_ATTR_DEVICE_GRE, MT_DEVICE_GRE) | \ + MAIR_ATTRIDX(MAIR_ATTR_NORMAL_NC, MT_NORMAL_NC) | \ + MAIR_ATTRIDX(MAIR_ATTR_NORMAL, MT_NORMAL) | \ + MAIR_ATTRIDX(MAIR_ATTR_NORMAL_WT, MT_NORMAL_WT) | \ + MAIR_ATTRIDX(MAIR_ATTR_NORMAL, MT_NORMAL_TAGGED)) + +#endif + /* * Default MAIR_EL1. MT_NORMAL_TAGGED is initially mapped as Normal memor= y and * changed during __cpu_setup to Normal Tagged if the system supports MTE= . @@ -432,6 +451,13 @@ SYM_FUNC_START(__cpu_setup) * Memory region attributes */ mov_q x5, MAIR_EL1_SET +#ifdef CONFIG_ARCH_APPLE + mrs x0, MIDR_EL1 + lsr w0, w0, #24 + mov_q x1, MAIR_EL1_SET_APPLE + cmp x0, #0x61 // 0x61 =3D Implementer: Apple + csel x5, x1, x5, eq +#endif #ifdef CONFIG_ARM64_MTE mte_tcr .req x20 =2D- 2.29.2 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4CE50C433E0 for ; Wed, 20 Jan 2021 13:29:45 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 93E3D23380 for ; Wed, 20 Jan 2021 13:29:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 93E3D23380 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=caramail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ma2XFcuWxTexTrRNJAJwr/QXhkr2YMId4s57PM3oBHA=; b=VrutYXPVPR1vs3LkB0P1QB2Av uEg75tT1hVHx5FmMX2T1u+xSJEhn0Kdvdk0I0e2HztFxlNg/7WDVblE3Snc2N3KSMXkd2IeA8GEq6 mbw6z+jzpipsPYHWpiLKpnYxKCb2LlqYcULkm9icQuYz+yppNoLL5SFZ710/+mVnrNQokFI5wtPnN rWzTaek9+YVOocFOiJ7ssmu1IxMTxqetkx7AitJoBXSSIObhxZ1V5IIfY/VRoKTobQQrVktZexEER Ex0NNq70tRZxmuvgOhYbmjqbUAOwl2AGrp5PcVHXy+bv0ZT7jMk8Nq1JhDINkhnyVSp5vmZrAgb/J cgqACioBw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l2DWd-0004hd-Kn; Wed, 20 Jan 2021 13:27:55 +0000 Received: from mout.gmx.net ([212.227.15.15]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l2DWU-0004dx-Cf for linux-arm-kernel@lists.infradead.org; Wed, 20 Jan 2021 13:27:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1611149254; bh=s+ysOp4OcvfRllPUaGW+Vz2xQAyomqy7xIT6QOV4oaQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=OW+6blaI6lZsvDiIrRkXFfuhKpbCF1mPXlZZnWfPVeKtDA8PgS6JoUgi3XNRp25Xo KaB+oo1ozexSmGo8SRpjlv+tmoNDf3CUmbkB4MlSuwUDL4Vrwubj2jwUDztd0WHAwv fciCabDX/718a98oXRZ48K6t3sZRpRr+7KjnE3BM= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([83.204.192.78]) by mail.gmx.net (mrgmx004 [212.227.17.184]) with ESMTPSA (Nemesis) id 1MZTmO-1lYi5A0kBK-00WWzx; Wed, 20 Jan 2021 14:27:34 +0100 From: Mohamed Mediouni To: linux-arm-kernel@lists.infradead.org Subject: [RFC PATCH 3/7] arm64: mm: use nGnRnE instead of nGnRE on Apple processors Date: Wed, 20 Jan 2021 14:27:13 +0100 Message-Id: <20210120132717.395873-4-mohamed.mediouni@caramail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210120132717.395873-1-mohamed.mediouni@caramail.com> References: <20210120132717.395873-1-mohamed.mediouni@caramail.com> MIME-Version: 1.0 X-Provags-ID: V03:K1:tgRN9ZZSe4I0G1AnOStUrLzlx9ePZFoTVM7kvlMbPu/L2SyFwd2 wVJoN+bOlH6NLGXNiegaSDh5m7jd1xuzbp3eGpZ2y9bfJVLBs/1kd6gq64kAGriYnH1zxgg 3n0lRknK/OWJeYjRcO2YOtv55SssMWh7o26n74OqFUiYwMSD4hjhSwZsx64N8PkVaMnJDge UpFJEdaabuc5buav1mjuA== X-UI-Out-Filterresults: notjunk:1;V03:K0:cvzZywDWErY=:y87grJtHm0+LLMwsB+ZsLA FQaQM0GBgeYTo2zySC2+7rX+N7JR8Z2G4x2vnkC2DGABO5aN44monBSOY5Tz3f0CYbv+KSAHC wgpKeKWhUUlhwce/w3dkuyQ+h2DMTugsn5tg9O8t/wwaoZDQt4S1YL19LON3R8FaGaEebcFA1 T8kD4LQjBvYh45z7HxMh3/N6BQLigNimFrhF/61U6swlP163sHAowwsN+fTOZOLr2zkefb8RZ ZX7ljnLxnniP3RfV9jQLVj2vl4GCcDs89CvWzXAj3iNxCkpinIyio0IZbhh5G3H3VqQ3I5juJ L77usap/mtCJS+Wlss2aBsOEoki9BCxIVpHm5p+0iUfrDAGcnlZyq2UsjgOHFQ+nkCozhBhnG mZztXr1na/R7I/mWIe6tNLbwe5KLb9Cn5cdS103mn+qZsvpTnfURS9YoOAUclJhJ2LvrpBU/+ HK+JgWusLCdqTZorPVgITAjtNSdAL7MsbNLtFYMDnY9DYUsqbN8ug44AuYxqPGRpmJPjowYJ9 lhiwm5Xihcg+xqil4Jk2nmZ8deBhGGzkP6OL2VVvilGS9txan80AVlHjroi0h/4EJ/r6htm29 kWHL/Nhc875N+O59EFm1+lUOhWGaV5iDUfLJzL7iobEH7FCKhNLWZH6qUp2t7IgtfpP3fOauz aZ3XmxivUFASM8urLjVfbgIBOyUihnkFbvlkPLlu9jSYcnp1Bm7/DQe0YLJnhLY1S14SN0wdS 1lFRMqLq3il1sBq4z0aHvoPx0EAHnXspuZqBJe393uCPggl5zKCjOkyQFsW0VmV7x10hAXYm9 esdzlvE7O5P/ZJwV6EM0THsYz5q0qix4VFUfDuTXwVZmT4cFAR+yS2GXYdi0dLWip3gpjd9QX yYIsUxiArBl26aqG5p42QDt/DImVR9J5Amb1E+HOA= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210120_082746_878224_34B1A1B1 X-CRM114-Status: GOOD ( 11.33 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Catalin Marinas , Hector Martin , linux-kernel@vger.kernel.org, Marc Zyngier , Mohamed Mediouni , Will Deacon , Stan Skowronek Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Use nGnRnE instead of nGnRE on Apple SoCs to workaround a serious hardware quirk. On Apple processors, writes using the nGnRE device memory type get dropped in flight, getting to nowhere. Signed-off-by: Stan Skowronek Signed-off-by: Mohamed Mediouni --- arch/arm64/mm/proc.S | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S index 1f7ee8c8b7b8..06436916f137 100644 --- a/arch/arm64/mm/proc.S +++ b/arch/arm64/mm/proc.S @@ -51,6 +51,25 @@ #define TCR_KASAN_HW_FLAGS 0 #endif +#ifdef CONFIG_ARCH_APPLE + +/* + * Apple cores appear to black-hole writes done with nGnRE. + * We settled on a work-around that uses MAIR vs changing every single user of + * nGnRE across the arm64 code. + */ + +#define MAIR_EL1_SET_APPLE \ + (MAIR_ATTRIDX(MAIR_ATTR_DEVICE_nGnRnE, MT_DEVICE_nGnRnE) | \ + MAIR_ATTRIDX(MAIR_ATTR_DEVICE_nGnRnE, MT_DEVICE_nGnRE) | \ + MAIR_ATTRIDX(MAIR_ATTR_DEVICE_GRE, MT_DEVICE_GRE) | \ + MAIR_ATTRIDX(MAIR_ATTR_NORMAL_NC, MT_NORMAL_NC) | \ + MAIR_ATTRIDX(MAIR_ATTR_NORMAL, MT_NORMAL) | \ + MAIR_ATTRIDX(MAIR_ATTR_NORMAL_WT, MT_NORMAL_WT) | \ + MAIR_ATTRIDX(MAIR_ATTR_NORMAL, MT_NORMAL_TAGGED)) + +#endif + /* * Default MAIR_EL1. MT_NORMAL_TAGGED is initially mapped as Normal memory and * changed during __cpu_setup to Normal Tagged if the system supports MTE. @@ -432,6 +451,13 @@ SYM_FUNC_START(__cpu_setup) * Memory region attributes */ mov_q x5, MAIR_EL1_SET +#ifdef CONFIG_ARCH_APPLE + mrs x0, MIDR_EL1 + lsr w0, w0, #24 + mov_q x1, MAIR_EL1_SET_APPLE + cmp x0, #0x61 // 0x61 = Implementer: Apple + csel x5, x1, x5, eq +#endif #ifdef CONFIG_ARM64_MTE mte_tcr .req x20 -- 2.29.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel