Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

efi: sysfb_efi: Fix lfb_linelength calculation when applying quirks

PIXEL_BIT_MASK formats can have either less or more than four bytes per
pixel so lets fix the lfb_linelenght calculation when applying the
swapped width and height quirks.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Melissa Wen <mwen@igalia.com>
Cc: linux-efi@vger.kernel.org
Tested-by: Melissa Wen <mwen@igalia.com> # v3
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>

authored by

Tvrtko Ursulin and committed by
Ard Biesheuvel
449b87e8 bb2c941b

+4 -1
+4 -1
drivers/firmware/efi/sysfb_efi.c
··· 357 357 358 358 if (screen_info.orig_video_isVGA == VIDEO_TYPE_EFI && 359 359 dmi_check_system(efifb_dmi_swap_width_height)) { 360 + u32 bpp = __screen_info_lfb_bits_per_pixel(&screen_info); 361 + 360 362 swap(screen_info.lfb_width, screen_info.lfb_height); 361 - screen_info.lfb_linelength = 4 * screen_info.lfb_width; 363 + screen_info.lfb_linelength = bpp * screen_info.lfb_width / 364 + BITS_PER_BYTE; 362 365 } 363 366 } 364 367