Thank you for your contribution! Sashiko AI review found 1 potential issue(s) 
to consider:
- [High] Removing the sysfb swap quirk entirely will break display rendering 
and panel orientation detection for Lenovo D330 devices running older firmware.
--

commit 3f9b6b6dbd6e5dddf9820e6534eb1bfb33ccbc60
Author: Thomas Zimmermann <[email protected]>

firmware/sysfb: Remove rotation quirk for Lenovo D330

This commit removes the DMI match for the Lenovo D330 in sysfb_efi.c, which
previously swapped display width and height. The intent is to keep the
display as-is so DRM drivers can pick the correct panel orientation.

> diff --git a/drivers/firmware/efi/sysfb_efi.c 
> b/drivers/firmware/efi/sysfb_efi.c
> --- a/drivers/firmware/efi/sysfb_efi.c
> +++ b/drivers/firmware/efi/sysfb_efi.c

[ ... ]

> @@ -301,15 +301,6 @@ static const struct dmi_system_id 
> efifb_dmi_swap_width_height[] __initconst = {
>               },
>               .callback = efifb_swap_width_height,
>       },
> -     {
> -             /* Lenovo D330 with 800x1280 or 1200x1920 portrait screen */
> -             .matches = {
> -                     DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
> -                     DMI_EXACT_MATCH(DMI_PRODUCT_VERSION,
> -                                     "Lenovo ideapad D330-10IGM"),
> -             },
> -             .callback = efifb_swap_width_height,
> -     },

[Severity: High]
Will removing this DMI match entirely break display rendering for Lenovo D330
devices running older firmware?

While newer BIOS versions correctly report the native portrait geometry
(making the previous unconditional swap incorrect), older BIOS versions
genuinely reported the wrong landscape EFI geometry and relied on this quirk
to fix the lfb_width, lfb_height, and lfb_linelength fields. 

Unconditionally removing the DMI match appears to fix newer BIOSes but
introduces a regression for older BIOSes where early boot framebuffers
(sysfb/simpledrm) might use the incorrect EFI-reported dimensions. This can
result in severely corrupted display output (garbage on screen) until a
native DRM driver loads.

Since later patches in this series updating the panel orientation quirk logic
do not correct the underlying fb_mode and fb_pitch used by drm_sysfb_mode(),
would it be safer to retain the quirk but modify the callback to only swap if
the reported width is greater than the height (e.g., if
si->lfb_width > si->lfb_height)?

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/[email protected]?part=1

Reply via email to