From c40066708805dd2f7ccb0855635c24f0e5605a5d Mon Sep 17 00:00:00 2001 From: jc_gargma Date: Tue, 3 Aug 2021 10:57:54 -0700 Subject: Updated to 5.13.7 --- ...-setup-always-reserve-the-first-1M-of-RAM.patch | 170 --------------------- 1 file changed, 170 deletions(-) delete mode 100644 0005-x86-setup-always-reserve-the-first-1M-of-RAM.patch (limited to '0005-x86-setup-always-reserve-the-first-1M-of-RAM.patch') diff --git a/0005-x86-setup-always-reserve-the-first-1M-of-RAM.patch b/0005-x86-setup-always-reserve-the-first-1M-of-RAM.patch deleted file mode 100644 index 6f21224..0000000 --- a/0005-x86-setup-always-reserve-the-first-1M-of-RAM.patch +++ /dev/null @@ -1,170 +0,0 @@ -From d95f872247541176d4edf5664198ed9edb12f134 Mon Sep 17 00:00:00 2001 -From: Mike Rapoport -Date: Tue, 1 Jun 2021 10:53:52 +0300 -Subject: x86/setup: always reserve the first 1M of RAM - -There are BIOSes that are known to corrupt the memory under 1M, or more -precisely under 640K because the memory above 640K is anyway reserved for -the EGA/VGA frame buffer and BIOS. - -To prevent usage of the memory that will be potentially clobbered by the -kernel, the beginning of the memory is always reserved. The exact size of -the reserved area is determined by CONFIG_X86_RESERVE_LOW build time and -reservelow command line option. The reserved range may be from 4K to 640K -with the default of 64K. There are also configurations that reserve the -entire 1M range, like machines with SandyBridge graphic devices or systems -that enable crash kernel. - -In addition to the potentially clobbered memory, EBDA of unknown size may -be as low as 128K and the memory above that EBDA start is also reserved -early. - -It would have been possible to reserve the entire range under 1M unless for -the real mode trampoline that must reside in that area. - -To accommodate placement of the real mode trampoline and keep the memory -safe from being clobbered by BIOS reserve the first 64K of RAM before -memory allocations are possible and then, after the real mode trampoline is -allocated, reserve the entire range from 0 to 1M. - -Update trim_snb_memory() and reserve_real_mode() to avoid redundant -reservations of the same memory range. - -Also make sure the memory under 1M is not getting freed by -efi_free_boot_services(). - -Fixes: a799c2bd29d1 ("x86/setup: Consolidate early memory reservations") -Signed-off-by: Mike Rapoport ---- - arch/x86/kernel/setup.c | 35 +++++++++++++++++++++-------------- - arch/x86/platform/efi/quirks.c | 12 ++++++++++++ - arch/x86/realmode/init.c | 14 ++++++++------ - 3 files changed, 41 insertions(+), 20 deletions(-) - -diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c -index 7d466f51be1f..d7cfb927864f 100644 ---- a/arch/x86/kernel/setup.c -+++ b/arch/x86/kernel/setup.c -@@ -638,11 +638,11 @@ static void __init trim_snb_memory(void) - * them from accessing certain memory ranges, namely anything below - * 1M and in the pages listed in bad_pages[] above. - * -- * To avoid these pages being ever accessed by SNB gfx devices -- * reserve all memory below the 1 MB mark and bad_pages that have -- * not already been reserved at boot time. -+ * To avoid these pages being ever accessed by SNB gfx devices reserve -+ * bad_pages that have not already been reserved at boot time. -+ * All memory below the 1 MB mark is anyway reserved later during -+ * setup_arch(), so there is no need to reserve it here. - */ -- memblock_reserve(0, 1<<20); - - for (i = 0; i < ARRAY_SIZE(bad_pages); i++) { - if (memblock_reserve(bad_pages[i], PAGE_SIZE)) -@@ -734,14 +734,14 @@ static void __init early_reserve_memory(void) - * 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. -+ * Reserve the first 64K of memory since some BIOSes are known to -+ * corrupt low memory. After the real mode trampoline is allocated the -+ * rest of the memory below 640k is reserved. - * - * 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, ALIGN(reserve_low, PAGE_SIZE)); -+ memblock_reserve(0, SZ_64K); - - early_reserve_initrd(); - -@@ -752,6 +752,7 @@ static void __init early_reserve_memory(void) - - reserve_ibft_region(); - reserve_bios_regions(); -+ trim_snb_memory(); - } - - /* -@@ -1083,14 +1084,20 @@ void __init setup_arch(char **cmdline_p) - (max_pfn_mapped<