efi/x86: Support builtin command line
authorArvind Sankar <nivedita@alum.mit.edu>
Thu, 30 Apr 2020 18:28:42 +0000 (14:28 -0400)
committerArd Biesheuvel <ardb@kernel.org>
Fri, 1 May 2020 07:40:02 +0000 (09:40 +0200)
Add support for the x86 CMDLINE_BOOL and CMDLINE_OVERRIDE configuration
options.

Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
Link: https://lore.kernel.org/r/20200430182843.2510180-11-nivedita@alum.mit.edu
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
drivers/firmware/efi/libstub/x86-stub.c

index f1a134596b53804598a9a516dc81a9757f71a4cc..c84c5678e3e15d34c081a2657853d9784edfb7f5 100644 (file)
@@ -680,7 +680,6 @@ unsigned long efi_main(efi_handle_t handle,
        unsigned long buffer_start, buffer_end;
        struct setup_header *hdr = &boot_params->hdr;
        efi_status_t status;
-       unsigned long cmdline_paddr;
 
        efi_system_table = sys_table_arg;
 
@@ -739,9 +738,14 @@ unsigned long efi_main(efi_handle_t handle,
                image_offset = 0;
        }
 
-       cmdline_paddr = ((u64)hdr->cmd_line_ptr |
-                        ((u64)boot_params->ext_cmd_line_ptr << 32));
-       efi_parse_options((char *)cmdline_paddr);
+#ifdef CONFIG_CMDLINE_BOOL
+       efi_parse_options(CONFIG_CMDLINE);
+#endif
+       if (!IS_ENABLED(CONFIG_CMDLINE_OVERRIDE)) {
+               unsigned long cmdline_paddr = ((u64)hdr->cmd_line_ptr |
+                                              ((u64)boot_params->ext_cmd_line_ptr << 32));
+               efi_parse_options((char *)cmdline_paddr);
+       }
 
        /*
         * At this point, an initrd may already have been loaded by the