From patchwork Tue Nov 29 16:14:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 13058803 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E1E62C4167B for ; Tue, 29 Nov 2022 16:17:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=uzZJ2R7uQMyTDaa/GTvvYumhW4SfEDJW/oNC26RK8Z0=; b=JH8rtHY2BPPWDx 7fQSjb5JlhUFBFAm2hY4UhQFOjV1LDyRu12feIprUxHb2rbQV/upg14tukyschA9fKm+4fy54DRgZ 3pCiGK6a9mIevhM5hnhxEHZpmIZWoNKBNeyKTTLmhOy7xriJ5P4qf8rUaTuXMPgdELsydRieFFdQs 6YFQCTlJuYHWF+1muuvsr233+EOFNMzNFmAExblTpV5YuqUeolOetk0aQjVgj85XBp3a/e9Q6Bdt0 UqSeI7XJOvUHdrvBkSh8LBpTJ0rMjKqdYEUe+No3QcPV4ABk3PYYetzeDI7mrcEEuFjej2wMg6/Dy rvTL5IUiSwYBJACC9BSA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p03H7-00A0zB-CA; Tue, 29 Nov 2022 16:16:01 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p03Fa-00A0Wm-LE for linux-arm-kernel@lists.infradead.org; Tue, 29 Nov 2022 16:14:28 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 3DB49617BA; Tue, 29 Nov 2022 16:14:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 57DAAC4347C; Tue, 29 Nov 2022 16:14:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1669738465; bh=DQUF2BaKxU7I7wgW2wQ8NneWctq1uRwv3omzNQ8G4FE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JbvFYT41c131d5vc0rplgNWlhE8Nb9vpxg5Hfu12Z0sXGspYh/CJ+jdqZMTNc9A1f 5PK0Cafa3LLITYnkOhyuRMdP9uApo55LGAdA+5fexmlnK5rKC9Ggc1AW21Bd1vX/wH JeVX5uIX6w1p3E2Wnclncqm1Yixt9DstzeCEPQzCbHc2lBAdOIC+bBB1cxdS8DsvR1 WDSE3ePTourtuuZPAyiwIN2t5b1NWMg1WOYiqm7a3kuU1S77q+XPBdnDYcq62zJiWI +cZ3LwsKll3SFFWXcyJpe98cZ3UD/v+VS7RsRhhSBSz1va3pWYmA4IT04kL9LetFjS P1uSsNz0qHgMg== From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: Ard Biesheuvel , Will Deacon , Catalin Marinas , Marc Zyngier , Mark Rutland Subject: [PATCH v6 1/6] arm64: head: Move all finalise_el2 calls to after __enable_mmu Date: Tue, 29 Nov 2022 17:14:13 +0100 Message-Id: <20221129161418.1968319-2-ardb@kernel.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20221129161418.1968319-1-ardb@kernel.org> References: <20221129161418.1968319-1-ardb@kernel.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2013; i=ardb@kernel.org; h=from:subject; bh=DQUF2BaKxU7I7wgW2wQ8NneWctq1uRwv3omzNQ8G4FE=; b=owEB7QES/pANAwAKAcNPIjmS2Y8kAcsmYgBjhi/QUc2/m1NXlUs2ES7zPr7Q5sHP0pY1zRsNmdpq lXusGvCJAbMEAAEKAB0WIQT72WJ8QGnJQhU3VynDTyI5ktmPJAUCY4Yv0AAKCRDDTyI5ktmPJLfFDA CRjlF+skkF3Y0fYfmUUB8yCZJrvzB37TCBEPt0pQkPusb7c3ptns8ZWUax4s49IuJ5iD+Co5n74F/p U4/8FTpSI6yeCn+WM68oGwKVTy1sOVN5Z9mQcY4N6Xj0vOa0tG+mY9ICHxpqWb2mgvTPNLZvnbh8OL be7CefFE890+zPLjoDhcLFHaJ5iJmv3NwRXl5n1ommHW5e1tDIuarS3C6le7++M+bZRGk3O2DY/00/ Hv5WIgzDMaLtx3BjIm4ZsBNTvwYE1dLfA90DEnWmKJM5JAZvncksf3JHhw7zQpHUIS3Tx4uuFcDCYS PUX3WORhBTF0CWkUPO38/Vc/HQrbJ6la2eC+TohW7R/TFlX1r+G3RmccC96wiQK85CwrivBkPnnPXu YyiGwX1dsD9DUHsbJd4vCkHBObwBQUB2AhVHsYDLYnhYntN1n6GSRL64ABixrZGzyQZn6cWymRjiC0 uMXbngjtfVJy4rBDD4bGr3VUrA1ljXP1cBhSG3ecu55eE= X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221129_081426_821059_BD616557 X-CRM114-Status: GOOD ( 14.81 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org In the primary boot path, finalise_el2() is called much later than on the secondary boot or resume-from-suspend paths, and this does not appear to be intentional. Since we aim to do as little as possible before enabling the MMU and caches, align secondary and resume with primary boot, and defer the call to after the MMU is turned on. This also removes the need to clean finalise_el2() to the PoC once we enable support for booting with the MMU on. Signed-off-by: Ard Biesheuvel --- arch/arm64/kernel/head.S | 5 ++++- arch/arm64/kernel/sleep.S | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S index 952e17bd1c0b4f91..c4e12d466a5f35f0 100644 --- a/arch/arm64/kernel/head.S +++ b/arch/arm64/kernel/head.S @@ -587,7 +587,6 @@ SYM_FUNC_START_LOCAL(secondary_startup) * Common entry point for secondary CPUs. */ mov x20, x0 // preserve boot mode - bl finalise_el2 bl __cpu_secondary_check52bitva #if VA_BITS > 48 ldr_l x0, vabits_actual @@ -603,6 +602,10 @@ SYM_FUNC_END(secondary_startup) SYM_FUNC_START_LOCAL(__secondary_switched) mov x0, x20 bl set_cpu_boot_mode_flag + + mov x0, x20 + bl finalise_el2 + str_l xzr, __early_cpu_boot_status, x3 adr_l x5, vectors msr vbar_el1, x5 diff --git a/arch/arm64/kernel/sleep.S b/arch/arm64/kernel/sleep.S index 97c9de57725dfddb..7b7c56e048346e97 100644 --- a/arch/arm64/kernel/sleep.S +++ b/arch/arm64/kernel/sleep.S @@ -100,7 +100,7 @@ SYM_FUNC_END(__cpu_suspend_enter) .pushsection ".idmap.text", "awx" SYM_CODE_START(cpu_resume) bl init_kernel_el - bl finalise_el2 + mov x19, x0 // preserve boot mode #if VA_BITS > 48 ldr_l x0, vabits_actual #endif @@ -116,6 +116,9 @@ SYM_CODE_END(cpu_resume) .popsection SYM_FUNC_START(_cpu_resume) + mov x0, x19 + bl finalise_el2 + mrs x1, mpidr_el1 adr_l x8, mpidr_hash // x8 = struct mpidr_hash virt address