From: Evgeniy Baskov <baskov@ispras.ru>
To: Borislav Petkov <bp@alien8.de>
Cc: Evgeniy Baskov <baskov@ispras.ru>,
Dave Hansen <dave.hansen@linux.intel.com>,
Ingo Molnar <mingo@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
Andy Lutomirski <luto@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
x86@kernel.org, linux-kernel@vger.kernel.org,
Alexey Khoroshilov <khoroshilov@ispras.ru>
Subject: [PATCH 4/8] x86/boot: Increase boot page table size
Date: Mon, 1 Aug 2022 19:39:01 +0300 [thread overview]
Message-ID: <41d46feb211e4e4a4c4ef150408ceedb35e94f21.1659369873.git.baskov@ispras.ru> (raw)
In-Reply-To: <cover.1659369873.git.baskov@ispras.ru>
Previous calculations ignored pages implicitly mapped by ACPI code,
so theoretical upper limit is higher than was set.
Using 4KB pages is desirable for better memory protection granularity.
Approximately twice as much memory is required for those.
Increase initial page table size to 64 4KB page tables.
Signed-off-by: Evgeniy Baskov <baskov@ispras.ru>
diff --git a/arch/x86/include/asm/boot.h b/arch/x86/include/asm/boot.h
index 9191280d9ea3..024d972c248e 100644
--- a/arch/x86/include/asm/boot.h
+++ b/arch/x86/include/asm/boot.h
@@ -41,22 +41,24 @@
# define BOOT_STACK_SIZE 0x4000
# define BOOT_INIT_PGT_SIZE (6*4096)
-# ifdef CONFIG_RANDOMIZE_BASE
/*
* Assuming all cross the 512GB boundary:
* 1 page for level4
- * (2+2)*4 pages for kernel, param, cmd_line, and randomized kernel
- * 2 pages for first 2M (video RAM: CONFIG_X86_VERBOSE_BOOTUP).
- * Total is 19 pages.
+ * (3+3)*2 pages for param and cmd_line
+ * (2+2+S)*2 pages for kernel and randomized kernel, where S is total number
+ * of sections of kernel. Explanation: 2+2 are upper level page tables.
+ * We can have only S unaligned parts of section: 1 at the end of the kernel
+ * and (S-1) at the section borders. The start address of the kernel is
+ * aligned, so an extra page table. There are at most S=6 sections in
+ * vmlinux ELF image.
+ * 3 pages for first 2M (video RAM: CONFIG_X86_VERBOSE_BOOTUP).
+ * Total is 36 pages.
+ *
+ * Some pages are also required for UEFI memory map and
+ * ACPI table mappings, so we need to add extra space.
+ * FIXME: Figure out exact amount of pages.
*/
-# ifdef CONFIG_X86_VERBOSE_BOOTUP
-# define BOOT_PGT_SIZE (19*4096)
-# else /* !CONFIG_X86_VERBOSE_BOOTUP */
-# define BOOT_PGT_SIZE (17*4096)
-# endif
-# else /* !CONFIG_RANDOMIZE_BASE */
-# define BOOT_PGT_SIZE BOOT_INIT_PGT_SIZE
-# endif
+# define BOOT_PGT_SIZE (64*4096)
#else /* !CONFIG_X86_64 */
# define BOOT_STACK_SIZE 0x1000
--
2.35.1
next prev parent reply other threads:[~2022-08-01 16:39 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-01 16:38 [RFC PATCH 0/8] x86_64: Harden compressed kernel, part 1 Evgeniy Baskov
2022-08-01 16:38 ` [PATCH 1/8] x86/boot: Align vmlinuz sections on page size Evgeniy Baskov
2022-08-01 16:38 ` [PATCH 2/8] x86/build: Remove RWX sections and align on 4KB Evgeniy Baskov
2022-08-01 16:39 ` [PATCH 3/8] x86/boot: Set cr0 to known state in trampoline Evgeniy Baskov
2022-08-01 16:39 ` Evgeniy Baskov [this message]
2022-08-01 16:39 ` [PATCH 5/8] x86/boot: Support 4KB pages for identity mapping Evgeniy Baskov
2022-08-01 16:39 ` [PATCH 6/8] x86/boot: Setup memory protection for bzImage code Evgeniy Baskov
2022-08-01 16:39 ` [PATCH 7/8] x86/boot: Map memory explicitly Evgeniy Baskov
2022-08-01 16:39 ` [PATCH 8/8] x86/boot: Remove mapping from page fault handler Evgeniy Baskov
2022-08-01 16:48 ` [RFC PATCH 0/8] x86_64: Harden compressed kernel, part 1 Dave Hansen
2022-08-02 0:25 ` Evgeniy Baskov
2022-08-02 2:41 ` Dave Hansen
2022-08-02 23:45 ` Evgeniy Baskov
2022-08-03 14:05 ` Dave Hansen
2022-08-04 10:41 ` Evgeniy Baskov
2022-08-04 11:22 ` Greg KH
2022-08-04 14:26 ` Evgeniy Baskov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=41d46feb211e4e4a4c4ef150408ceedb35e94f21.1659369873.git.baskov@ispras.ru \
--to=baskov@ispras.ru \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=khoroshilov@ispras.ru \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®