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 2fee52e..3b8bccd 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);