]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/x86/kernel/setup.c
x86: efi: Turn off efi_enabled after setup on mixed fw/kernel
[karo-tx-linux.git] / arch / x86 / kernel / setup.c
index a2bb18e02839489dcbf9dbc1e3d348f5fb176c34..6fd7752cee9607513729b1b505ac56ed716c501e 100644 (file)
@@ -1035,6 +1035,18 @@ void __init setup_arch(char **cmdline_p)
        arch_init_ideal_nops();
 
        register_refined_jiffies(CLOCK_TICK_RATE);
+
+#ifdef CONFIG_EFI
+       /* Once setup is done above, disable efi_enabled on mismatched
+        * firmware/kernel archtectures since there is no support for
+        * runtime services.
+        */
+       if (efi_enabled && IS_ENABLED(CONFIG_X86_64) != efi_64bit) {
+               pr_info("efi: Setup done, disabling due to 32/64-bit mismatch\n");
+               efi_unmap_memmap();
+               efi_enabled = 0;
+       }
+#endif
 }
 
 #ifdef CONFIG_X86_32