From patchwork Mon Jan 7 09:29:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ye Li X-Patchwork-Id: 1021228 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="FSOaEDdV"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 43Y98J67Ckz9sDP for ; Mon, 7 Jan 2019 20:29:36 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 5E766C21E16; Mon, 7 Jan 2019 09:29:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id EC96EC21DA6; Mon, 7 Jan 2019 09:29:24 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 6403DC21DA6; Mon, 7 Jan 2019 09:29:23 +0000 (UTC) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10065.outbound.protection.outlook.com [40.107.1.65]) by lists.denx.de (Postfix) with ESMTPS id BE374C21D8E for ; Mon, 7 Jan 2019 09:29:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jUs6bteFayv99NCVWVw3uKIQAjinDB0XpLoZO+v733k=; b=FSOaEDdVrV5l+QRmzQ4y9DqAzcfQ3bhdWSc9vyU+/bBh4Q7iloZeVvoXoyc6jZSuiNdCi9rmILFCP7JhqVpSkB9Ak3DN3cV8P1bcCU7PlTo9JcjLSKX1PIbNG22IRnYDvatOyBBRsnZrMfu2cILSKrMsTkWQOGWbZzkITE058Cw= Received: from VI1PR04MB4414.eurprd04.prod.outlook.com (20.177.55.153) by VI1PR04MB6318.eurprd04.prod.outlook.com (20.179.24.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1495.9; Mon, 7 Jan 2019 09:29:21 +0000 Received: from VI1PR04MB4414.eurprd04.prod.outlook.com ([fe80::f1e0:df54:f9c:b4b9]) by VI1PR04MB4414.eurprd04.prod.outlook.com ([fe80::f1e0:df54:f9c:b4b9%3]) with mapi id 15.20.1495.011; Mon, 7 Jan 2019 09:29:21 +0000 From: Ye Li To: "sbabic@denx.de" , "u-boot@lists.denx.de" Thread-Topic: [PATCH] imx: Check the PL310 version for applying errata Thread-Index: AQHUpmt47+EY7l+J0Ea9tvShuA+twA== Date: Mon, 7 Jan 2019 09:29:21 +0000 Message-ID: <1546853345-24351-1-git-send-email-ye.li@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.7.4 x-clientproxiedby: HK2PR02CA0173.apcprd02.prod.outlook.com (2603:1096:201:1f::33) To VI1PR04MB4414.eurprd04.prod.outlook.com (2603:10a6:803:6e::25) authentication-results: spf=none (sender IP is ) smtp.mailfrom=ye.li@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [119.31.174.68] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR04MB6318; 6:2xlK9TvuDxLRD5I+W6A9JObN8dFMDQ93oLRVNMis1h+lYlireR72lgt14xW85ltmUvM7s0FKH+v/dz9dAcAj6ecwOwc2WMiZ3ADe5UX6kjlBSy4ojyr2B+A9pxcAvGrJLASVHiAWtUnBnMB9j9CmdvVBAZYBYTI22Sv26SvGjgYw9TCvaBSvbov+tl1Bq1fTp7OhY7K3FV+d3XP9AISZthdMLjlt8GQ/maaQcdHu1KUIJYiGYjFPnk6N2tw2ez7IBDD6HnbbKbvVcidWqdbA11c82ttSWGnDKHRwKznhA1P/iDz9gwli430dL4qz84dyoijw6glq1DbaLuJtFGOhYkso6V89mgvbxM3Zqy0fRqYis+5jr/+O+l+r9iMJlHBSCZQdAt/Bqs76zUhR/nB0daZb2Ly2cpjgqAa0L3PbmoIkw0cUA+uiy9IZboQI0UBDQ//X+7n7jxlizfnkktM4Og==; 5:L0al8LRNzrdA3V9me+aW/cXVwZtNVWMclgRl98/MBAV6xiPGjDU/Wbzb2i8ijjcQQ8DOWxm23YLRj2sels+rnUMSU5D8U7a8Ee/xQKLfUnO2Y6Lina6xdzr/75vicxF93uRBcxHgXaY8iX0kKLPvukT87pm28BuLJAKnNl/YOa6VKIxygqShUWuQZmmMRODTTIahhGSu/Cd7cK8Juszb5Q==; 7:4j+Mbg8u0wMsX74etlo6Wg2MdPuI2+/TWT1hH1FqslueX4j5TYitGx98t2Bl+ouMIJSU9n5/TwUe4gC7N1Kjvx2Tk4gaD2+93O1uT6oUJOqDaIAhoRvuFN9OT3sw7aIHxSDIR2SHlqKD/37cqqP0vA== x-ms-office365-filtering-correlation-id: 74e3756f-3da5-4ef5-7ea3-08d674829aa2 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600109)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR04MB6318; x-ms-traffictypediagnostic: VI1PR04MB6318: x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(908002)(999002)(5005026)(6040522)(8220060)(2401047)(8121501046)(10201501046)(3002001)(3231475)(944501520)(52105112)(93006095)(93001095)(6055026)(6041310)(20161123562045)(20161123560045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:VI1PR04MB6318; BCL:0; PCL:0; RULEID:; SRVR:VI1PR04MB6318; x-forefront-prvs: 0910AAF391 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(346002)(366004)(396003)(136003)(376002)(189003)(199004)(2906002)(6486002)(8936002)(4326008)(25786009)(386003)(36756003)(52116002)(110136005)(8676002)(6506007)(54906003)(81166006)(81156014)(316002)(102836004)(6512007)(476003)(50226002)(486006)(2616005)(186003)(44832011)(26005)(5660300001)(256004)(53936002)(7736002)(68736007)(71200400001)(86362001)(71190400001)(305945005)(14454004)(66066001)(99286004)(97736004)(2501003)(106356001)(478600001)(105586002)(6116002)(6436002)(3846002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB6318; H:VI1PR04MB4414.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: x804hmcHZ5atRkn+8bZG634Ocj8UhhAwGLu7HmBKVhO5yisfoGX+lClBhxdtA0+vucUfBGTOIdrbZBeuHPXllB0yUKC1jyd04UdXxOJCF5XXZrWMR8XhXdsyMVPIJGAOdptP3Wk8FKP9hS+bh+kUfMm8EwmIwJE2WID2+Ne3wK5HZaawI+QO42GjF+fdly7J4Rbcpzx7YY1NYUL6uyUwbYJOwe9GB0q9IFN4fNL9zclJYZ2WV5pa6FasyiJafq42tGS3vb/tkJ2R5fc+1G+WylAuyPthRgtng/VRKgZToOQ526ISTTa2RvlIMGdzkfRe spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 74e3756f-3da5-4ef5-7ea3-08d674829aa2 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jan 2019 09:29:18.4976 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6318 Cc: Fabio Estevam , dl-uboot-imx Subject: [U-Boot] [PATCH] imx: Check the PL310 version for applying errata X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" Apply errata based on PL310 version instead of compile time. Also set Prefetch offset to 15, since it improves memcpy performance by 35%. Don't enable Incr double Linefill enable since it adversely affects memcpy performance by about 32MB/s and reads by 90MB/s. Tested with 4K to 16MB sized src and dst aligned buffer. Signed-off-by: Nitin Garg Signed-off-by: Ye Li --- arch/arm/include/asm/pl310.h | 5 +++++ arch/arm/mach-imx/cache.c | 18 ++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/arch/arm/include/asm/pl310.h b/arch/arm/include/asm/pl310.h index 3624362..b83978b 100644 --- a/arch/arm/include/asm/pl310.h +++ b/arch/arm/include/asm/pl310.h @@ -19,6 +19,11 @@ #define L310_AUX_CTRL_DATA_PREFETCH_MASK (1 << 28) #define L310_AUX_CTRL_INST_PREFETCH_MASK (1 << 29) +#define L2X0_CACHE_ID_PART_MASK (0xf << 6) +#define L2X0_CACHE_ID_PART_L310 (3 << 6) +#define L2X0_CACHE_ID_RTL_MASK 0x3f +#define L2X0_CACHE_ID_RTL_R3P2 0x8 + struct pl310_regs { u32 pl310_cache_id; u32 pl310_cache_type; diff --git a/arch/arm/mach-imx/cache.c b/arch/arm/mach-imx/cache.c index 82257f3..75e1f54 100644 --- a/arch/arm/mach-imx/cache.c +++ b/arch/arm/mach-imx/cache.c @@ -82,7 +82,7 @@ void v7_outer_cache_enable(void) { struct pl310_regs *const pl310 = (struct pl310_regs *)L2_PL310_BASE; struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR; - unsigned int val; + unsigned int val, cache_id; /* @@ -112,22 +112,24 @@ void v7_outer_cache_enable(void) val = readl(&pl310->pl310_prefetch_ctrl); - /* Turn on the L2 I/D prefetch */ - val |= 0x30000000; + /* Turn on the L2 I/D prefetch, double linefill */ + /* Set prefetch offset with any value except 23 as per errata 765569 */ + val |= 0x7000000f; /* * The L2 cache controller(PL310) version on the i.MX6D/Q is r3p1-50rel0 - * The L2 cache controller(PL310) version on the i.MX6DL/SOLO/SL is r3p2 + * The L2 cache controller(PL310) version on the i.MX6DL/SOLO/SL/SX/DQP + * is r3p2. * But according to ARM PL310 errata: 752271 * ID: 752271: Double linefill feature can cause data corruption * Fault Status: Present in: r3p0, r3p1, r3p1-50rel0. Fixed in r3p2 * Workaround: The only workaround to this erratum is to disable the * double linefill feature. This is the default behavior. */ - -#ifndef CONFIG_MX6Q - val |= 0x40800000; -#endif + cache_id = readl(&pl310->pl310_cache_id); + if (((cache_id & L2X0_CACHE_ID_PART_MASK) == L2X0_CACHE_ID_PART_L310) + && ((cache_id & L2X0_CACHE_ID_RTL_MASK) < L2X0_CACHE_ID_RTL_R3P2)) + val &= ~(1 << 30); writel(val, &pl310->pl310_prefetch_ctrl); val = readl(&pl310->pl310_power_ctrl);