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 <[email protected]>
Signed-off-by: Taku Izumi <[email protected]>
---
drivers/char/vt.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
Index: linux-2.6.21.5/drivers/char/vt.c
========================================================================
--- linux-2.6.21.5.org/drivers/char/vt.c 2007-06-13 12:03:11.000000000 +0900
+++ linux-2.6.21.5/drivers/char/vt.c 2007-06-13 12:07:48.000000000 +0900
@@ -3419,12 +3419,12 @@ void do_unblank_screen(int leaving_gfx)
return;
}
vc = vc_cons[fg_console].d;
+ blank_state = blank_normal_wait;
if (vc->vc_mode != KD_TEXT)
return; /* but leave console_blanked != 0 */
if (blankinterval) {
mod_timer(&console_timer, jiffies + blankinterval);
- blank_state = blank_normal_wait;
}
console_blanked = 0;
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 <[email protected]>
Signed-off-by: Pete Zaitcev <[email protected]>
Signed-off-by: Taku Izumi <[email protected]>
---
drivers/char/vt.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
Index: linux-2.6.22/drivers/char/vt.c
=============================================================================
--- linux-2.6.22.org/drivers/char/vt.c 2007-06-27 11:40:03.000000000 -0400
+++ linux-2.6.22/drivers/char/vt.c 2007-06-27 11:24:32.000000000 -0400
@@ -3491,9 +3491,6 @@ void do_blank_screen(int entering_gfx)
}
return;
}
- if (blank_state != blank_normal_wait)
- return;
- blank_state = blank_off;
/* entering graphics mode? */
if (entering_gfx) {
@@ -3501,10 +3498,15 @@ void do_blank_screen(int entering_gfx)
save_screen(vc);
vc->vc_sw->con_blank(vc, -1, 1);
console_blanked = fg_console + 1;
+ blank_state = blank_off;
set_origin(vc);
return;
}
+ if (blank_state != blank_normal_wait)
+ return;
+ blank_state = blank_off;
+
/* don't blank graphics */
if (vc->vc_mode != KD_TEXT) {
console_blanked = fg_console + 1;