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(-)
From: Ard Biesheuvel <ardb@kernel.org>
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.
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Javier Martinez Canillas <javierm@redhat.com>
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(-)
--
2.52.0.rc1.455.g30608eb744-goog
Hi, thanks for addressing the remaining EDID support. First of all, you need to cc dri-devel@lists.freedesktop.org on any further revisions. Am 19.11.25 um 13:30 schrieb Ard Biesheuvel: > From: Ard Biesheuvel <ardb@kernel.org> > > 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. 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@suse.de> > Cc: Javier Martinez Canillas <javierm@redhat.com> > > 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)
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@lists.freedesktop.org on any > further revisions. > > Am 19.11.25 um 13:30 schrieb Ard Biesheuvel: >> From: Ard Biesheuvel <ardb@kernel.org> >> >> 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@suse.de> >> Cc: Javier Martinez Canillas <javierm@redhat.com> >> >> 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)
On Thu, 20 Nov 2025 at 09:19, Thomas Zimmermann <tzimmermann@suse.de> wrote: > > > > 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@lists.freedesktop.org on any > > further revisions. > > > > Am 19.11.25 um 13:30 schrieb Ard Biesheuvel: > >> From: Ard Biesheuvel <ardb@kernel.org> > >> > >> 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. > That sounds great, thanks.
Hi Am 20.11.25 um 09:25 schrieb Ard Biesheuvel: > On Thu, 20 Nov 2025 at 09:19, Thomas Zimmermann <tzimmermann@suse.de> wrote: >> >> >> 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@lists.freedesktop.org on any >>> further revisions. >>> >>> Am 19.11.25 um 13:30 schrieb Ard Biesheuvel: >>>> From: Ard Biesheuvel <ardb@kernel.org> >>>> >>>> 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. >> > That sounds great, thanks. Series is out at https://lore.kernel.org/dri-devel/20251121135624.494768-1-tzimmermann@suse.de/ Once/if merged, we can implement EDID support on top of it for all of EFI. Best regards Thomas -- -- 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)
© 2016 - 2025 Red Hat, Inc.