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 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 A3C9FC43334 for ; Mon, 27 Jun 2022 15:17:15 +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=+uh1YGI1N70LxVjYmUjJ1PeF/6h23VNFptC51qexzmo=; b=uuStcj3uMMh1fU DBvtv/Rz2LtNAVBObXBq36AsLGTQCxzTQOpvSn4byfmON3n53tjFf2Pf/AtpTC3HYmrmsvEPGULPF aSRojXJ17AG43BJhUEiM6Cgtl/X6nOG4wa6k+t0zvPhxM2qXnUbKObqhngDuVCOvI9RofieUdwFiM vOZXrKj0lCANKUlsFGIRzHMPo22v/quy8SogpeXxDljf7bgw277iCVxOix2Rr5uTVjnQ03Lrl3oWY z4baFjcJJ4SZd3LyLwN7f5sFyxgPvn109DPTSqbwqXRE3rI2f7wGXZKukpJOPqmSprxlrxaOUYBCS H2QOuiXt4obATm2Zfgqg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o5qT9-001a3k-VF; Mon, 27 Jun 2022 15:16:08 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o5qRY-001ZP2-OI for linux-arm-kernel@lists.infradead.org; Mon, 27 Jun 2022 15:14:30 +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 sin.source.kernel.org (Postfix) with ESMTPS id B5041CE13E7; Mon, 27 Jun 2022 15:14:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 06A95C341CA; Mon, 27 Jun 2022 15:14:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1656342865; bh=3NSkiVt47FsLZP98ZKi2pM2EfFR9oll10CMYOL0IDmU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=C9ZHx6O2CH4y1q+1qGqRSEM09Onka07SPNLVTTr5Oyyc8iDQiYK8JyUhpsBXMXMS9 UVv1PV9hQ0vCeJ4VwI7Gvg07QunYiWdR/oW+M/uwghIEnv/gHtUPgoKVRJtyCpTGli iAh5z7CchyxII2mcTlHwlJT6taX2s4Iv4RhpeXQVUirIdnx/lksAWl6AtSamMqaPQ0 FE/SHBIddIVzzdeqTj/llUmB0NzAavMXgrOHvxKws6+3h/lRg6uQh1+VD+H4PoyUCW jBGv6Pp7gWvipS8C9Svt4PBQMnZlMvUAqAHGJyblQSxQoAlcqAuC6TRadIB7iV5hy1 nZ0B3PCac/0lg== Received: from sofa.misterjones.org ([185.219.108.64] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1o5qRT-003TzH-AB; Mon, 27 Jun 2022 16:14:23 +0100 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org Cc: Will Deacon , Catalin Marinas , Mark Rutland , Ard Biesheuvel , broonie@kernel.org, danielmentz@google.com, saravanak@google.com, kernel-team@android.com Subject: [PATCH 3/6] arm64: Allow sticky E2H when entering EL1 Date: Mon, 27 Jun 2022 16:14:09 +0100 Message-Id: <20220627151412.1496361-4-maz@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220627151412.1496361-1-maz@kernel.org> References: <20220627151412.1496361-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, will@kernel.org, catalin.marinas@arm.com, mark.rutland@arm.com, ardb@kernel.org, broonie@kernel.org, danielmentz@google.com, saravanak@google.com, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220627_081429_215483_4C882CEE X-CRM114-Status: GOOD ( 16.55 ) 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: , 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 For CPUs that have the unfortunate mis-feature to be stuck in VHE mode, we perform a funny dance where we completely shortcut the normal boot process to enable VHE and run the kernel at EL2, and only then start booting the kernel. Not only this is pretty ugly, but it means that the EL2 finalisation occurs before we have processed the sysreg override. Instead, start executing the kernel as if it was an EL1 guest and rely on the normal EL2 finalisation to go back to EL2. Signed-off-by: Marc Zyngier --- arch/arm64/kernel/head.S | 30 +++++++----------------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S index d35287c22d30..c4be34133b9c 100644 --- a/arch/arm64/kernel/head.S +++ b/arch/arm64/kernel/head.S @@ -520,6 +520,8 @@ SYM_INNER_LABEL(init_el2, SYM_L_LOCAL) msr vbar_el2, x0 isb + mov_q x1, INIT_SCTLR_EL1_MMU_OFF + /* * Fruity CPUs seem to have HCR_EL2.E2H set to RES1, * making it impossible to start in nVHE mode. Is that @@ -531,34 +533,16 @@ SYM_INNER_LABEL(init_el2, SYM_L_LOCAL) str x0, [x1] cbz x0, 1f - /* Switching to VHE requires a sane SCTLR_EL1 as a start */ - mov_q x0, INIT_SCTLR_EL1_MMU_OFF - msr_s SYS_SCTLR_EL12, x0 - - /* - * Force an eret into a helper "function", and let it return - * to our original caller... This makes sure that we have - * initialised the basic PSTATE state. - */ - mov x0, #INIT_PSTATE_EL2 - msr spsr_el1, x0 - adr x0, __cpu_stick_to_vhe - msr elr_el1, x0 - eret + /* Set a sane SCTLR_EL1, the VHE way */ + msr_s SYS_SCTLR_EL12, x1 + b 2f 1: - mov_q x0, INIT_SCTLR_EL1_MMU_OFF - msr sctlr_el1, x0 - + msr sctlr_el1, x1 +2: msr elr_el2, lr mov w0, #BOOT_CPU_MODE_EL2 eret - -__cpu_stick_to_vhe: - mov x0, #HVC_FINALISE_EL2 - hvc #0 - mov x0, #BOOT_CPU_MODE_EL2 - ret SYM_FUNC_END(init_kernel_el) /* -- 2.34.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel