x86/efistub: Don't try to print after ExitBootService()
authorNikolay Borisov <nik.borisov@suse.com>
Wed, 11 Oct 2023 19:25:28 +0000 (22:25 +0300)
committerArd Biesheuvel <ardb@kernel.org>
Fri, 13 Oct 2023 10:19:37 +0000 (12:19 +0200)
setup_e820() is executed after UEFI's ExitBootService has been called.
This causes the firmware to throw an exception because the Console IO
protocol is supposed to work only during boot service environment. As
per UEFI 2.9, section 12.1:

 "This protocol is used to handle input and output of text-based
 information intended for the system user during the operation of code
 in the boot services environment."

So drop the diagnostic warning from this function. We might add back a
warning that is issued later when initializing the kernel itself.

Signed-off-by: Nikolay Borisov <nik.borisov@suse.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
drivers/firmware/efi/libstub/x86-stub.c

index 2fee52ed335d13789d5853f9a0ee1f58337fa942..3b8bccd7c21690b613f8bf5280687ceb384b2a7e 100644 (file)
@@ -605,11 +605,8 @@ setup_e820(struct boot_params *params, struct setup_data *e820ext, u32 e820ext_s
                        break;
 
                case EFI_UNACCEPTED_MEMORY:
-                       if (!IS_ENABLED(CONFIG_UNACCEPTED_MEMORY)) {
-                               efi_warn_once(
-"The system has unaccepted memory,  but kernel does not support it\nConsider enabling CONFIG_UNACCEPTED_MEMORY\n");
+                       if (!IS_ENABLED(CONFIG_UNACCEPTED_MEMORY))
                                continue;
-                       }
                        e820_type = E820_TYPE_RAM;
                        process_unaccepted_memory(d->phys_addr,
                                                  d->phys_addr + PAGE_SIZE * d->num_pages);