HI, As a result of the discussion with Pete Zaitcev([EMAIL PROTECTED]), I re-create a patch. This attached patch is revised version.
He pointed out that the former patch may violate the assumptions and was not safe. Concretely speaking, he concerned that an unexpected problem may arise somewhere if "blank_state", which is intended to reflect the state of timer, was shuffled arround. This revised patch reflects his pointed out. I confirmed this also fixed the problem. Regards, Taku Izumi <[EMAIL PROTECTED]>
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;