linux/drivers/video
Thomas Zimmermann c2bc958b2b fbdev: vesafb: Detect VGA compatibility from screen info's VESA attributes
Test the vesa_attributes field in struct screen_info for compatibility
with VGA hardware. Vesafb currently tests bit 1 in screen_info's
capabilities field which indicates a 64-bit lfb address and is
unrelated to VGA compatibility.

Section 4.4 of the Vesa VBE 2.0 specifications defines that bit 5 in
the mode's attributes field signals VGA compatibility. The mode is
compatible with VGA hardware if the bit is clear. In that case, the
driver can access VGA state of the VBE's underlying hardware. The
vesafb driver uses this feature to program the color LUT in palette
modes. Without, colors might be incorrect.

The problem got introduced in commit 89ec4c238e ("[PATCH] vesafb: Fix
incorrect logo colors in x86_64"). It incorrectly stores the mode
attributes in the screen_info's capabilities field and updates vesafb
accordingly. Later, commit 5e8ddcbe86 ("Video mode probing support for
the new x86 setup code") fixed the screen_info, but did not update vesafb.
Color output still tends to work, because bit 1 in capabilities is
usually 0.

Besides fixing the bug in vesafb, this commit introduces a helper that
reads the correct bit from screen_info.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: 5e8ddcbe86 ("Video mode probing support for the new x86 setup code")
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Cc: <stable@vger.kernel.org> # v2.6.23+
Signed-off-by: Helge Deller <deller@gmx.de>
2024-06-18 14:04:03 +02:00
..
backlight backlight: sky81452-backlight: Remove unnecessary call to of_node_get() 2024-05-10 15:44:29 +01:00
console tty: vt: change consw::con_set_origin() return type 2024-01-27 18:08:54 -08:00
fbdev fbdev: vesafb: Detect VGA compatibility from screen info's VESA attributes 2024-06-18 14:04:03 +02:00
logo video/logo: Make logo data const again 2024-06-13 23:05:26 +02:00
aperture.c video/aperture: Provide a VGA helper for gma500 and internal use 2023-04-16 14:18:10 +02:00
cmdline.c video/cmdline: Hide __video_get_options() behind CONFIG_FB_CORE 2024-01-23 10:11:34 +01:00
display_timing.c
hdmi.c video: hdmi: prefer length specifier in format over string copying 2024-04-25 11:58:59 +02:00
Kconfig video: Add helpers for decoding screen_info 2024-02-14 10:09:13 +01:00
Makefile video: Provide screen_info_get_pci_dev() to find screen_info's PCI device 2024-02-14 10:09:16 +01:00
nomodeset.c drm: Move nomodeset kernel parameter to drivers/video 2022-11-16 13:26:12 +01:00
of_display_timing.c
of_videomode.c
screen_info_generic.c video: Add helpers for decoding screen_info 2024-02-14 10:09:13 +01:00
screen_info_pci.c firmware/sysfb: Update screen_info for relocated EFI framebuffers 2024-02-14 10:09:21 +01:00
sticore.c fbcon: Increase maximum font width x height to 64 x 128 2024-03-16 08:29:48 +01:00
vgastate.c
videomode.c