grub-devel.gnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/1] Update 00_header to load efi video on EFI platforms
@ 2025-11-07  0:24 Andrew Hamilton
  2025-11-07  0:24 ` [PATCH v2 1/1] util/grub.d/00_header.in: Disable loading all_video for EFI Andrew Hamilton
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Hamilton @ 2025-11-07  0:24 UTC (permalink / raw)
  To: grub-devel; +Cc: daniel.kiper, safinaskar, benh, bluca, kibi, Andrew Hamilton

This is a new attempt to fix the issue with video corruption that can
occur in some cases on EFI when all_video is loaded. Previously, the
proposed change was to disable building video_bochs and video_cirrus
for EFI completely, however there was concern around this approach.

Previous thread:
https://lists.gnu.org/archive/html/grub-devel/2025-09/msg00265.html

This new approach modifies the 00_header script to default to only
load efi_gop and efi_uga for EFI platforms. A new env variable is added
to force the old behavior of loading all_video for EFI if desired.

There is likely an additional change required on distros that
bundle all_video into the signed EFI GRUB image, such as Debian:
https://sources.debian.org/src/grub2/2.14~git20250718.0e36779-2/debian/build-efi-images

There is some additional analysis from the Qemu team in this thread:
https://gitlab.com/qemu-project/qemu/-/issues/2562

This is an issue on some major distros such as Debian on EFI
when running under Qemu and potentially other scenarios.

There is some discussion on the Debian side in this thread:
https://salsa.debian.org/kernel-team/linux/-/merge_requests/1453

This relates to this discussion from grub-devel also:
https://lists.gnu.org/archive/html/grub-devel/2025-09/msg00244.html

Fixes: https://savannah.gnu.org/bugs/index.php?66200

Changes since v1:
- Fix some comments
- Change name of env variable
- Combine patches into one

Andrew Hamilton (1):
  util/grub.d/00_header.in: Disable loading all_video for  EFI

 docs/grub.texi           |  7 +++++++
 util/grub-mkconfig.in    |  3 ++-
 util/grub.d/00_header.in | 16 +++++++++++++++-
 3 files changed, 24 insertions(+), 2 deletions(-)

-- 
2.43.0


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH v2 1/1] util/grub.d/00_header.in: Disable loading all_video for EFI
  2025-11-07  0:24 [PATCH v2 0/1] Update 00_header to load efi video on EFI platforms Andrew Hamilton
@ 2025-11-07  0:24 ` Andrew Hamilton
  2025-11-07 16:34   ` Daniel Kiper via Grub-devel
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Hamilton @ 2025-11-07  0:24 UTC (permalink / raw)
  To: grub-devel; +Cc: daniel.kiper, safinaskar, benh, bluca, kibi, Andrew Hamilton

Loading all_video for EFI can cause video issues in some cases
since GRUB Bochs/Cirrus drivers may conflict with native EFI drivers.
Change default behavior for EFI to only load EFI specific video
modules. Also include a new environment variable to restore the old
behavior if needed.

Fixes: https://savannah.gnu.org/bugs/index.php?66200

Signed-off-by: Andrew Hamilton <adhamilt@gmail.com>
---
 docs/grub.texi           |  7 +++++++
 util/grub-mkconfig.in    |  3 ++-
 util/grub.d/00_header.in | 16 +++++++++++++++-
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/docs/grub.texi b/docs/grub.texi
index 5b23ae47b..1ec5d3566 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -1642,6 +1642,13 @@ This option is unset by default, and is deprecated in favour of the less
 confusing @samp{GRUB_TIMEOUT_STYLE=countdown} or
 @samp{GRUB_TIMEOUT_STYLE=hidden}.
 
+@item GRUB_FORCE_EFI_ALL_VIDEO
+When set to true, this will allow grub-mkconfig to generate a GRUB config
+that supports loading the all_video module on the EFI platform instead of
+just the efi_gop and efi_uga modules.
+
+This option is unset by default.
+
 @end table
 
 For more detailed customisation of @command{grub-mkconfig}'s output, you may
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
index 32c480dae..45787a1d1 100644
--- a/util/grub-mkconfig.in
+++ b/util/grub-mkconfig.in
@@ -255,7 +255,8 @@ export GRUB_DEFAULT \
   GRUB_ENABLE_CRYPTODISK \
   GRUB_BADRAM \
   GRUB_OS_PROBER_SKIP_LIST \
-  GRUB_DISABLE_SUBMENU
+  GRUB_DISABLE_SUBMENU \
+  GRUB_FORCE_EFI_ALL_VIDEO
 
 if test "x${grub_cfg}" != "x"; then
   rm -f "${grub_cfg}.new"
diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in
index 9d36feda3..77834cfaf 100644
--- a/util/grub.d/00_header.in
+++ b/util/grub.d/00_header.in
@@ -124,10 +124,24 @@ if [ -n "${GRUB_VIDEO_BACKEND}" ]; then
   insmod ${GRUB_VIDEO_BACKEND}
 EOF
 else
+# For EFI, use EFI video drivers only by default to avoid conflict between
+# GRUB Bochs/Cirrus and native EFI drivers. If GRUB_FORCE_EFI_ALL_VIDEO is
+# set/true then defer back to all_video even for EFI.
+if [ "${GRUB_FORCE_EFI_ALL_VIDEO}" = "1" ]; then
+    cat <<EOF
+  if [ x\$feature_all_video_module = xy ]; then
+EOF
+else # GRUB_FORCE_EFI_ALL_VIDEO is not set true
+    cat <<EOF
+  if [ x\$grub_platform = xefi ]; then
+    insmod efi_gop
+    insmod efi_uga
+  elif [ x\$feature_all_video_module = xy ]; then
+EOF
+fi # end GRUB_FORCE_EFI_ALL_VIDEO
 # If all_video.mod isn't available load all modules available
 # with versions prior to introduction of all_video.mod
 cat <<EOF
-  if [ x\$feature_all_video_module = xy ]; then
     insmod all_video
   else
     insmod efi_gop
-- 
2.43.0


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2 1/1] util/grub.d/00_header.in: Disable loading all_video  for EFI
  2025-11-07  0:24 ` [PATCH v2 1/1] util/grub.d/00_header.in: Disable loading all_video for EFI Andrew Hamilton
@ 2025-11-07 16:34   ` Daniel Kiper via Grub-devel
  0 siblings, 0 replies; 3+ messages in thread
From: Daniel Kiper via Grub-devel @ 2025-11-07 16:34 UTC (permalink / raw)
  To: Andrew Hamilton; +Cc: Daniel Kiper, grub-devel, safinaskar, benh, bluca, kibi

On Thu, Nov 06, 2025 at 06:24:33PM -0600, Andrew Hamilton wrote:
> Loading all_video for EFI can cause video issues in some cases
> since GRUB Bochs/Cirrus drivers may conflict with native EFI drivers.
> Change default behavior for EFI to only load EFI specific video
> modules. Also include a new environment variable to restore the old
> behavior if needed.
>
> Fixes: https://savannah.gnu.org/bugs/index.php?66200
>
> Signed-off-by: Andrew Hamilton <adhamilt@gmail.com>

Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>

Daniel

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-11-07 16:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-07  0:24 [PATCH v2 0/1] Update 00_header to load efi video on EFI platforms Andrew Hamilton
2025-11-07  0:24 ` [PATCH v2 1/1] util/grub.d/00_header.in: Disable loading all_video for EFI Andrew Hamilton
2025-11-07 16:34   ` Daniel Kiper via Grub-devel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).