Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package grub2 for openSUSE:Factory checked 
in at 2025-04-09 21:49:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/grub2 (Old)
 and      /work/SRC/openSUSE:Factory/.grub2.new.1907 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "grub2"

Wed Apr  9 21:49:16 2025 rev:356 rq:1267829 version:2.12

Changes:
--------
--- /work/SRC/openSUSE:Factory/grub2/grub2.changes      2025-04-02 
17:06:30.672116459 +0200
+++ /work/SRC/openSUSE:Factory/.grub2.new.1907/grub2.changes    2025-04-09 
21:49:18.687695574 +0200
@@ -1,0 +2,12 @@
+Tue Apr  1 09:44:49 UTC 2025 - Thomas Zimmermann <tzimmerm...@suse.com>
+
+- Add grub2-provide-edid.patch: Grub2 already retrieves the EDID
+  from video adapters. Copy the raw data into the Linux kernel boot
+  parameters, so that Linux can use this information. The necessary
+  fields have been present in the boot parameters since at least
+  commit f8eeaaf41803 ("[PATCH] Make the bzImage format
+  self-terminating"), but never used. Within the kernel, the EDID
+  data will be propagated to graphics drivers and finally to user
+  space. (bsc#1240624)
+
+-------------------------------------------------------------------

New:
----
  grub2-provide-edid.patch

BETA DEBUG BEGIN:
  New:
- Add grub2-provide-edid.patch: Grub2 already retrieves the EDID
  from video adapters. Copy the raw data into the Linux kernel boot
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ grub2.spec ++++++
--- /var/tmp/diff_new_pack.9T2NSk/_old  2025-04-09 21:49:22.243845321 +0200
+++ /var/tmp/diff_new_pack.9T2NSk/_new  2025-04-09 21:49:22.247845490 +0200
@@ -446,6 +446,7 @@
 Patch273:       0009-appendedsig-documentation.patch
 Patch274:       0001-ofpath-Add-error-check-in-NVMEoF-device-translation.patch
 Patch275:       grub2-btrfs-filter-non-subvol-mount.patch
+Patch276:       grub2-provide-edid.patch
 
 %if 0%{?suse_version} < 1600
 Requires:       gettext-runtime


++++++ grub2-provide-edid.patch ++++++
Index: grub-2.12/grub-core/video/video.c
===================================================================
--- grub-2.12.orig/grub-core/video/video.c
+++ grub-2.12/grub-core/video/video.c
@@ -89,6 +89,27 @@ grub_video_get_info_and_fini (struct gru
   return GRUB_ERR_NONE;
 }
 
+/* Get information about connected display.  */
+grub_err_t
+grub_video_get_edid (struct grub_video_edid_info *edid_info)
+{
+  grub_err_t err;
+
+  if (! grub_video_adapter_active)
+    return grub_error (GRUB_ERR_BAD_DEVICE, "no video mode activated");
+
+  grub_memset (edid_info, 0, sizeof (*edid_info));
+
+  if (grub_video_adapter_active->get_edid)
+    {
+      err = grub_video_adapter_active->get_edid (edid_info);
+      if (err)
+        return err;
+    }
+
+  return GRUB_ERR_NONE;
+}
+
 /* Determine optimized blitting formation for specified video mode info.  */
 enum grub_video_blit_format
 grub_video_get_blit_format (struct grub_video_mode_info *mode_info)
Index: grub-2.12/include/grub/video.h
===================================================================
--- grub-2.12.orig/include/grub/video.h
+++ grub-2.12/include/grub/video.h
@@ -445,6 +445,8 @@ grub_err_t EXPORT_FUNC (grub_video_get_i
 grub_err_t EXPORT_FUNC (grub_video_get_info_and_fini) (struct 
grub_video_mode_info *mode_info,
                                         void **framebuffer);
 
+grub_err_t EXPORT_FUNC (grub_video_get_edid) (struct grub_video_edid_info 
*edid_info);
+
 enum grub_video_blit_format EXPORT_FUNC(grub_video_get_blit_format) (struct 
grub_video_mode_info *mode_info);
 
 grub_err_t grub_video_set_palette (unsigned int start, unsigned int count,
Index: grub-2.12/grub-core/loader/i386/linux.c
===================================================================
--- grub-2.12.orig/grub-core/loader/i386/linux.c
+++ grub-2.12/grub-core/loader/i386/linux.c
@@ -234,6 +234,7 @@ grub_e820_add_region (struct grub_e820_m
 static grub_err_t
 grub_linux_setup_video (struct linux_kernel_params *params)
 {
+  struct grub_video_edid_info edid_info;
   struct grub_video_mode_info mode_info;
   void *framebuffer;
   grub_err_t err;
@@ -245,6 +246,17 @@ grub_linux_setup_video (struct linux_ker
   if (driver_id == GRUB_VIDEO_DRIVER_NONE)
     return 1;
 
+  grub_video_get_edid (&edid_info); /* ignore errors */
+
+  /*
+   * We cannot transfer any extensions. Therefore clear
+   * the extension flag from the checksum and set the
+   * field to zero. Adding the extension flag to the
+   * checksum does the trick.
+   */
+  edid_info.checksum += edid_info.extension_flag;
+  edid_info.extension_flag = 0;
+
   err = grub_video_get_info_and_fini (&mode_info, &framebuffer);
 
   if (err)
@@ -338,6 +350,17 @@ grub_linux_setup_video (struct linux_ker
     }
 #endif
 
+    if (grub_le_to_cpu16 (params->version) >= 0x0208)
+      {
+        grub_memcpy (params->v0208.edid_info, &edid_info,
+                    sizeof (params->v0208.edid_info));
+      }
+    else if (grub_le_to_cpu16 (params->version) >= 0x0206)
+      {
+        grub_memcpy (params->v0206.edid_info, &edid_info,
+                    sizeof (params->v0206.edid_info));
+      }
+
   return GRUB_ERR_NONE;
 }
 
Index: grub-2.12/include/grub/i386/linux.h
===================================================================
--- grub-2.12.orig/include/grub/i386/linux.h
+++ grub-2.12/include/grub/i386/linux.h
@@ -250,14 +250,15 @@ struct linux_kernel_params
   grub_uint32_t ext_ramdisk_size;      /* 0xc4 */
   grub_uint32_t ext_cmd_line_ptr;      /* 0xc8 */
 
-  grub_uint8_t padding7[0x1b8 - 0xcc];
+  grub_uint8_t padding7[0x140 - 0xcc];
 
   union
     {
       struct
         {
+          grub_uint8_t padding7_1[0x1b8 - 0x140];
           grub_uint32_t efi_system_table;      /* 1b8 */
-          grub_uint32_t padding7_1;            /* 1bc */
+          grub_uint32_t padding7_2;            /* 1bc */
           grub_uint32_t efi_signature;         /* 1c0 */
           grub_uint32_t efi_mem_desc_size;     /* 1c4 */
           grub_uint32_t efi_mem_desc_version;  /* 1c8 */
@@ -266,8 +267,7 @@ struct linux_kernel_params
         } v0204;
       struct
         {
-          grub_uint32_t padding7_1;            /* 1b8 */
-          grub_uint32_t padding7_2;            /* 1bc */
+          grub_uint8_t edid_info[128];         /* 140 */
           grub_uint32_t efi_signature;         /* 1c0 */
           grub_uint32_t efi_system_table;      /* 1c4 */
           grub_uint32_t efi_mem_desc_size;     /* 1c8 */
@@ -277,8 +277,7 @@ struct linux_kernel_params
        } v0206;
       struct
         {
-          grub_uint32_t padding7_1;            /* 1b8 */
-          grub_uint32_t padding7_2;            /* 1bc */
+          grub_uint8_t edid_info[128];         /* 140 */
           grub_uint32_t efi_signature;         /* 1c0 */
           grub_uint32_t efi_system_table;      /* 1c4 */
           grub_uint32_t efi_mem_desc_size;     /* 1c8 */

Reply via email to