linux-stable/drivers/firmware/google
Javier Martinez Canillas 67f488dff1 firmware: coreboot: Don't register a pdev if screen_info data is present
On coreboot platforms, a system framebuffer may be provided to the Linux
kernel by filling a LB_TAG_FRAMEBUFFER entry in the coreboot table. But
a coreboot payload (e.g: SeaBIOS) could also provide its own framebuffer
information to the Linux kernel.

If that's the case, arch x86 boot code will fill the global screen_info
data and this used by the Generic System Framebuffers (sysfb) framework,
to register a platform device with pdata about the system's framebuffer.

But later, the framebuffer_coreboot driver will try to do the same and
attempt to register a "simple-framebuffer" platform device (using the
information from the coreboot table), which will lead to an error due a
device with the same name already being registered:

    sysfs: cannot create duplicate filename '/bus/platform/devices/simple-framebuffer.0'
    ...
    coreboot: could not register framebuffer
    framebuffer coreboot8: probe with driver framebuffer failed with error -17

To prevent this issue, make the framebuffer_core driver to not register
a platform device if the global struct screen_info data has been filled.

Reported-by: Brian Norris <briannorris@chromium.org>
Closes: https://lore.kernel.org/all/ZuCG-DggNThuF4pj@b20ea791c01f/T/#ma7fb65acbc1a56042258adac910992bb225a20d2
Suggested-by: Julius Werner <jwerner@chromium.org>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Link: https://lore.kernel.org/r/20240916110040.1688511-3-javierm@redhat.com
Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
2024-09-30 01:40:51 +00:00
..
cbmem.c firmware: google: add missing MODULE_DESCRIPTION() macros 2024-06-11 03:34:05 +00:00
coreboot_table.c Driver core changes for 6.11-rc1 2024-07-25 10:42:22 -07:00
coreboot_table.h firmware: coreboot: store owner from modules with coreboot_driver_register() 2024-04-03 15:09:26 +08:00
framebuffer-coreboot.c firmware: coreboot: Don't register a pdev if screen_info data is present 2024-09-30 01:40:51 +00:00
gsmi.c firmware: google: add missing MODULE_DESCRIPTION() macros 2024-06-11 03:34:05 +00:00
Kconfig firmware: coreboot: framebuffer: Allow building with simpledrm 2023-08-04 16:31:32 +02:00
Makefile firmware: google: Implement cbmem in sysfs driver 2022-11-10 18:51:56 +01:00
memconsole-coreboot.c firmware: google: add missing MODULE_DESCRIPTION() macros 2024-06-11 03:34:05 +00:00
memconsole-x86-legacy.c firmware: google: add missing MODULE_DESCRIPTION() macros 2024-06-11 03:34:05 +00:00
memconsole.c firmware: google: add missing MODULE_DESCRIPTION() macros 2024-06-11 03:34:05 +00:00
memconsole.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 287 2019-06-05 17:36:37 +02:00
vpd_decode.c firmware: google: increment VPD key_len properly 2019-10-11 08:41:34 +02:00
vpd_decode.h firmware: google: check if size is valid when decoding VPD data 2019-09-04 13:31:28 +02:00
vpd.c firmware: google: add missing MODULE_DESCRIPTION() macros 2024-06-11 03:34:05 +00:00