Am 16. Juni 2021 16:18:35 MESZ schrieb Peter Robinson <pbrobin...@gmail.com>: >On Wed, Jun 16, 2021 at 3:11 PM Icenowy Zheng <icen...@aosc.io> wrote: >> >> 在 2021-06-16星期三的 15:06 +0100,Peter Robinson写道: >> > On Wed, Jun 16, 2021 at 1:20 PM Icenowy Zheng <icen...@aosc.io> >> > wrote: >> > > >> > > 在 2021-06-16星期三的 06:59 +0200,Heinrich Schuchardt写道: >> > > > Am 15. Juni 2021 23:10:28 MESZ schrieb Icenowy Zheng >> > > > <icen...@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. >> > >> > It's due to bugs in Linux, it will be fixed in 5.14 with these >> > patches >> > from our Fedora testing: >> > >https://lists.freedesktop.org/archives/dri-devel/2021-May/306803.html >> >> I think this patch should get backported. > >I have no problems with that so feel free to propose it to the stable >kernels. > >> BTW a point of using EFI boot is to support existing distros, which >> won't have this patch. > >Sure, but UEFI doesn't guarantee there aren't bugs in kernels or >firmware though, it certainly makes things more straight forward but >it's no silver bullet. >
https://passthroughpo.st/explaining-csm-efifboff-setting-boot-gpu-manually/ refers to a Linux command line parameter that could be used: video=efifb:off Best regards Heinrich >> > >> > There's also this enhancement, also should land in 5.14, which is >> > dependent on the feature that's in the second link: >> > >> > >https://lists.freedesktop.org/archives/dri-devel/2021-May/306803.html >> > >https://lists.freedesktop.org/archives/dri-devel/2021-April/303291.html >> > >> > With that first patch it mostly works for me, the second two series >> > improves on that some more. >> > >> > Peter >> > >> > > 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 <icen...@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) >> > > >>