Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp241667pxb; Wed, 20 Jan 2021 06:05:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJy6pknht20iAUHxdxfLrNuorT3pgVeuubsFa/eOZOBUdCsEMw07SACivvQws2z9aTRJ27QF X-Received: by 2002:a50:ccc3:: with SMTP id b3mr7891396edj.41.1611151549486; Wed, 20 Jan 2021 06:05:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611151549; cv=none; d=google.com; s=arc-20160816; b=twVzoeF9cUkp+9KxU6PcJvIYumRP+V8hmnigvnileMbT5SlNQVj7jyINpE1j0WGJGn kP4Y3WKUmbRL0b/e0y7G4bW3A4au5SFTmEhYfcOYbHH+n+xpAMo8LbcrnMm5bw60CyHr 5T3Lhw/5hcMqrCx3w9wy/j3mnyrSnWY82OHoGj4+yW3HBCQNSST3AZ2YVf3MtkJxzW7w Rgd6LJdlWgAa8luoWxIRNnbrGXLDUTCNDdlaNdu62dMwGIGll3OWFmVGMf8uKa30fgBI mBXZl31sPT3E7YfgR0gUulVApec4M19Wrvx6u4WDZvLSQWYVXL8JRq2gKV7Gd2SqQUgP Llgg== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Elt0dtUpslSc671gMcyXNg2rZYrCOG5ST/+RcBfuF3I=; b=0H5HVdqcZNau1rUjhuyOnBcdjAywUlh1vdKXxCxvg6yzcRwfWEOTYs91BmHR+wpuLT lC/tSf6DbMZiUj7OIiyRi7oRgAiei2c5N/JQ+xjCC5KiIMp1u+zqC3NtjK0lZCf2BZRI 8dEjAZcId6MOcZAh/ZYA8yazXtyevVBs8aw3/A8X3VK/g+OFXU7+SER2+KF0xe6HUuE5 TdVy7Aq/WIb8ihEiyyx0DcxAROpnDYLVKOhiszt+tOkx8Peqmd5GEUCXFEs9LPWLZg4j 5YPI4BWPaRhIgT/APlWEfbkWLmq88wiC7o12/ibft5GFy9/DS4+vgxqhqW+Id+VijvOY RKBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmx.net header.s=badeba3b8450 header.b=OW+6blaI; 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=caramail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dn22si890087edb.175.2021.01.20.06.05.23; Wed, 20 Jan 2021 06:05:49 -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=@gmx.net header.s=badeba3b8450 header.b=OW+6blaI; 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=caramail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388582AbhATN6h (ORCPT + 99 others); Wed, 20 Jan 2021 08:58:37 -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-Spam-Flag: NO 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