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 9FD86C48BC1 for ; Wed, 14 Feb 2024 12:30:37 +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=lFiUbacse8MAFr8+JycQvcZjVl3BDTVqtwLapN4b91w=; b=zFkBu13rJbbTdvVvQ3GYx6JO9V 4DrdP352ilyKfeXIG+uhwL8SZTI9KRQGofwDZn10xa/08aQ0mXtNb30K4NAeVM9AUkvNVHfIWXBnZ LqbqotmogTcZ7bsXoD8MFXQhO2UJAsPMrK8leVypLq5qlifSnn/pbkRdkn5OZnCny3SNecDVhOjML bZXqAOp7Wo5kDTr+cZNVcUNLEq1ZZSbOlP9RgzrLwzNuVrYOyTRM+jEwsaywTNxVQxTOYIHSvGWr8 6S320Rv8dwBVYsiSrAwCjyZCWWDTUHGSL+0gFd4c+peefRqkLIdPGVqLs+m5kXn2Qn9/eRknGUowQ 5ZQwm5QQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1raEP9-0000000CoZb-28NH; Wed, 14 Feb 2024 12:30:23 +0000 Received: from mail-yb1-xb4a.google.com ([2607:f8b0:4864:20::b4a]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1raEOk-0000000CoJQ-3idv for linux-arm-kernel@lists.infradead.org; Wed, 14 Feb 2024 12:30:00 +0000 Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-dc647f65573so9989109276.2 for ; Wed, 14 Feb 2024 04:29:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1707913797; x=1708518597; 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=yWMB8S0sfoJjHCnqUTC85QDDaeeVGIGJzG9zDMb7I1Y=; b=SC3ZeMqX/vMOHeHRgYnvfz/RrP9VMVvfyqHqYDxCLvIgukO2daSqEHyN+5gLnpQGVx NKfviM2uZhWib/YMawUPNG/gFUjU29wGqut1nOic6W3hd7c9LnFjf2wFpUpZirtW9XZj YXim+qUDjt8u2t7ojrxonG61ICJzA+TgnfqtUDo2ikd2BsZXEOYoBVVWQ8KBox62ahap PXSFRVTaV+1Ze/o9piZC7OpAnHCax7UKnwzKiX7Jo9VvT0GhPV7iEfotf0WcKnLxbVdj D/BmZH5CDN7IwdGrZksKsI7r87ttB6XLuPMCYZwqmLAVYzO6BNaMAgLiAKPVd2ysazDS GTWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707913797; x=1708518597; 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=yWMB8S0sfoJjHCnqUTC85QDDaeeVGIGJzG9zDMb7I1Y=; b=Eo2BZ8WJ0RY7tEV4FltfBCFyg0Ty2YEnu5LCnWejSLo1lc8rKQiYgv1g1JCJAuCa4r hcIBFEwlHEj8YGEbAjYzUTUSPwW21/x+VjE9FkjfTi/w1j3mjDCdd8VD8tM8nPwLbAd/ Kt3El2A6xQ8BjYxct2m7RY3kotUwR14AGWarwvv+2kBqHeV7UoluuZIeQxbzESrWiz2d tMSkEEjy7lw7odXjbIbQVv36lndx8X8PyL+lUtXvWs4c//WHLBcp+Kr366NYJKORcJSM alCuVclUBG5y8P3IZUPSBgRZo38mljv7/gYL0kW51cssioNywZG6ld65Ct+7+zs0A8xq jmwQ== X-Gm-Message-State: AOJu0YwBn+iN3aJu2KDkYjjqU5a/nHgW/VpOLF4IaQMBOYbSQ+JoAH22 dvI/nmUh4tBvxiiDUWirpDIvY8HA5kF0jO8zJLgg5lYbiuEJpanDq5RRz9W6sevhD4UPfrb8kHb eVx9OcUM3yTYS/q37n04BY0QBbIYBd8fyxTinmn9KTQ1mO+pdKSRuvtr66j0vdvOIkoNTZNqcir 4mlWIbVY3N1L1l8XxNtNuzQ5Z7pOmnDOLvmJj2lJd7 X-Google-Smtp-Source: AGHT+IGQh5qFkEgzgwrYtxxNTyCKQLL2wB2umqO6tmVVKUrPGHUEbpV/qyDJET8lFgNOI2sgMHgDAnUo X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a05:6902:70b:b0:dc7:8e30:e2e3 with SMTP id k11-20020a056902070b00b00dc78e30e2e3mr508048ybt.2.1707913797037; Wed, 14 Feb 2024 04:29:57 -0800 (PST) Date: Wed, 14 Feb 2024 13:28:54 +0100 In-Reply-To: <20240214122845.2033971-45-ardb+git@google.com> Mime-Version: 1.0 References: <20240214122845.2033971-45-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=2825; i=ardb@kernel.org; h=from:subject; bh=Ao6ge1QBnZt8HtdmwwtFlOcMbTxjhwll6puetzVkrqw=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIfXMJvan3xfplWss69nR2PxM4VSu0aIwwTZu96if09Y81 JrZ16feUcrCIMbBICumyCIw+++7nacnStU6z5KFmcPKBDKEgYtTACbiNIHhn6rFrW+7C0yz94Ye tFox+cBpyy1z5mUxb+XeFb5G8dafifEM/9Q3XHiy1cIlcEXg2qcNeYrhU09zq4Ts+pVnsGsDC+s eBnYA X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog Message-ID: <20240214122845.2033971-53-ardb+git@google.com> Subject: [PATCH v8 08/43] 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-20240214_042959_056488_27ACD7F0 X-CRM114-Status: GOOD ( 14.12 ) 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.687.g38aa6559b0-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel