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 38C0EC07E97 for ; Wed, 29 Nov 2023 11:19:47 +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:Cc:To:From:Subject:Message-ID: References:Mime-Version:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=TC7oWd0xzWK7MFQwMKg4l/N2mBY84Z3y9DZXreE3T2M=; b=kSupS1IAm1wXqy0kDRfC1X4Iwb M4eWzptgoyShorLoAdv7Huts3qnZQSGriKbI8+8BrY20PBYU+YCjliktC/SADqzBs1uRc3Z7e0ioe N57+leXwoea9VlmQkALSV1jyV2iObhsy9Ntt/+J3mNkIlXeMpxcEogTVuvdto60ze3wU40gi60q1m oi1bjfSfbgPKe18DdKOo7ZsOE/q0NYZwlMVA0qXBrwfcFw2qlAQQooNpxpcALKckFqeFHpm3NUZfg QjmLtNsa1lLi/xDBaJ2iy+dD+z7gfDviqSYf0R1Nr4UFbA2Ax4bTi88U6mCRvMqWVLiCPplK0RdGl sJF91RsA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r8Iau-0080RP-1n; Wed, 29 Nov 2023 11:19:04 +0000 Received: from mail-yw1-x1149.google.com ([2607:f8b0:4864:20::1149]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r8Ia7-007zh0-16 for linux-arm-kernel@lists.infradead.org; Wed, 29 Nov 2023 11:18:26 +0000 Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-5d29c50d337so4117137b3.3 for ; Wed, 29 Nov 2023 03:18:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1701256693; x=1701861493; darn=lists.infradead.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=cngrmd8oycagSPoZSvoHKPsQhFg1xaF7tU7fqPfLIP0=; b=ZDVarinPggyxCyCeAstibdO8jv2CzTqYSLfD8VMx2kBrsYUlj3FCQIhwJQrXWdmzJX b23vHsTzCTjJWFkUGitdTHR0vM8Hw4knoCVHqkrbXza1yzj9o/QsqZLhI7rwVEJBdiZG t9BWMImKMhHzZWMS2cXcZk8vqcdsXDf60OW6hf7xbYNu1Ym9Lz3VXtBNFAWv/zs2I2yT dup8RhDL4pJQyG3xrpnZidYy5UVTjNoPFQVZs+HP7ZqXmYXk6iO/6jBHd796W1BMIbtR 0JNJCBTeUk3H+GWq9DJNjqQTGErksuXWczOBg0Zs2JXgsqJS/FhZwMsD1+//XyLZYsyb pdLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701256693; x=1701861493; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cngrmd8oycagSPoZSvoHKPsQhFg1xaF7tU7fqPfLIP0=; b=bMcbDRrTwnYmyHs8rdqydiV01fZRiblD2oy3R/u8ua/X2CTlUoHZ/5UiU1TNl5/4Ot +g7TgFx+sCFXn2/WuKA9VTR6TA0d014asSTmaGCnXltHMpWtLpYAW6gBTeAdRUeULwI9 P0uolNfEzNrp0lIYzeXJONqrDp8IsvK8wFUtZMWnKWliXLkFKq4OPjnSvLyjq4AXHZOU Endc14KdCiciLCPcsGY8cGwRGzy/w712ytimrpcU8rSjtgk327Y8dm+htPXl0zF0rWYB np+DCen4WgA9DJmgsXR/pEIR/qhmFmN0KC28eg7VMT86k8t0rpcK6yNVxBg3xrlfdR3P fXLw== X-Gm-Message-State: AOJu0Yyw4k4XdJ9n0RMgSHedNlkOUqT1KtsRjBEqSnZ1Ogf6ClS6hnq8 CdFVVKQH+AJ6Do+M4L1O+7Uw6dUS+/KGgykq4MvJbXXoSejEkR6uZ4hoJSWHUtOsD7FJ4kuUqUt mQ7qmt9H+2ACAjEzPW/VifTzm+jfLm3+tw2X7Evx4dJef99qMc2xrhhz0Zs3U7Ovxm8W0j992g3 o= X-Google-Smtp-Source: AGHT+IGPBlzsOFCXKvxrwVIxmA+ZjBMTUvpAqTPgHsviQQEfUZJ83jJIhicA5XXq5D4uDWWjmYhuam4R X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a25:d808:0:b0:da0:cbe9:6bb5 with SMTP id p8-20020a25d808000000b00da0cbe96bb5mr472523ybg.11.1701256692980; Wed, 29 Nov 2023 03:18:12 -0800 (PST) Date: Wed, 29 Nov 2023 12:16:21 +0100 In-Reply-To: <20231129111555.3594833-43-ardb@google.com> Mime-Version: 1.0 References: <20231129111555.3594833-43-ardb@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=2829; i=ardb@kernel.org; h=from:subject; bh=AOSTHt9JvO/4iRzuZocBqHtffwUhdcZrrydQAmtcn8o=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JITVdtkPv/uKY/30VOzkus1ooTUxwXbDGNXhF36G6kL9bD 2quetvVUcrCIMbBICumyCIw+++7nacnStU6z5KFmcPKBDKEgYtTACayajXD/yytd41BPBunhnb+ vV3wIfbxDTUOq750j37uoPv5OwTaBRn+Sgq9mqwgd/rQFdvvkXskD+89aRr/h/8wb6O3zM/qF1P PswIA X-Mailer: git-send-email 2.43.0.rc1.413.gea7ed67945-goog Message-ID: <20231129111555.3594833-68-ardb@google.com> Subject: [PATCH v6 25/41] arm64: head: Run feature override detection before mapping the kernel From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: Ard Biesheuvel , Catalin Marinas , Will Deacon , Marc Zyngier , Mark Rutland , Ryan Roberts , Anshuman Khandual , Kees Cook X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231129_031815_453605_5A959048 X-CRM114-Status: GOOD ( 14.20 ) 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 From: Ard Biesheuvel To permit the feature overrides to be taken into account before the KASLR init code runs and the kernel mapping is created, move the detection code to an earlier stage in the boot. In a subsequent patch, this will be taken advantage of by merging the preliminary and permanent mappings of the kernel text and data into a single one that gets created and relocated before start_kernel() is called. Signed-off-by: Ard Biesheuvel --- arch/arm64/kernel/head.S | 17 +++++++++-------- arch/arm64/kernel/vmlinux.lds.S | 4 +--- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S index 2af518161f3a..865ecc1f8255 100644 --- a/arch/arm64/kernel/head.S +++ b/arch/arm64/kernel/head.S @@ -375,9 +375,9 @@ SYM_FUNC_START_LOCAL(create_idmap) map_memory x0, x1, x3, x6, x7, x3, IDMAP_PGD_ORDER, x10, x11, x12, x13, x14, EXTRA_SHIFT - /* Remap BSS and the kernel page tables r/w in the ID map */ + /* Remap [.init].data, BSS and the kernel page tables r/w in the ID map */ adrp x1, _text - adrp x2, __bss_start + adrp x2, __initdata_begin adrp x3, _end bic x4, x2, #SWAPPER_BLOCK_SIZE - 1 mov_q x5, SWAPPER_RW_MMUFLAGS @@ -491,9 +491,6 @@ SYM_FUNC_START_LOCAL(__primary_switched) #if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS) bl kasan_early_init #endif - mov x0, x20 // pass the full boot status - mov x1, x22 // pass the low FDT mapping - bl __pi_init_feature_override // Parse cpu feature overrides #ifdef CONFIG_UNWIND_PATCH_PAC_INTO_SCS bl scs_patch_vmlinux #endif @@ -772,12 +769,16 @@ SYM_FUNC_START_LOCAL(__primary_switch) bl __pi_memset dsb ishst // Make zero page visible to PTW -#ifdef CONFIG_RELOCATABLE - adrp x23, KERNEL_START - and x23, x23, MIN_KIMG_ALIGN - 1 adrp x1, early_init_stack mov sp, x1 mov x29, xzr + mov x0, x20 // pass the full boot status + mov x1, x22 // pass the low FDT mapping + bl __pi_init_feature_override // Parse cpu feature overrides + +#ifdef CONFIG_RELOCATABLE + adrp x23, KERNEL_START + and x23, x23, MIN_KIMG_ALIGN - 1 #ifdef CONFIG_RANDOMIZE_BASE mov x0, x22 bl __pi_kaslr_early_init diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S index 8a3c6aacc355..3afb4223a5e8 100644 --- a/arch/arm64/kernel/vmlinux.lds.S +++ b/arch/arm64/kernel/vmlinux.lds.S @@ -320,10 +320,8 @@ SECTIONS init_pg_end = .; /* end of zero-init region */ -#ifdef CONFIG_RELOCATABLE - . += SZ_4K; /* stack for the early relocation code */ + . += SZ_4K; /* stack for the early C runtime */ early_init_stack = .; -#endif . = ALIGN(SEGMENT_ALIGN); __pecoff_data_size = ABSOLUTE(. - __initdata_begin); -- 2.43.0.rc1.413.gea7ed67945-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel