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

Ard Biesheuvel posted 3 patches 1 week, 5 days ago
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(-)
[PATCH 0/3] video/efi: Support FIRMWARE_EDID on non-x86
Posted by Ard Biesheuvel 1 week, 5 days ago
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
Re: [PATCH 0/3] video/efi: Support FIRMWARE_EDID on non-x86
Posted by Thomas Zimmermann 1 week, 4 days ago
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)


Re: [PATCH 0/3] video/efi: Support FIRMWARE_EDID on non-x86
Posted by Thomas Zimmermann 1 week, 4 days ago

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)


Re: [PATCH 0/3] video/efi: Support FIRMWARE_EDID on non-x86
Posted by Ard Biesheuvel 1 week, 4 days ago
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.
Re: [PATCH 0/3] video/efi: Support FIRMWARE_EDID on non-x86
Posted by Thomas Zimmermann 1 week, 3 days ago
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)