diff options
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.patch | 67 |
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 000000000000..eca80260ba10 --- /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 + |