Re: [PATCH 0/3] video/efi: Support FIRMWARE_EDID on non-x86

From: Thomas Zimmermann

Date: Thu Nov 20 2025 - 03:19:50 EST




Am 20.11.25 um 08:56 schrieb Thomas Zimmermann:
Hi,

thanks for addressing the remaining EDID support.

First of all, you need to cc dri-devel@xxxxxxxxxxxxxxxxxxxxx  on any further revisions.

Am 19.11.25 um 13:30 schrieb Ard Biesheuvel:
From: Ard Biesheuvel <ardb@xxxxxxxxxx>

Refactor the screen_info handling so non-x86 platforms booting via the
EFI stub also have access to the EDID data exposed by the EFI boot
services.

I don't like how this series complicates everything to make non-x86 easier. But the general idea of using efi_screen_info goes into the right direction. It's just not generic enough.

The sysfb code transfers struct screen_info as device parameter [1]. Drivers later fetch it on probe [2].  The direct ref to the global edid_info [3] only exists because we have no means of transferring it as device data.

So instead of using efi_screen_info, let's declare struct sysfb_display with screen_info and edid_info.  The header would be linux/sysfb.h.  We transfer this to all related drivers.  The generic EFI code would set it up like efi_screen_info and the x86 code would decalre it at [4]; replacing the existing state.

If this proposal works for EFI, I could do the changes in graphics drivers and then resubmit the EDID series with an additional patch for generic EFI.


Best regards
Thomas

[1] https://elixir.bootlin.com/linux/v6.17.8/source/drivers/firmware/sysfb.c#L205
[2] https://elixir.bootlin.com/linux/v6.17.8/source/drivers/gpu/drm/sysfb/efidrm.c#L162
[3] https://elixir.bootlin.com/linux/v6.17.8/source/drivers/gpu/drm/sysfb/efidrm.c#L206
[4] https://elixir.bootlin.com/linux/v6.17.8/source/arch/x86/kernel/setup.c#L214



Cc: Thomas Zimmermann <tzimmermann@xxxxxxx>
Cc: Javier Martinez Canillas <javierm@xxxxxxxxxx>

Ard Biesheuvel (3):
   efi: Wrap screen_info in efi_screen_info so edid_info can be added
     later
   video/edid: Use getter function for edid_info
   efi: Add FIRMWARE_EDID support

  arch/x86/kernel/setup.c                       |  8 ++++++--
  drivers/firmware/efi/earlycon.c               |  1 -
  drivers/firmware/efi/efi-init.c               | 19 ++++++++++++++-----
  drivers/firmware/efi/libstub/efi-stub-entry.c |  3 +--
  drivers/firmware/efi/libstub/efi-stub.c       | 16 ++++++++++------
  drivers/firmware/efi/libstub/efistub.h        |  9 +++------
  drivers/firmware/efi/libstub/gop.c            |  1 -
  drivers/firmware/efi/libstub/screen_info.c    |  7 +++----
  drivers/firmware/efi/libstub/zboot.c          |  2 +-
  drivers/firmware/efi/sysfb_efi.c              |  1 -
  drivers/gpu/drm/sysfb/efidrm.c                |  4 ++--
  drivers/gpu/drm/sysfb/vesadrm.c               |  4 ++--
  drivers/video/Kconfig                         |  2 +-
  drivers/video/fbdev/core/fbmon.c              |  4 ++--
  include/linux/efi.h                           | 10 +++++++++-
  include/video/edid.h                          |  2 +-
  16 files changed, 55 insertions(+), 38 deletions(-)



--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)