Message ID | 20241014105912.3207374-37-ryan.roberts@arm.com (mailing list archive) |
---|---|
State | New |
Headers | show
Return-Path: <owner-linux-mm@kvack.org> X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id AC72ED1A45F for <linux-mm@archiver.kernel.org>; Mon, 14 Oct 2024 11:01:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3FAD66B00C4; Mon, 14 Oct 2024 07:01:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3A9B66B00C5; Mon, 14 Oct 2024 07:01:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 273186B00C6; Mon, 14 Oct 2024 07:01:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 077086B00C4 for <linux-mm@kvack.org>; Mon, 14 Oct 2024 07:01:26 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id D15D7120D88 for <linux-mm@kvack.org>; Mon, 14 Oct 2024 11:01:18 +0000 (UTC) X-FDA: 82671916278.09.C4EE1D4 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf19.hostedemail.com (Postfix) with ESMTP id 8B3671A0026 for <linux-mm@kvack.org>; Mon, 14 Oct 2024 11:01:16 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=none; spf=pass (imf19.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728903612; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sUJHwqHFRx+14j6h+df8VkAiqppEg2Zp0LAwcqaTc7A=; b=libij//WnbyRHtHM54hBlyh9x8fy5G0z8yMAA/ir+nvaET1juf3GIP6wRnWycIuaD809cS arPGImRw+GXssYsftrRG0mSL4584exsHXIA4zR47Vouf34kIL8wjH4RYWvKpXHfYt5hUH6 VKTbTbIruVaz30kOwecfySmDT68FxA4= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=none; spf=pass (imf19.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728903612; a=rsa-sha256; cv=none; b=6kRG5S3SztztMz1O0yrPPYIO+UsbMMyFMWd9CVrNVdTH2e9GMVfctAMnCHrJgPoURKURej G5luWt4EIvXPVqZklh0TGGeDrUJgE6kbnFTRh/gEEC5/z6sCdU/n/Ht4x4N479SGqHZNcT VoxmS5hsWdgnom1GLMMH4gWcpUAf6S0= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1861F1756; Mon, 14 Oct 2024 04:01:53 -0700 (PDT) Received: from e125769.cambridge.arm.com (e125769.cambridge.arm.com [10.1.196.27]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 18CCC3F51B; Mon, 14 Oct 2024 04:01:20 -0700 (PDT) From: Ryan Roberts <ryan.roberts@arm.com> To: Andrew Morton <akpm@linux-foundation.org>, Anshuman Khandual <anshuman.khandual@arm.com>, Ard Biesheuvel <ardb@kernel.org>, Catalin Marinas <catalin.marinas@arm.com>, David Hildenbrand <david@redhat.com>, Greg Marsden <greg.marsden@oracle.com>, Ivan Ivanov <ivan.ivanov@suse.com>, Kalesh Singh <kaleshsingh@google.com>, Marc Zyngier <maz@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Matthias Brugger <mbrugger@suse.com>, Miroslav Benes <mbenes@suse.cz>, Will Deacon <will@kernel.org> Cc: Ryan Roberts <ryan.roberts@arm.com>, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH v1 37/57] arm64: Fix macros to work in C code in addition to the linker script Date: Mon, 14 Oct 2024 11:58:44 +0100 Message-ID: <20241014105912.3207374-37-ryan.roberts@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241014105912.3207374-1-ryan.roberts@arm.com> References: <20241014105514.3206191-1-ryan.roberts@arm.com> <20241014105912.3207374-1-ryan.roberts@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 8B3671A0026 X-Stat-Signature: stsgfwm8ats993zayojq5syo4dp7yg8w X-HE-Tag: 1728903676-94295 X-HE-Meta: U2FsdGVkX18C7P8lEqjZOabvHg4YMxpgiwFaH6Ipz7oPPhyVD074GIuylKQzWGC6A+2H+cCYeNSBvRvo5uGZsFUY+jovLYmZaLcaqscSsnS4tadDNu4Zd41m7LMYEV9hZj+p6Y0lX1X9AWz9cuA6tNvjTOcqCrHFNJAOEsZoLmKthMieCBjbr39KRn/rxkLHfIBUVPtGPc9LpMbELK0X+Q3A077iXdHrniTJmNFSzrX7cmctb1bXUpauzLdunq7gzCYEwlhm8jPXPXSzspjBgLxIrs+gR6hygb8tzTbddcTYz/0i4QPLZjhkd1XYO/ABd0j5B+W5cqlTDkZfO+Utv/9DnxD+WCk8smiFysm/quoxvl+i0nLnaUnZtUB6Himn/GrDvwa3S4BP2noc6tlangCqXvCmjrMz073KJiUdd9F2GiIi3IKkGImTwz6JuMii0kriN8aS1oowpf4LxXREGu+JL4c8wIjEkQe9IBMXVBGEbnQ0q6DiT5WKk1VDN2QuUtz9mxRp/Z2DX/s1fp6JKHUu73D7dbA3+MaZ2CkI/3igjSg48KXaXhroXkQbQwpBRO3w2DtHRgpoNPh5mlR/a9gb/FCQLqp9LDnXixjpmZiKpsvBgUYhGyEKuLOfjFT8e4sCl/2MXEW3ADpLRvyEbIAb6leeHPweSMuzoPIK6yaHy6CWSwoLnu4y6wpFjqetXbm6v7f18PvNnR9XGeYyLDp5xznAAEqEQhD0ufektQDQvP+RewKDpGmWB93SdYjJgdBD7VvnhcZKLeeOP0jmR5Q+okJJWaP5jxZiJ53112Xk+YyRr0V9OAOfvYyys2Ve/PI5EfGPwX2neiwvV0hO0Pzweh8ha/QBBjZcU844yjQofZV53cWb5hi7ohpIewVbgKqaud+68o2zqsEMHe73/BTPBj4Gn8N7nsigtUYIlNwFds3qdu+nLXCUgBYSvQcNDcTWQ/TgTTzmnIK7nPS Dib96NOA CbRCXpJcrJqZYNzeGW0GyxGIjMDxgydxAfHpCnRENkwNVxLWcKbhIgqs3QGMyl4rePFFoeTovx3OOg+AVhkfZfqMmJL3d6Ab4px3CckX15816Fji1IPQfstr028RYEer9GdYvC3gKm68X9Of5dB9U97e6leWnfkwQuXC5L403UHD8tDi8XYY3Eb5VFi4QFV8gGnvX5hbx3oKLyoc= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: <linux-mm.kvack.org> List-Subscribe: <mailto:majordomo@kvack.org> List-Unsubscribe: <mailto:majordomo@kvack.org> |
Series |
Boot-time page size selection for arm64
|
expand
|
diff --git a/arch/arm64/include/asm/kernel-pgtable.h b/arch/arm64/include/asm/kernel-pgtable.h index bf05a77873a49..1722b9217d47d 100644 --- a/arch/arm64/include/asm/kernel-pgtable.h +++ b/arch/arm64/include/asm/kernel-pgtable.h @@ -35,6 +35,8 @@ #define IDMAP_LEVELS ARM64_HW_PGTABLE_LEVELS(IDMAP_VA_BITS) #define IDMAP_ROOT_LEVEL (4 - IDMAP_LEVELS) +#define KIMAGE_VADDR_END (_AT(u64, _end) - _AT(u64, _text) + KIMAGE_VADDR) + /* * A relocatable kernel may execute from an address that differs from the one at * which it was linked. In the worst case, its runtime placement may intersect @@ -56,10 +58,10 @@ + EARLY_LEVEL(3, (lvls), (vstart), (vend), add) /* each entry needs a next level page table */ \ + EARLY_LEVEL(2, (lvls), (vstart), (vend), add) /* each entry needs a next level page table */ \ + EARLY_LEVEL(1, (lvls), (vstart), (vend), add))/* each entry needs a next level page table */ -#define INIT_DIR_SIZE (PAGE_SIZE * (EARLY_PAGES(SWAPPER_PGTABLE_LEVELS, KIMAGE_VADDR, _end, EXTRA_PAGE) \ +#define INIT_DIR_SIZE (PAGE_SIZE * (EARLY_PAGES(SWAPPER_PGTABLE_LEVELS, KIMAGE_VADDR, KIMAGE_VADDR_END, EXTRA_PAGE) \ + EARLY_SEGMENT_EXTRA_PAGES)) -#define INIT_IDMAP_DIR_PAGES (EARLY_PAGES(INIT_IDMAP_PGTABLE_LEVELS, KIMAGE_VADDR, _end, 1)) +#define INIT_IDMAP_DIR_PAGES (EARLY_PAGES(INIT_IDMAP_PGTABLE_LEVELS, KIMAGE_VADDR, KIMAGE_VADDR_END, 1)) #define INIT_IDMAP_DIR_SIZE ((INIT_IDMAP_DIR_PAGES + EARLY_IDMAP_EXTRA_PAGES) * PAGE_SIZE) #define INIT_IDMAP_FDT_PAGES (EARLY_PAGES(INIT_IDMAP_PGTABLE_LEVELS, 0UL, UL(MAX_FDT_SIZE), 1) - 1)
Previously INIT_DIR_SIZE and INIT_IDMAP_DIR_SIZE used _end for the end address of the kernel image. In the linker script context, this resolves to an integer that refers to the link va of the end of the kernel image. But in C code it resolves to a pointer to the end of the image as placed in memory. So there are 2 problems; because its a pointer, we can't do arithmetic on it. And because the image may be in a different location in memory than the one it was linked at, it is not correct to find the image size by subtracting KIMAGE_VADDR. So introduce KIMAGE_VADDR_END, which always represents the link va of the end of the kernel image as an integer. Signed-off-by: Ryan Roberts <ryan.roberts@arm.com> --- ***NOTE*** Any confused maintainers may want to read the cover note here for context: https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/ arch/arm64/include/asm/kernel-pgtable.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)