From patchwork Fri Feb 3 22:22:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: York Sun X-Patchwork-Id: 723952 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3vFWbq5QJ3z9s3s for ; Sat, 4 Feb 2017 09:23:34 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 0EFAA4AB34; Fri, 3 Feb 2017 23:23:29 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oJO_xcfwcFh6; Fri, 3 Feb 2017 23:23:29 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 7D6B54A99B; Fri, 3 Feb 2017 23:23:28 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B1F1F4A99B for ; Fri, 3 Feb 2017 23:23:09 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kOcodM5k2kOl for ; Fri, 3 Feb 2017 23:23:08 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0053.outbound.protection.outlook.com [104.47.40.53]) by theia.denx.de (Postfix) with ESMTPS id 33C964A08A for ; Fri, 3 Feb 2017 23:23:00 +0100 (CET) Received: from DM5PR03CA0005.namprd03.prod.outlook.com (10.175.104.15) by CY4PR03MB2949.namprd03.prod.outlook.com (10.175.116.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.860.13; Fri, 3 Feb 2017 22:22:57 +0000 Received: from BN1AFFO11FD017.protection.gbl (2a01:111:f400:7c10::125) by DM5PR03CA0005.outlook.office365.com (2603:10b6:3:118::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16 via Frontend Transport; Fri, 3 Feb 2017 22:22:56 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; nxp.com; dmarc=fail action=none header.from=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BN1AFFO11FD017.mail.protection.outlook.com (10.58.52.77) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.888.7 via Frontend Transport; Fri, 3 Feb 2017 22:22:56 +0000 Received: from oslab-l16.am.freescale.net ([10.213.172.90]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v13MMswP023431; Fri, 3 Feb 2017 15:22:55 -0700 From: York Sun To: Date: Fri, 3 Feb 2017 14:22:48 -0800 Message-ID: <1486160568-1372-1-git-send-email-york.sun@nxp.com> X-Mailer: git-send-email 2.7.4 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131306341765824434; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(336005)(39410400002)(39860400002)(39450400003)(39380400002)(39850400002)(39840400002)(39400400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(8676002)(54906002)(68736007)(50226002)(305945005)(36756003)(356003)(92566002)(50986999)(81156014)(81166006)(33646002)(8936002)(8656002)(69596002)(38730400001)(4326007)(2906002)(53936002)(110136003)(626004)(47776003)(5660300001)(5003940100001)(2351001)(48376002)(77096006)(6666003)(50466002)(6916009)(97736004)(105606002)(106466001)(86362001)(189998001)(85426001)(104016004); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR03MB2949; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD017; 1:mmKQDrCIUTQDNmKsunmKAEkh+ehCnCmbNgdr+IKfh0hQFQ49M37XFdunIYTTbC3Xoj6mv3lFM/K/KXIVyXSoa5jFM9nbCYYklxyfbiSq90nz1Oo8WwXB0xHlsSOZfexBc+nn5wn7twUqQV/xq/jrMLN+Goa9kmL99PefTvCK+Se7gk6Cl8Xvje7jAWMIB8QKkr/Wmo4UqRIVk1R1QkSCe3Ynxzi7n3EFSF24kHjszICym4KbLo8eZ9wKybp6ODQ0t9PWxPDrLNukkUKkqFfbRcLLM1NGC4kskaMXEWBwXM6MgayKBCjtEZj+yrS4ZHAfQC8ceUiFvUArplgbwfoANVESEYDSYx74PcQYYhFp9SgG5WNFiuK+EIGcD26CAkBDL9aRq721Ps2dQ5+hAw1rymh/GQSVsvTg38G5nBdtFy4Boqto8T/U+DQuMZI0O0xA7VlsVrGgPtijhQmZ1AW4AWRuM1IG1+lS5jZwpFStsapK8+xgfQVN2RWrBiR3uNbnU7B/9L9s5PbMCqQYV0lh8g53pnDX7Fm+nk/OVaKrSiq++KmULJYN+1ByVoF8pf5sqMeEqQDqvr9Z9MVz3IPXWff46z0UKbmKlvpXq7P+JJZ71SPxJXds2zMvcycK3yKvtQUochIvYT6u3PcifUojddHQBUqo1eML2vcq+zAVVwl6k+xHraurgECMM6jZeUbs34uQJ+1NNmuYugbVyyXE+g== MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 1b24a85b-9d5d-44b5-34b2-08d44c833419 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CY4PR03MB2949; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2949; 3:ggUQc/Y5ejO5zXNj6smtV2W4i1qGiPWwRm8Jlg9AiP00Zg9PhtTwkP6awX8Nu5RQcAtiuJld0U19Vwx3Yo5Q0zp07GBZWDTFm5QHPvf6u5OdmfB2v8PhK8O7YGpOQxMSTx62ytUbmKxJUSqPGQzE0HZoeb2SbW+KJVB4mJBF7+0edpnw6Rca6sGQ6yfI3oRSY1OwPEg0/0sIBA+uVFwh46uaSwvFqemsaJ7R7VgivY29RaToH3ychMUcOuwqIOZyijcYyDALyrto3yHuKt18a/fSDY/vfv7JzB84Mztp4O3VCwoaf4zgXBoCrmIA+NB5WR8lEXBAX0Mr3XVCLkQ/tCSz0eBfOPJxhXvmdyY3Pq0Zafx6gB309iFpvMdAxOSx; 25:llLDxAb6QvQUtNDi6s45aOvnLWVhBXoVbiTioH+p14ZbAo9k0L2HTiWVfF6d4hyWUc23O+Ny3QWH58CqCjTckqguGK/LqlW7DIKrTokOhKMgXMslFCVx5aHVxQs5qn8SiN7fvXCSJzJE0oJiEjjUuPWHnCRlBEn7RxMYs3xJIXWrXVaqL1o3SWh+yArf55q2TfqtvCIYLGnnlxU4SZR65WOc8OpSTeQy7WNrGw9nZOf2/p9/OcikI2rtYffbqRPJivk8a4BuDOXZ98HuuxQXryjjOhH36W4D8VustKt3UBX9oWpF/19Ou13/EWIdDb9/o1fnXF2uYyDdkgTTXl3jsRP28akj8i9JFCzln2IC7S15jHW8VXOsdX0NXM1O/FBkfk/jT940j1VoPVQPnkqSn8MZ0ol/fOfFgITW734OmP6HGM7TayOiqRZA3rsOlVwP7SwrEXJUOjQ/RwMsBI9a0Q== X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2949; 31:HIInPicfYRmwRTcOWHdx0ukOVnkO9puyHdpyo949cDh1hgCTetd9xjE7G35hfy8XRxrCBct1YSNm4b++uvYhNsWPk7xpYkWOmap9CkqTIQU/ZRgQWqPms93012iI6ewLrJrSKZ88AigqKekJuapBT/ecIqe+SRIyjB9jlF09SpPboYmZDK4fpDXJMimd740UHKprHmcKd9pPSvegU2L2uI2zONuq0q4RpXO/4Iyb6ZooKXfqD3fIdQVwXKoO7PTNppgZoaSxU4zr73DESjeqJjaSQmifCF7K2FYtpqCip3Y= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(5005006)(8121501046)(13023025)(13015025)(13017025)(13024025)(13018025)(10201501046)(3002001)(6055026)(6096035)(20161123565025)(20161123556025)(20161123563025)(20161123561025)(20161123559025); SRVR:CY4PR03MB2949; BCL:0; PCL:0; RULEID:(400006); SRVR:CY4PR03MB2949; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2949; 4:aTdrEnFwHbcvvFT4PCAReHRJeEaJH03RXgZpzzleijCnRXG3XAoKD551Qk9ssiTHHUOLUM8SnK2nsX2GU/Iu9gN0H58E0MZPIEQgbmvfCwuYqW3qMlEmUB8rR7Di53aNwWH5KSAvY0/Z3H4Cc04D32ZSs9klQ6t/UwHvcAgdeQe9wxwyR21+bB24rAg1z9J2ewpDL+5HrnYe8ozFNhewj9iPsVR1VJr/6SBfRtW8QD4Msjvj68HqWHtyp8Q9qlSrtFb/uaSfSQvKPwWqgseJ9U0r8PjmaePbkxB6JYqQcgULu3runtty9iYkZnLcilBt4pFr43HbhV6FWEAvDZqbLZb72kIYtXVTYEcY5exCdp3OBcxKBtKlDWej8IwwvcThhMtqBar20IcwRimXGQsSI/FW4ZplhVn171YrNuLUKTvKK79Xi2sYG0K5pnQqN9yEem+Sf7MUx77Iq/CDvww/SAiCqfo51FlbqwYZT8kYbo+OY+OpV4Z+d2tGMfF/2hjbIrM/mfJrOh8btdXVqHyUwdcRViCO9JgrBXfxbcqtNvcOhrd8dggVbKFYHH7/KQcmPQQTqBi3xlmMs8D4IbdR81wxJ2gHH9Y9YNHXvmjdgWPs5PoQEipA56ti9GHZrj470HmJvVBIAZDOgI1JTQKa4Y9kQUmRZaiZkKYCzrhAX7GCva7JPm5osLN8gBI/DEEod2DiH/6CCbuvpTUrsYDDMw4Ke3AbqSLsfi0njELG8A4haWtgrRQWjEcszjZJpGx+ X-Forefront-PRVS: 02070414A1 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR03MB2949; 23:laXlHyYhDTtmxL8idyriBbzlmsZ1lxnuV6PLR8lgh?= =?us-ascii?Q?wgSZDXjxC41kFeVN0wfWcJLe0Mxx0OJov9tv3YUYad8YEM4R6L+u1bacFUsB?= =?us-ascii?Q?hAcHakS+8Xu9L6IwNeq9QrV7oYTc7VnnUSao0knmuXV99mKEche7thK27mDi?= =?us-ascii?Q?7etSI/hVOrRaRoneZsTqqpoz7lZop4sW9KkSIJNIAhGoT82ix6F0Eczj2v0U?= =?us-ascii?Q?AvHnvUUTtlzeUfIZBWxYtK0lEggi+lp1g8un7nF+XZH+v8QLA7IxwXKh1vEc?= =?us-ascii?Q?OeLTdsesHjlBPRRbKJ2CEkcuiaIY4WN1WzcEKVD4eD5iGXuuS3QV1/PYTzX8?= =?us-ascii?Q?RbLB8569m1ZgIqPhVndtW6rCvQJiiofmoOByGTHmPKiqXeHtlzX81AECGGWx?= =?us-ascii?Q?fCtErjc6RcIt1TaR5C4gslRWr2lA1bH7L5+EWfBWhdkeshhxpVXCbuxIA6Io?= =?us-ascii?Q?tr5xWnfiHsbQH8S1vbwCxQYJAztgmM9LU3GzeMR6CEFsUEb9yfXUcTi3BcZE?= =?us-ascii?Q?ggZF4vsXoL3mU0PtQliZz/MSX8n/KMC8Aa5trHyDVSgyJlMSM7hNRdfyPZzN?= =?us-ascii?Q?P8gWy4RUX6d043Cjz8aGeomaDcE4th9L9ygXYukgo9KpSghPDmGQJQ2d4h74?= =?us-ascii?Q?fMy9gX2iM1luppL1kBoQ10cNktWnjCnl/aroiXbOcET4WQqZBtwsGIe3dVwR?= =?us-ascii?Q?69lNKW8tONOVCdxCo0DohaykSXupH7DFAod4R4FuskkFzo3/idmt4ND2S+j7?= =?us-ascii?Q?I+X8IdqETCOndkBCpnN8DEPD/CoDT2ElX32npY9KfkBekyRgXBAvkX99RrcL?= =?us-ascii?Q?zvct8rxjXaknNmhfWXNeAWFlAMkgH/wg0xnqtyrAoYYLl8McV/7JUc+sdGuY?= =?us-ascii?Q?AU3U1npfxmK3cmZdAUAsln7JwM2kGYpDXtUtsCVwMCnPnIMxJSaSgh3rFqXT?= =?us-ascii?Q?+vqZ1i6/zu+ELekuO0NE4D2cYPS782QMbsabnX3MYhLxv3rTctVt9ESiYkVx?= =?us-ascii?Q?QuJmjtWKPgWJ6eNbr+4k8WNSbFHEp6SBlBB6D3Snk+pw0ndIafgcxES+Hhd5?= =?us-ascii?Q?dgivjQZi56moichcGIhLJvQsboqW5d5q3aYsSu39nugBBcebvmt9sqckuhv9?= =?us-ascii?Q?oXOKG4/FX35TIYIU2o4jEyNtxs2FzNtFoUFOJYo2GBosWYloanIoBT0q+xZu?= =?us-ascii?Q?Pt60qXc/2VbUhoNSIhZ/RC0xQX31VYhKdZysxzRNWXde4/r8+3FAQx/DT+VY?= =?us-ascii?Q?+qkMn2+c3CoBqIHskvi8TItU050pgiLc4lRNtr+/wXPUdSgtPeAjwVEbYY8i?= =?us-ascii?B?Zz09?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2949; 6:Jr4FeNlRnpPh5GGCT031Q3ahVvHBE2koGHMCrU6sfkOAVL1rUGSjS2jWvdvhTjDnu8yTyYrparidNskdTtTl2acfn7zUthXZHXh+LwE+lLB2wsGw+lKfVt4sopBBEf5k+4V6GXy490DTUZ5upc+EQMYkBN2lL2eg3TiqrCGIKwhd5it8UexESsdvpPhuiGPKS0tR+FqsvppHSmqLCBCslvAJ4V2W6ZMLVnCHOqkA6QMQGIqPUU5sovcEfdzVV6DCmF1WKa0wjiZCCoetPdWVHgyrmIA05SkjpPhFTyG6yFi7TcLLQF9NCo5/DHvWkuMXu6UFgggnqIz4x2SvJSuYe2OxM6xAiYQPrsXpFdgmC316djPeJWIKKji+hAwDOJEmylRZNc3OS6WH623+rJOMH5rd2xsRzCN0Th/gZ9T9ccE=; 5:uGGlxu5VJLDr1XE9dL9Im0YfZgYtVfziAkItzcFdfZUBS0cmK+ONqnaW04YvwkEinUNnMFKNdZhkhLqP+5C4rAbC61olLCCCIv+i55z4k9M9yVQ84FYrIsJgMFVumGHQbrU5pWbMdu5WuhyeVmfgZptPQYgRNHwtcXmvCvoGhzrkxsPzpkZYLdPQZv6TznGj; 24:KbB0wmsVCiNuGqkaz98eISsBjfYuRatEJXPi2IzacaRgzXISnw2HJ1BRsPEprltvxpacD5k+HGy3wkmVwjqDney+sVTGIzwswHROBzul7u0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB2949; 7:g6zorY9fSS7ODU7DHadOloKyiepPyvA5B5k0cAYhZ8bNwLchIf0MfV6uoWPiJSzi3iq8l70i37KJsC/C1V+VUJ7rtS6yCcz2g+C9kgV3iz5IZBx53d9MCsOhq7L2vu+/p+M2Qwq/w2puSrtsqQEvxZGUi7XtmLmHkhdthGPV+Su+VYJRTHGupVc7eMGdNPM/wQfKAkJwxWf7WbUsYGw3wqe7vCKFqDQ0rQYLImiVki4FSOfwkPiq6KLO2g0H4f3zZMtfM4sKWdwugqlAmQMcTvq3lrY7Pxs5ZAp/8atHEreYgTP3eYEDOJWCI82jYMzuAd3o9NBMaT61Mc7naHLtcOdNyCmR5WEy1H9t7j1ORhryRKmSUgolwILPi3AitWUKi/MRvLctcOciJal3a6ZAuX8BzydJn/sy4qC5iXwtqQ3QqF7eRt3wl2hzs0AEN1jNNKFuS6+NEONBC/bqshh+tkwJj152mxDYScalksaNu7SsLGi+Rk5r38coDeI53B7rPMpo+rVsOk1mvwlELtXSuQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2017 22:22:56.2236 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR03MB2949 Cc: albert.u.boot@aribaud.net, swarren@nvidia.com, twarren@nvidia.com Subject: [U-Boot] [RFC PATCH] armv8: cache: Switch MMU table without turning off MMU X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 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" We don't have to completely turn off MMU and cache to switch to another MMU table as far as the data is coherent before and after the switching. This patch relaxes the procedure. Signed-off-by: York Sun CC: Alexander Graf --- I found this issue while trying to change MMU table for a SPL boot. The RAM version U-Boot was copied to memory when d-cache was enabled. SPL code never flushed the cache (I will send another patch to fix that). With existing code, U-Boot stops running as soon as the MMU is diabled. With below propsed change, U-Boot continues to run. I have been in contact with ARM support and got very useful information. However, this switching TTBR method is "behavious that should work" but not well verified by ARM. During my debugging, I found other minor issue which convinced me this code wasn't exercised. I don't intend to use this method in long term, but figure it may help others by fixing it. arch/arm/cpu/armv8/cache.S | 44 +++++++++----------------------------------- 1 file changed, 9 insertions(+), 35 deletions(-) diff --git a/arch/arm/cpu/armv8/cache.S b/arch/arm/cpu/armv8/cache.S index f1deaa7..63fb112 100644 --- a/arch/arm/cpu/armv8/cache.S +++ b/arch/arm/cpu/armv8/cache.S @@ -171,35 +171,10 @@ ENDPROC(__asm_invalidate_l3_icache) /* * void __asm_switch_ttbr(ulong new_ttbr) * - * Safely switches to a new page table. + * Switches to a new page table. Cache coherency must be maintained + * before calling this function. */ ENTRY(__asm_switch_ttbr) - /* x2 = SCTLR (alive throghout the function) */ - switch_el x4, 3f, 2f, 1f -3: mrs x2, sctlr_el3 - b 0f -2: mrs x2, sctlr_el2 - b 0f -1: mrs x2, sctlr_el1 -0: - - /* Unset CR_M | CR_C | CR_I from SCTLR to disable all caches */ - movn x1, #(CR_M | CR_C | CR_I) - and x1, x2, x1 - switch_el x4, 3f, 2f, 1f -3: msr sctlr_el3, x1 - b 0f -2: msr sctlr_el2, x1 - b 0f -1: msr sctlr_el1, x1 -0: isb - - /* This call only clobbers x30 (lr) and x9 (unused) */ - mov x3, x30 - bl __asm_invalidate_tlb_all - - /* From here on we're running safely with caches disabled */ - /* Set TTBR to our first argument */ switch_el x4, 3f, 2f, 1f 3: msr ttbr0_el3, x0 @@ -209,14 +184,13 @@ ENTRY(__asm_switch_ttbr) 1: msr ttbr0_el1, x0 0: isb - /* Restore original SCTLR and thus enable caches again */ - switch_el x4, 3f, 2f, 1f -3: msr sctlr_el3, x2 - b 0f -2: msr sctlr_el2, x2 - b 0f -1: msr sctlr_el1, x2 -0: isb + /* invalidate i-cache */ + ic ialluis + isb sy + + /* This call only clobbers x30 (lr) and x9 (unused) */ + mov x3, x30 + bl __asm_invalidate_tlb_all ret x3 ENDPROC(__asm_switch_ttbr)