Index: drivers/video/console/vgacon.c =================================================================== RCS file: /work/kernelcvs/linux/drivers/video/console/vgacon.c,v retrieving revision 1.1.1.2 diff -u -p -r1.1.1.2 vgacon.c --- drivers/video/console/vgacon.c 11 Jan 2005 10:27:11 -0000 1.1.1.2 +++ drivers/video/console/vgacon.c 11 Jan 2005 13:40:19 -0000 @@ -54,6 +54,7 @@ #include static spinlock_t vga_lock = SPIN_LOCK_UNLOCKED; +static int cursor_size_lastfrom = 0, cursor_size_lastto = 0; static struct vgastate state; #define BLANK 0x0020 @@ -409,17 +410,16 @@ static void vgacon_set_cursor_size(int x { unsigned long flags; int curs, cure; - static int lastfrom, lastto; #ifdef TRIDENT_GLITCH if (xpos < 16) from--, to--; #endif - if ((from == lastfrom) && (to == lastto)) + if ((from == cursor_size_lastfrom) && (to == cursor_size_lastto)) return; - lastfrom = from; - lastto = to; + cursor_size_lastfrom = from; + cursor_size_lastto = to; spin_lock_irqsave(&vga_lock, flags); outb_p(0x0a, vga_video_port_reg); /* Cursor start */ @@ -862,11 +862,6 @@ static int vgacon_adjust_height(struct v unsigned char ovr, vde, fsr; int rows, maxscan, i; - if (fontheight == vc->vc_font.height) - return 0; - - vc->vc_font.height = fontheight; - rows = vc->vc_scan_lines / fontheight; /* Number of video rows we end up with */ maxscan = rows * fontheight - 1; /* Scan lines to actually display-1 */ @@ -905,6 +900,11 @@ static int vgacon_adjust_height(struct v struct vc_data *c = vc_cons[i].d; if (c && c->vc_sw == &vga_con) { + if( CON_IS_VISIBLE(c)) { + /* void size to cause regs to be rewritten */ + cursor_size_lastfrom = cursor_size_lastto = 0; + c->vc_sw->con_cursor(c, CM_DRAW); + } c->vc_font.height = fontheight; vc_resize(c->vc_num, 0, rows); /* Adjust console size */ }