[PATCH v3 7/9] efi: Refactor init_primary_display() helpers
Ard Biesheuvel
ardb at kernel.org
Tue Dec 16 05:40:42 PST 2025
On Wed, 26 Nov 2025 at 17:09, Thomas Zimmermann <tzimmermann at suse.de> wrote:
>
> Rework the kernel's init_primary_display() helpers to allow for later
> support of additional config-table entries and EDID information. No
> functional changes.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
> ---
> arch/loongarch/kernel/efi.c | 22 +++++++++++-----------
> drivers/firmware/efi/efi-init.c | 19 ++++++++++---------
> 2 files changed, 21 insertions(+), 20 deletions(-)
>
This patch seems unnecessary now that we've replace one table with another.
I've dropped it for now - let me know if you really want to keep it.
> diff --git a/arch/loongarch/kernel/efi.c b/arch/loongarch/kernel/efi.c
> index 638a392d2cd2..1ef38036e8ae 100644
> --- a/arch/loongarch/kernel/efi.c
> +++ b/arch/loongarch/kernel/efi.c
> @@ -81,19 +81,19 @@ EXPORT_SYMBOL_GPL(sysfb_primary_display);
>
> static void __init init_primary_display(void)
> {
> - struct screen_info *si;
> -
> - if (screen_info_table == EFI_INVALID_TABLE_ADDR)
> - return;
> -
> - si = early_memremap(screen_info_table, sizeof(*si));
> - if (!si) {
> - pr_err("Could not map screen_info config table\n");
> + if (screen_info_table == EFI_INVALID_TABLE_ADDR) {
> + struct screen_info *si = early_memremap(screen_info_table, sizeof(*si));
> +
> + if (!si) {
> + pr_err("Could not map screen_info config table\n");
> + return;
> + }
> + sysfb_primary_display.screen = *si;
> + memset(si, 0, sizeof(*si));
> + early_memunmap(si, sizeof(*si));
> + } else {
> return;
> }
> - sysfb_primary_display.screen = *si;
> - memset(si, 0, sizeof(*si));
> - early_memunmap(si, sizeof(*si));
>
> memblock_reserve(__screen_info_lfb_base(&sysfb_primary_display.screen),
> sysfb_primary_display.screen.lfb_size);
> diff --git a/drivers/firmware/efi/efi-init.c b/drivers/firmware/efi/efi-init.c
> index d1d418a34407..ca697d485116 100644
> --- a/drivers/firmware/efi/efi-init.c
> +++ b/drivers/firmware/efi/efi-init.c
> @@ -67,10 +67,9 @@ EXPORT_SYMBOL_GPL(sysfb_primary_display);
>
> static void __init init_primary_display(void)
> {
> - struct screen_info *si;
> -
> if (screen_info_table != EFI_INVALID_TABLE_ADDR) {
> - si = early_memremap(screen_info_table, sizeof(*si));
> + struct screen_info *si = early_memremap(screen_info_table, sizeof(*si));
> +
> if (!si) {
> pr_err("Could not map screen_info config table\n");
> return;
> @@ -78,14 +77,16 @@ static void __init init_primary_display(void)
> sysfb_primary_display.screen = *si;
> memset(si, 0, sizeof(*si));
> early_memunmap(si, sizeof(*si));
> + } else {
> + return;
> + }
>
> - if (memblock_is_map_memory(sysfb_primary_display.screen.lfb_base))
> - memblock_mark_nomap(sysfb_primary_display.screen.lfb_base,
> - sysfb_primary_display.screen.lfb_size);
> + if (memblock_is_map_memory(sysfb_primary_display.screen.lfb_base))
> + memblock_mark_nomap(sysfb_primary_display.screen.lfb_base,
> + sysfb_primary_display.screen.lfb_size);
>
> - if (IS_ENABLED(CONFIG_EFI_EARLYCON))
> - efi_earlycon_reprobe();
> - }
> + if (IS_ENABLED(CONFIG_EFI_EARLYCON))
> + efi_earlycon_reprobe();
> }
>
> static int __init uefi_init(u64 efi_system_table)
> --
> 2.51.1
>
More information about the linux-riscv
mailing list