sky2: Flow control frames recorded as dropped packets
[safe/jmp/linux-2.6] / drivers / video / console / vgacon.c
index d012edd..cc4bbbe 100644 (file)
@@ -180,7 +180,6 @@ static inline void vga_set_mem_top(struct vc_data *c)
 }
 
 #ifdef CONFIG_VGACON_SOFT_SCROLLBACK
-#include <linux/bootmem.h>
 /* software scrollback */
 static void *vgacon_scrollback;
 static int vgacon_scrollback_tail;
@@ -210,8 +209,7 @@ static void vgacon_scrollback_init(int pitch)
  */
 static void __init_refok vgacon_scrollback_startup(void)
 {
-       vgacon_scrollback = alloc_bootmem(CONFIG_VGACON_SOFT_SCROLLBACK_SIZE
-                                         * 1024);
+       vgacon_scrollback = kcalloc(CONFIG_VGACON_SOFT_SCROLLBACK_SIZE, 1024, GFP_NOWAIT);
        vgacon_scrollback_init(vga_video_num_columns * 2);
 }
 
@@ -587,16 +585,23 @@ static void vgacon_init(struct vc_data *c, int init)
        vgacon_uni_pagedir[1]++;
        if (!vgacon_uni_pagedir[0] && p)
                con_set_default_unimap(c);
+
+       /* Only set the default if the user didn't deliberately override it */
+       if (global_cursor_default == -1)
+               global_cursor_default =
+                       !(screen_info.flags & VIDEO_FLAGS_NOCURSOR);
 }
 
 static void vgacon_deinit(struct vc_data *c)
 {
-       /* When closing the last console, reset video origin */
-       if (!--vgacon_uni_pagedir[1]) {
+       /* When closing the active console, reset video origin */
+       if (CON_IS_VISIBLE(c)) {
                c->vc_visible_origin = vga_vram_base;
                vga_set_mem_top(c);
-               con_free_unimap(c);
        }
+
+       if (!--vgacon_uni_pagedir[1])
+               con_free_unimap(c);
        c->vc_uni_pagedir_loc = &c->vc_uni_pagedir;
        con_set_default_unimap(c);
 }
@@ -1282,7 +1287,7 @@ static int vgacon_font_get(struct vc_data *c, struct console_font *font)
        font->charcount = vga_512_chars ? 512 : 256;
        if (!font->data)
                return 0;
-       return vgacon_do_font_op(&state, font->data, 0, 0);
+       return vgacon_do_font_op(&state, font->data, 0, vga_512_chars);
 }
 
 #else