[PATCH] efi_loader: allow to disable GOP support

Heinrich Schuchardt xypron.glpk at gmx.de
Wed Jun 16 15:20:21 CEST 2021


Am 16. Juni 2021 14:19:41 MESZ schrieb Icenowy Zheng <icenowy at aosc.io>:
>在 2021-06-16星期三的 06:59 +0200,Heinrich Schuchardt写道:
>> Am 15. Juni 2021 23:10:28 MESZ schrieb Icenowy Zheng
>> <icenowy at aosc.io>:
>> > Sometimes EFI GOP support may be not wanted (e.g. because the
>> > operating
>> > system cannot operate well with it) even if video support in U-Boot
>> > is
>> > needed.
>> 
>> Which OS has which problem?
>> Why don't you fix the OS?
>
>I'm trying RK3399 with Linux. EFIFB never works as intended (maybe it's
>because IOMMU is reconfigured), and rockchipdrmfb will be fb1 (leave
>non-working EFIFB as fb0), makes fbcon unusable.

The GOP driver is not available after ExitBootServices. You can't use it after the EFI stub hands over to main Linux.

Shouldn't the Panfrost driver and Mesa be used for RK3399? https://wiki.debian.org/PanfrostLima , https://www.collabora.com/news-and-blog/blog/2019/08/06/rockpi-panfrost-wayland/

Best regards

Heinrich


>
>The second problem has a proposed fix, but the first problem is
>mystery.
>
>> 
>> Best regards
>> 
>> Heinrich
>> 
>> 
>> > 
>> > Allow to disable EFI GOP support with a Kconfig option.
>> > 
>> > Signed-off-by: Icenowy Zheng <icenowy at aosc.io>
>> > ---
>> > lib/efi_loader/Kconfig     |  8 ++++++++
>> > lib/efi_loader/Makefile    |  3 +--
>> > lib/efi_loader/efi_setup.c | 11 ++++++-----
>> > 3 files changed, 15 insertions(+), 7 deletions(-)
>> > 
>> > diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
>> > index 6242caceb7..5ba0ce6a44 100644
>> > --- a/lib/efi_loader/Kconfig
>> > +++ b/lib/efi_loader/Kconfig
>> > @@ -282,6 +282,14 @@ config EFI_HAVE_RUNTIME_RESET
>> >         depends on ARCH_BCM283X || FSL_LAYERSCAPE || PSCI_RESET ||
>> > \
>> >                    SANDBOX || SYSRESET_X86
>> > 
>> > +config EFI_GOP_PROTOCOL
>> > +       bool "EFI_GOP_PROTOCOL support"
>> > +       default y
>> > +       depends on DM_VIDEO || LCD
>> > +       help
>> > +         Provide a EFI_GOP_PROTOCOL implementation using the
>> > graphics
>> > +         hardware initialized by U-Boot.
>> > +
>> > config EFI_GRUB_ARM32_WORKAROUND
>> >         bool "Workaround for GRUB on 32bit ARM"
>> >         default n if ARCH_BCM283X || ARCH_SUNXI || ARCH_QEMU
>> > diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile
>> > index fd344cea29..826563d9a7 100644
>> > --- a/lib/efi_loader/Makefile
>> > +++ b/lib/efi_loader/Makefile
>> > @@ -54,8 +54,7 @@ obj-$(CONFIG_EFI_VARIABLES_PRESEED) +=
>> > efi_var_seed.o
>> > endif
>> > obj-y += efi_watchdog.o
>> > obj-$(CONFIG_EFI_ESRT) += efi_esrt.o
>> > -obj-$(CONFIG_LCD) += efi_gop.o
>> > -obj-$(CONFIG_DM_VIDEO) += efi_gop.o
>> > +obj-$(CONFIG_EFI_GOP_PROTOCOL) += efi_gop.o
>> > obj-$(CONFIG_PARTITIONS) += efi_disk.o
>> > obj-$(CONFIG_NET) += efi_net.o
>> > obj-$(CONFIG_GENERATE_ACPI_TABLE) += efi_acpi.o
>> > diff --git a/lib/efi_loader/efi_setup.c
>> > b/lib/efi_loader/efi_setup.c
>> > index 3c5cf9a435..98deb63777 100644
>> > --- a/lib/efi_loader/efi_setup.c
>> > +++ b/lib/efi_loader/efi_setup.c
>> > @@ -254,11 +254,12 @@ efi_status_t efi_init_obj_list(void)
>> >         if (ret != EFI_SUCCESS)
>> >                 goto out;
>> > 
>> > -#if defined(CONFIG_LCD) || defined(CONFIG_DM_VIDEO)
>> > -       ret = efi_gop_register();
>> > -       if (ret != EFI_SUCCESS)
>> > -               goto out;
>> > -#endif
>> > +       if (IS_ENABLED(CONFIG_EFI_GOP_PROTOCOL)) {
>> > +               ret = efi_gop_register();
>> > +               if (ret != EFI_SUCCESS)
>> > +                       goto out;
>> > +       }
>> > +
>> > #ifdef CONFIG_NET
>> >         ret = efi_net_register();
>> >         if (ret != EFI_SUCCESS)



More information about the U-Boot mailing list