aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/console
diff options
context:
space:
mode:
authorYannick Heneault <yannick_heneault@matrox.com>2011-01-12 20:00:04 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2011-01-13 11:03:12 -0500
commit554ec37aca8f5fbe4d70df462d7032aaa5d95ae9 (patch)
tree5f572e6e9d43e8fbe097c4e0658719262ab14230 /drivers/video/console
parentf670d0ecda73b7438eec9ed108680bc5f5362ad8 (diff)
vgacon: check for efi machine
It seems there is a small problem of VGA palette corruption on EFI machine. When the kernel initializes the architecture, it checks if the machine is a EFI machine and assumes that a VGA console can exist. When it initializes the console in vgacon_startup it checks if it can really use the VGA console. I think this is where a check is missing. Currently, the function can fail if a VESA boot mode is detected but not if a EFI boot mode was used. Thus vgacon_startup() doesn't fail and initialize the video card for a real VGA mode. This function changes the first 16entries of the VGA palette. When the efifb driver kicks in, the palette is not restored to default ramp value, thus the 16 first entry remain in a modified state. The following patch prevent this corruption. Signed-off-by: Yannick Heneault <yheneaul@matrox.com> Cc: Dave Airlie <airlied@linux.ie> Cc: "H. Peter Anvin" <hpa@zytor.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/console')
-rw-r--r--drivers/video/console/vgacon.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c
index 915448ec75bf..c97491b8b39b 100644
--- a/drivers/video/console/vgacon.c
+++ b/drivers/video/console/vgacon.c
@@ -375,7 +375,8 @@ static const char *vgacon_startup(void)
375 u16 saved1, saved2; 375 u16 saved1, saved2;
376 volatile u16 *p; 376 volatile u16 *p;
377 377
378 if (screen_info.orig_video_isVGA == VIDEO_TYPE_VLFB) { 378 if (screen_info.orig_video_isVGA == VIDEO_TYPE_VLFB ||
379 screen_info.orig_video_isVGA == VIDEO_TYPE_EFI) {
379 no_vga: 380 no_vga:
380#ifdef CONFIG_DUMMY_CONSOLE 381#ifdef CONFIG_DUMMY_CONSOLE
381 conswitchp = &dummy_con; 382 conswitchp = &dummy_con;