diff options
author | izumi <izumi2005@soft.fujitsu.com> | 2007-07-17 07:05:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-17 13:23:13 -0400 |
commit | b6e8f00fcd56b426371334d722d1f3fb251b7290 (patch) | |
tree | 1fe421e55fc916dfa25f6fea3f821d1722444bcb /drivers/char | |
parent | 1a3f28817e2a3f0be67ec8afa0cfd779adb5d41d (diff) |
Fix the graphic corruption issue on IA64 machines
VGA console driver can misunderstand the current mode(Text/Graphic) under
"disable console blanking" setting. When "disable console blank" is set
(blankinterval=0), "do_unblank_screen()" function returns without changing
"blank_state", and when "blank_state" is "blank_off", "do_blank_screen()
function returns without invoking sw->con_blank() function. That's why VGA
console driver can misunderstand the current mode.
Signed-off-by: Nobuhiro Tachino <ntachino@redhat.com>
Signed-off-by: Taku Izumi <izumi2005@soft.fujitsu.com>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Cc: "Luck, Tony" <tony.luck@intel.com>
Acked-by: Pete Zaitcev <zaitcev@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/vt.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/char/vt.c b/drivers/char/vt.c index 45b33cf97643..edb7002a3216 100644 --- a/drivers/char/vt.c +++ b/drivers/char/vt.c | |||
@@ -3506,9 +3506,6 @@ void do_blank_screen(int entering_gfx) | |||
3506 | } | 3506 | } |
3507 | return; | 3507 | return; |
3508 | } | 3508 | } |
3509 | if (blank_state != blank_normal_wait) | ||
3510 | return; | ||
3511 | blank_state = blank_off; | ||
3512 | 3509 | ||
3513 | /* entering graphics mode? */ | 3510 | /* entering graphics mode? */ |
3514 | if (entering_gfx) { | 3511 | if (entering_gfx) { |
@@ -3516,10 +3513,15 @@ void do_blank_screen(int entering_gfx) | |||
3516 | save_screen(vc); | 3513 | save_screen(vc); |
3517 | vc->vc_sw->con_blank(vc, -1, 1); | 3514 | vc->vc_sw->con_blank(vc, -1, 1); |
3518 | console_blanked = fg_console + 1; | 3515 | console_blanked = fg_console + 1; |
3516 | blank_state = blank_off; | ||
3519 | set_origin(vc); | 3517 | set_origin(vc); |
3520 | return; | 3518 | return; |
3521 | } | 3519 | } |
3522 | 3520 | ||
3521 | if (blank_state != blank_normal_wait) | ||
3522 | return; | ||
3523 | blank_state = blank_off; | ||
3524 | |||
3523 | /* don't blank graphics */ | 3525 | /* don't blank graphics */ |
3524 | if (vc->vc_mode != KD_TEXT) { | 3526 | if (vc->vc_mode != KD_TEXT) { |
3525 | console_blanked = fg_console + 1; | 3527 | console_blanked = fg_console + 1; |