瀏覽代碼

x86/efi: Add a "debug" option to the efi= cmdline

... and hide the memory regions dump behind it. Make it default-off.

Signed-off-by: Borislav Petkov <bp@suse.de>
Link: http://lkml.kernel.org/r/20141209095843.GA3990@pd.tnic
Acked-by: Laszlo Ersek <lersek@redhat.com>
Acked-by: Dave Young <dyoung@redhat.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Borislav Petkov 10 年之前
父節點
當前提交
fed6cefe3b
共有 3 個文件被更改,包括 7 次插入2 次删除
  1. 2 1
      Documentation/kernel-parameters.txt
  2. 4 1
      arch/x86/platform/efi/efi.c
  3. 1 0
      include/linux/efi.h

+ 2 - 1
Documentation/kernel-parameters.txt

@@ -1036,7 +1036,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
 			Format: {"off" | "on" | "skip[mbr]"}
 			Format: {"off" | "on" | "skip[mbr]"}
 
 
 	efi=		[EFI]
 	efi=		[EFI]
-			Format: { "old_map", "nochunk", "noruntime" }
+			Format: { "old_map", "nochunk", "noruntime", "debug" }
 			old_map [X86-64]: switch to the old ioremap-based EFI
 			old_map [X86-64]: switch to the old ioremap-based EFI
 			runtime services mapping. 32-bit still uses this one by
 			runtime services mapping. 32-bit still uses this one by
 			default.
 			default.
@@ -1044,6 +1044,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
 			boot stub, as chunking can cause problems with some
 			boot stub, as chunking can cause problems with some
 			firmware implementations.
 			firmware implementations.
 			noruntime : disable EFI runtime services support
 			noruntime : disable EFI runtime services support
+			debug: enable misc debug output
 
 
 	efi_no_storage_paranoia [EFI; X86]
 	efi_no_storage_paranoia [EFI; X86]
 			Using this parameter you can use more than 50% of
 			Using this parameter you can use more than 50% of

+ 4 - 1
arch/x86/platform/efi/efi.c

@@ -491,7 +491,8 @@ void __init efi_init(void)
 	if (efi_memmap_init())
 	if (efi_memmap_init())
 		return;
 		return;
 
 
-	print_efi_memmap();
+	if (efi_enabled(EFI_DBG))
+		print_efi_memmap();
 }
 }
 
 
 void __init efi_late_init(void)
 void __init efi_late_init(void)
@@ -939,6 +940,8 @@ static int __init arch_parse_efi_cmdline(char *str)
 {
 {
 	if (parse_option_str(str, "old_map"))
 	if (parse_option_str(str, "old_map"))
 		set_bit(EFI_OLD_MEMMAP, &efi.flags);
 		set_bit(EFI_OLD_MEMMAP, &efi.flags);
+	if (parse_option_str(str, "debug"))
+		set_bit(EFI_DBG, &efi.flags);
 
 
 	return 0;
 	return 0;
 }
 }

+ 1 - 0
include/linux/efi.h

@@ -942,6 +942,7 @@ extern int __init efi_setup_pcdp_console(char *);
 #define EFI_64BIT		5	/* Is the firmware 64-bit? */
 #define EFI_64BIT		5	/* Is the firmware 64-bit? */
 #define EFI_PARAVIRT		6	/* Access is via a paravirt interface */
 #define EFI_PARAVIRT		6	/* Access is via a paravirt interface */
 #define EFI_ARCH_1		7	/* First arch-specific bit */
 #define EFI_ARCH_1		7	/* First arch-specific bit */
+#define EFI_DBG			8	/* Print additional debug info at runtime */
 
 
 #ifdef CONFIG_EFI
 #ifdef CONFIG_EFI
 /*
 /*