summarylogtreecommitdiffstats
path: root/0003-x86-setup-Merge-several-reservations-of-start-of-mem.patch
diff options
context:
space:
mode:
Diffstat (limited to '0003-x86-setup-Merge-several-reservations-of-start-of-mem.patch')
-rw-r--r--0003-x86-setup-Merge-several-reservations-of-start-of-mem.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/0003-x86-setup-Merge-several-reservations-of-start-of-mem.patch b/0003-x86-setup-Merge-several-reservations-of-start-of-mem.patch
new file mode 100644
index 00000000000..eca80260ba1
--- /dev/null
+++ b/0003-x86-setup-Merge-several-reservations-of-start-of-mem.patch
@@ -0,0 +1,67 @@
+From e63cb4a867fe803dc90376af8b268ba1549ec36e Mon Sep 17 00:00:00 2001
+From: Mike Rapoport <rppt@linux.ibm.com>
+Date: Tue, 2 Mar 2021 12:04:06 +0200
+Subject: [PATCH 3/8] x86/setup: Merge several reservations of start of memory
+
+Currently, the first several pages are reserved both to avoid leaking
+their contents on systems with L1TF and to avoid corrupting BIOS memory.
+
+Merge the two memory reservations.
+
+Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Reviewed-by: David Hildenbrand <david@redhat.com>
+Acked-by: Borislav Petkov <bp@suse.de>
+Link: https://lkml.kernel.org/r/20210302100406.22059-3-rppt@kernel.org
+---
+ arch/x86/kernel/setup.c | 19 ++++++++++---------
+ 1 file changed, 10 insertions(+), 9 deletions(-)
+
+diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
+index 420d881da2bd..282d572e49af 100644
+--- a/arch/x86/kernel/setup.c
++++ b/arch/x86/kernel/setup.c
+@@ -714,11 +714,6 @@ static int __init parse_reservelow(char *p)
+
+ early_param("reservelow", parse_reservelow);
+
+-static void __init trim_low_memory_range(void)
+-{
+- memblock_reserve(0, ALIGN(reserve_low, PAGE_SIZE));
+-}
+-
+ static void __init early_reserve_memory(void)
+ {
+ /*
+@@ -731,10 +726,17 @@ static void __init early_reserve_memory(void)
+ (unsigned long)__end_of_kernel_reserve - (unsigned long)_text);
+
+ /*
+- * Make sure page 0 is always reserved because on systems with
+- * L1TF its contents can be leaked to user processes.
++ * The first 4Kb of memory is a BIOS owned area, but generally it is
++ * not listed as such in the E820 table.
++ *
++ * Reserve the first memory page and typically some additional
++ * memory (64KiB by default) since some BIOSes are known to corrupt
++ * low memory. See the Kconfig help text for X86_RESERVE_LOW.
++ *
++ * In addition, make sure page 0 is always reserved because on
++ * systems with L1TF its contents can be leaked to user processes.
+ */
+- memblock_reserve(0, PAGE_SIZE);
++ memblock_reserve(0, ALIGN(reserve_low, PAGE_SIZE));
+
+ early_reserve_initrd();
+
+@@ -747,7 +749,6 @@ static void __init early_reserve_memory(void)
+ reserve_bios_regions();
+
+ trim_snb_memory();
+- trim_low_memory_range();
+ }
+
+ /*
+--
+2.32.0
+