2007-06-14 02:28:19

by izumi

[permalink] [raw]
Subject: [PATCH][BUG] Fix the graphic corruption issue on IA64 machines

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;


Attachments:
vt-blank.patch (1.26 kB)

2007-06-29 03:28:22

by izumi

[permalink] [raw]
Subject: Re: [PATCH][BUG] Fix the graphic corruption issue on IA64 machines

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;


Attachments:
vt-blank-rev2.patch (1.61 kB)