EFI fixes
Linus,
Please pull the latest efi-urgent-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git efi-urgent-for-linus
# HEAD: 4911ee401b7ceff8f38e0ac597cbf503d71e690c x86/efistub: Disable paging at mixed mode entry
Three EFI fixes:
- Fix a slow-boot-scrolling regression but making sure we use WC for EFI earlycon framebuffer mappings on x86
- Fix a mixed EFI mode boot crash
- Disable paging explicitly before entering startup_32() in mixed mode bootup
Thanks,
Ingo
------------------>
Ard Biesheuvel (1):
x86/efistub: Disable paging at mixed mode entry
Arvind Sankar (1):
efi/earlycon: Fix write-combine mapping on x86
Hans de Goede (1):
efi/libstub/random: Initialize pointer variables to zero for mixed mode
arch/x86/boot/compressed/head_64.S | 5 +++++ drivers/firmware/efi/earlycon.c | 16 +++++++--------- drivers/firmware/efi/libstub/random.c | 6 +++--- 3 files changed, 15 insertions(+), 12 deletions(-)
arch/x86/boot/compressed/head_64.S +5 -0
@@ -244,6 +244,11 @@ SYM_FUNC_START(efi32_stub_entry) leal efi32_config(%ebp), %eax movl %eax, efi_config(%ebp) + /* Disable paging */ + movl %cr0, %eax + btrl $X86_CR0_PG_BIT, %eax + movl %eax, %cr0 + jmp startup_32 SYM_FUNC_END(efi32_stub_entry) #endif
drivers/firmware/efi/earlycon.c +7 -9
@@ -17,7 +17,7 @@ static const struct console *earlycon_console __initdata;static const struct font_desc *font;static u32 efi_x, efi_y;static u64 fb_base; -static pgprot_t fb_prot; +static bool fb_wb;static void *efi_fb;/*
@@ -33,10 +33,8 @@ static int __init efi_earlycon_remap_fb(void)if (!earlycon_console || !(earlycon_console->flags &CON_ENABLED ))return 0 ; -if (pgprot_val (fb_prot) ==pgprot_val (PAGE_KERNEL )) - efi_fb =memremap (fb_base, screen_info.lfb_size,MEMREMAP_WB ); -else - efi_fb =memremap (fb_base, screen_info.lfb_size,MEMREMAP_WC ); + efi_fb =memremap (fb_base, screen_info.lfb_size, + fb_wb ?MEMREMAP_WB :MEMREMAP_WC );return efi_fb ?0 : -ENOMEM ; }
@@ -53,9 +51,12 @@ late_initcall(efi_earlycon_unmap_fb);static __ref void *efi_earlycon_map (unsigned long start,unsigned long len) { +pgprot_t fb_prot; +if (efi_fb)return efi_fb + start; + fb_prot = fb_wb ?PAGE_KERNEL :pgprot_writecombine (PAGE_KERNEL );return early_memremap_prot (fb_base + start, len,pgprot_val (fb_prot)); }
@@ -215,10 +216,7 @@ static int __init efi_earlycon_setup(struct earlycon_device *device,if (screen_info.capabilities &VIDEO_CAPABILITY_64BIT_BASE ) fb_base |= (u64 )screen_info.ext_lfb_base <<32 ; -if (opt && !strcmp (opt,"ram" )) - fb_prot =PAGE_KERNEL ; -else - fb_prot =pgprot_writecombine (PAGE_KERNEL ); + fb_wb = opt && !strcmp (opt,"ram" ); si = &screen_info; xres = si->lfb_width;
drivers/firmware/efi/libstub/random.c +3 -3
@@ -33,7 +33,7 @@ efi_status_t efi_get_random_bytes(efi_system_table_t *sys_table_arg, {efi_guid_t rng_proto =EFI_RNG_PROTOCOL_GUID ;efi_status_t status; -struct efi_rng_protocol *rng; +struct efi_rng_protocol *rng =NULL ; status =efi_call_early (locate_protocol, &rng_proto,NULL , (void **)&rng);
@@ -162,8 +162,8 @@ efi_status_t efi_random_get_seed(efi_system_table_t *sys_table_arg)efi_guid_t rng_proto =EFI_RNG_PROTOCOL_GUID ;efi_guid_t rng_algo_raw =EFI_RNG_ALGORITHM_RAW ;efi_guid_t rng_table_guid =LINUX_EFI_RANDOM_SEED_TABLE_GUID ; -struct efi_rng_protocol *rng; -struct linux_efi_random_seed *seed; +struct efi_rng_protocol *rng =NULL ; +struct linux_efi_random_seed *seed =NULL ;efi_status_t status; status = efi_call_early(locate_protocol, &rng_proto, NULL,
The pull request you sent on Sat, 18 Jan 2020 18:16:33 +0100:
The pull request you sent on Sat, 18 Jan 2020 18:16:33 +0100:
Quoted 1 line
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitefi-urgent-for-linus
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/e2f73d1e52a5b3c53f11861f31d726168ca92ce6
Thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.wiki.kernel.org/userdoc/prtracker