From: Aivils S. <Aiv...@un...> - 2003-11-11 11:55:16
|
> could you find something in the oopses i sent you ? I use debugging style of 70ies. Cant You apply next patch and resend to me dmesg? --- r260t9-no-chg/drivers/video/console/fbcon.c 2003-11-10 22:04:55.000000000 +0200 +++ r260t9/drivers/video/console/fbcon.c 2003-11-10 22:02:28.000000000 +0200 @@ -235,6 +235,7 @@ int __init fb_console_setup(char *this_o { int unit; char *options; + printk("FBCON: fb_console_setup S\n"); if (!this_opt || !*this_opt) return 0; @@ -275,6 +276,7 @@ int __init fb_console_setup(char *this_o } } } + printk("FBCON: fb_console_setup E\n"); return 0; } @@ -522,6 +524,7 @@ static const char *fbcon_startup(struct static int done = 0; int irqres; + printk("FBCON: fbcon_startup S\n"); irqres = 1; /* * If num_registered_fb is zero, this is a call for the dummy part. @@ -665,6 +668,7 @@ static const char *fbcon_startup(struct add_timer(&cursor_timer); } done = 1; + printk("FBCON: fbcon_startup E\n"); return info->fix.id; } @@ -672,6 +676,7 @@ static void fbcon_init(struct vc_data *v { int unit = vc->vc_num; struct fb_info *info; + printk("FBCON: fbcon_init S\n"); /* on which frame buffer will we open this console? */ info = (struct fb_info *)vc->display_fg->data_hook; @@ -681,13 +686,16 @@ static void fbcon_init(struct vc_data *v else fb_display[unit].scrollmode = SCROLL_YREDRAW; fbcon_set_display(vc, init, !init); + printk("FBCON: fbcon_init E\n"); } static void fbcon_deinit(struct vc_data *vc) { struct display *p = &fb_display[vc->vc_num]; + printk("FBCON: fbcon_deinit S\n"); fbcon_free_font(p); + printk("FBCON: fbcon_deinit E\n"); } static __inline__ void updatescrollmode(struct display *p, struct vc_data *vc) @@ -695,6 +703,7 @@ static __inline__ void updatescrollmode( struct fb_info *info = (struct fb_info *)vc->display_fg->data_hook; int m; + if (p->scrollmode & __SCROLL_YFIXED) return; if (divides(info->fix.ywrapstep, vc->vc_font.height) && @@ -720,6 +729,7 @@ static void fbcon_set_display(struct vc_ int i, charcnt = 256; struct font_desc *font; + printk("FBCON: fbcon_set_display S\n"); if (!IS_VISIBLE || (info->flags & FBINFO_FLAG_MODULE) || info->fix.type == FB_TYPE_TEXT) logo = 0; @@ -883,6 +893,7 @@ static void fbcon_set_display(struct vc_ softback_top = 0; } } + printk("FBCON: fbcon_set_display E\n"); } @@ -928,6 +939,7 @@ static void fbcon_clear(struct vc_data * struct display *p = &fb_display[vc->vc_num]; u_int y_break; + printk("FBCON: fbcon_clear S\n"); if (!info->fbops->fb_blank && vc->display_fg->vt_blanked) return; @@ -944,6 +956,7 @@ static void fbcon_clear(struct vc_data * width); } else accel_clear(vc, info, real_y(p, sy), sx, height, width); + printk("FBCON: fbcon_clear E\n"); } @@ -952,6 +965,7 @@ static void fbcon_putc(struct vc_data *v struct fb_info *info = (struct fb_info *)vc->display_fg->data_hook; struct display *p = &fb_display[vc->vc_num]; + printk("FBCON: S\n"); if (!info->fbops->fb_blank && vc->display_fg->vt_blanked) return; @@ -959,6 +973,7 @@ static void fbcon_putc(struct vc_data *v return; accel_putc(vc, info, c, real_y(p, ypos), xpos); + printk("FBCON: E\n"); } static void fbcon_putcs(struct vc_data *vc, const unsigned short *s, @@ -967,6 +982,7 @@ static void fbcon_putcs(struct vc_data * struct fb_info *info = (struct fb_info *)vc->display_fg->data_hook; struct display *p = &fb_display[vc->vc_num]; + printk("FBCON: fbcon_putc S\n"); if (!info->fbops->fb_blank && vc->display_fg->vt_blanked) return; @@ -987,6 +1003,7 @@ static void fbcon_cursor(struct vc_data int y = real_y(p, vc->vc_y); struct fb_cursor cursor; + printk("FBCON: fbcon_cursor S\n"); if (mode & CM_SOFTBACK) { mode &= ~CM_SOFTBACK; if (softback_lines) { @@ -1088,6 +1105,7 @@ static void fbcon_cursor(struct vc_data vbl_cursor_cnt = CURSOR_DRAW_DELAY; break; } + printk("FBCON: fbcon_cursor E\n"); } static int scrollback_phys_max = 0; @@ -1190,6 +1208,7 @@ static void fbcon_redraw_softback(struct unsigned long n; int line = 0; + printk("FBCON: fbcon_redraw_softback S\n"); d = (u16 *) softback_curr; if (d == (u16 *) softback_in) d = (u16 *) vc->vc_origin; @@ -1274,6 +1293,7 @@ static void fbcon_redraw_softback(struct if (s == (u16 *) softback_in) s = (u16 *) vc->vc_origin; } + printk("FBCON: fbcon_redraw_softback E\n"); } static void fbcon_redraw(struct vc_data *vc, struct display *p, @@ -1284,6 +1304,7 @@ static void fbcon_redraw(struct vc_data struct fb_info *info = (struct fb_info *)vc->display_fg->data_hook; unsigned short *s = d + offset; + printk("FBCON: fbcon_redraw S\n"); while (count--) { unsigned short *start = s; unsigned short *le = advance_row(s, 1); @@ -1331,6 +1352,7 @@ static void fbcon_redraw(struct vc_data d -= vc->vc_size_row; } } + printk("FBCON: fbcon_redraw E\n"); } static inline void fbcon_softback_note(struct vc_data *vc, int t, @@ -1365,6 +1387,7 @@ static int fbcon_scroll_region(struct vc struct display *p = &fb_display[vc->vc_num]; int scroll_partial = !(p->scrollmode & __SCROLL_YNOPARTIAL); + printk("FBCON: fbcon_scroll_region S\n"); if (!info->fbops->fb_blank && vc->display_fg->vt_blanked) return 0; @@ -1515,6 +1538,7 @@ static int fbcon_scroll_region(struct vc return 1; } } + printk("FBCON: fbcon_scroll_region E\n"); return 0; } @@ -1525,6 +1549,7 @@ static void fbcon_bmove(struct vc_data * struct fb_info *info = (struct fb_info *)vc->display_fg->data_hook; struct display *p = &fb_display[vc->vc_num]; + printk("FBCON: fbcon_bmove S\n"); if (!info->fbops->fb_blank && vc->display_fg->vt_blanked) return; @@ -1540,6 +1565,7 @@ static void fbcon_bmove(struct vc_data * */ fbcon_bmove_rec(vc, p, sy, sx, dy, dx, height, width, p->vrows - p->yscroll); + printk("FBCON: fbcon_bmove E\n"); } static void fbcon_bmove_rec(struct vc_data *vc, struct display *p, int sy, int sx, @@ -1548,6 +1574,7 @@ static void fbcon_bmove_rec(struct vc_da struct fb_info *info = (struct fb_info *)vc->display_fg->data_hook; u_int b; + printk("FBCON: fbcon_bmove_rec S\n"); if (sy < y_break && sy + height > y_break) { b = y_break - sy; if (dy < sy) { /* Avoid trashing self */ @@ -1581,6 +1608,7 @@ static void fbcon_bmove_rec(struct vc_da } accel_bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx, height, width); + printk("FBCON: fbcon_bmove_rec E\n"); } static int fbcon_resize(struct vc_data *vc, unsigned int width, @@ -1593,6 +1621,7 @@ static int fbcon_resize(struct vc_data * int fw = vc->vc_font.width; int fh = vc->vc_font.height; + printk("FBCON: fbcon_resize S\n"); var.xres = width * fw; var.yres = height * fh; x_diff = info->var.xres - var.xres; @@ -1611,6 +1640,7 @@ static int fbcon_resize(struct vc_data * p->vrows = var.yres_virtual/fh; if (var.yres > (fh * (height + 1))) p->vrows -= (var.yres - (fh * height)) / fh; + printk("FBCON: fbcon_resize E\n"); return 0; } @@ -1619,6 +1649,7 @@ static int fbcon_switch(struct vc_data * struct fb_info *info = (struct fb_info *)vc->display_fg->data_hook; struct display *p = &fb_display[vc->vc_num]; + printk("FBCON: fbcon_switch S\n"); if (softback_top) { int l = fbcon_softback_size / vc->vc_size_row; if (softback_lines) @@ -1676,6 +1707,7 @@ static int fbcon_switch(struct vc_data * vc->vc_origin + vc->vc_size_row * vc->vc_top, vc->vc_size_row * (vc->vc_bottom - vc->vc_top) / 2); + printk("FBCON: fbcon_switch E\n"); return 0; } return 1; @@ -1687,6 +1719,7 @@ static int fbcon_blank(struct vc_data *v struct fb_info *info = (struct fb_info *)vc->display_fg->data_hook; struct display *p = &fb_display[vc->vc_num]; + printk("FBCON: fbcon_blank S\n"); if (blank < 0) /* Entering graphics mode */ return 0; @@ -1714,6 +1747,7 @@ static int fbcon_blank(struct vc_data *v vc->vc_video_erase_char = oldc; } else update_screen(vc); + printk("FBCON: fbcon_blank E\n"); return 0; } else return fb_blank(info, blank); @@ -1721,10 +1755,12 @@ static int fbcon_blank(struct vc_data *v static void fbcon_free_font(struct display *p) { + printk("FBCON: fbcon_free_font S\n"); if (p->userfont && p->fontdata && (--REFCOUNT(p->fontdata) == 0)) kfree(p->fontdata - FONT_EXTRA_WORDS * sizeof(int)); p->fontdata = NULL; p->userfont = 0; + printk("FBCON: fbcon_free_font E\n"); } static inline int fbcon_get_font(struct vc_data *vc, struct console_font_op *op) @@ -1789,6 +1825,7 @@ static int fbcon_do_set_font(struct vc_d int cnt; char *old_data = NULL; + printk("FBCON: fbcon_do_set_font S\n"); if (!w > 32) { if (userfont && op->op != KD_FONT_OP_COPY) kfree(data - FONT_EXTRA_WORDS * sizeof(int)); @@ -1896,6 +1933,7 @@ static int fbcon_do_set_font(struct vc_d if (old_data && (--REFCOUNT(old_data) == 0)) kfree(old_data - FONT_EXTRA_WORDS * sizeof(int)); + printk("FBCON: fbcon_do_set_font E\n"); return 0; } @@ -2026,6 +2064,7 @@ static inline int fbcon_set_def_font(str static int fbcon_font_op(struct vc_data *vc, struct console_font_op *op) { + printk("FBCON: fbcon_font_op S\n"); switch (op->op) { case KD_FONT_OP_SET: return fbcon_set_font(vc, op); @@ -2054,6 +2093,7 @@ static int fbcon_set_palette(struct vc_d int i, j, k; u8 val; + printk("FBCON:fbcon_set_palette S\n"); if (!vc->vc_can_do_color || (!info->fbops->fb_blank && vc->display_fg->vt_blanked)) return -EINVAL; @@ -2071,6 +2111,7 @@ static int fbcon_set_palette(struct vc_d else palette_cmap.len = 16; palette_cmap.start = 0; + printk("FBCON: fbcon_set_palette E\n"); return fb_set_cmap(&palette_cmap, 1, info); } @@ -2079,6 +2120,7 @@ static u16 *fbcon_screen_pos(struct vc_d unsigned long p; int line; + printk("FBCON: fbcon_screen_pos S\n"); if (!IS_VISIBLE || !softback_lines) return (u16 *) (vc->vc_origin + offset); line = offset / vc->vc_size_row; @@ -2088,6 +2130,7 @@ static u16 *fbcon_screen_pos(struct vc_d p = softback_curr + offset; if (p >= softback_end) p += softback_buf - softback_end; + printk("FBCON: fbcon_screen_pos E\n"); return (u16 *) p; } @@ -2097,6 +2140,7 @@ static unsigned long fbcon_getxy(struct unsigned long ret; int x, y; + printk("FBCON: fbcon_getxy S\n"); if (pos >= vc->vc_origin && pos < vc->vc_scr_end) { unsigned long offset = (pos - vc->vc_origin) / 2; @@ -2127,6 +2171,7 @@ static unsigned long fbcon_getxy(struct *px = x; if (py) *py = y; + printk("FBCON: fbcon_getxy E\n"); return ret; } @@ -2134,6 +2179,7 @@ static unsigned long fbcon_getxy(struct that's why we have to use a separate routine. */ static void fbcon_invert_region(struct vc_data *vc, u16 * p, int cnt) { + printk("FBCON: fbcon_invert_region S\n"); while (cnt--) { u16 a = scr_readw(p); if (!vc->vc_can_do_color) @@ -2150,6 +2196,7 @@ static void fbcon_invert_region(struct v if (p == (u16 *) softback_in) p = (u16 *) vc->vc_origin; } + printk("FBCON: fbcon_invert_region E\n"); } static int fbcon_scroll(struct vc_data *vc, int lines) @@ -2158,6 +2205,7 @@ static int fbcon_scroll(struct vc_data * struct display *p = &fb_display[vc->display_fg->fg_console->vc_num]; int offset, limit, scrollback_old; + printk("FBCON: fbcon_scroll S\n"); if (softback_top) { if (!IS_VISIBLE) return 0; @@ -2236,13 +2284,16 @@ static int fbcon_scroll(struct vc_data * update_var(vc->vc_num, info); if (!scrollback_current) fbcon_cursor(vc, CM_DRAW); + printk("FBCON: fbcon_scroll E\n"); return 0; } static int fbcon_set_origin(struct vc_data *vc) { + printk("FBCON: fbcon_set_origin S\n"); if (softback_lines && !vc->display_fg->vt_blanked) fbcon_scroll(vc, softback_lines); + printk("FBCON: fbcon_set_origin E\n"); return 0; } @@ -2278,6 +2329,7 @@ int fbcon_resize_all(struct fb_info *inf struct vc_data *vc; int i; + printk("FBCON: fbcon_resize_all S\n"); if(!vt) return -ENODEV; @@ -2286,6 +2338,7 @@ int fbcon_resize_all(struct fb_info *inf vc->vc_rows = info->var.yres/vc->vc_font.height; for(i = 0; i < vt->vc_count; i++) vc_resize(vt->vc_cons[i], vc->vc_cols, vc->vc_rows); + printk("FBCON: fbcon_resize_all E\n"); return 0; } @@ -2295,6 +2348,7 @@ int fbcon_add(int unit, int vc_count) struct vt_struct *vt; struct vc_data *vc; + printk("FBCON: fbcon_add S\n"); vt = (struct vt_struct *) kmalloc(sizeof(struct vt_struct),GFP_KERNEL); if (!vt) return -ENOMEM; @@ -2325,6 +2379,7 @@ int fbcon_add(int unit, int vc_count) vt->default_mode->vc_cols, vt->default_mode->vc_rows, vt->first_vc + 1, vt->first_vc + vt->vc_count); + printk("FBCON: fbcon_add E\n"); return 0; } @@ -2332,6 +2387,7 @@ int __init fb_console_init(void) { int unit; + printk("FBCON: fb_console_init S\n"); if (!num_registered_fb) return -ENODEV; @@ -2349,6 +2405,7 @@ int __init fb_console_init(void) } else fbcon_add(unit, vt2fb[unit]); + printk("FBCON: fb_console_init E\n"); return 0; } --- r260t9/drivers/char/vt.c 2003-10-28 10:08:58.000000000 +0000 +++ r260t9/drivers/char/vt.chg.c 2003-11-11 14:19:36.000000000 +0000 @@ -1088,6 +1088,11 @@ int vc_resize(struct vc_data *vc, unsign video_size_row = new_row_size; screenbuf_size = ss; + printk("VC_RES: new rows:%d cols:%d size:%d ss:%d\n", + new_rows, new_cols, new_row_size, ss); + printk("VC_RES: font widht:%d height:%d\n", + vc->vc_font.width, vc->vc_font.height); + err = resize_screen(vc, new_cols * vc->vc_font.width, new_rows * vc->vc_font.height); if (err) { resize_screen(vc, old_cols * vc->vc_font.width, old_rows * vc->vc_font.height); No another way to debug it remotely. You only can determine oops initiator. You might switch off any type of kernel debug. Inside one month debugging should be well timed. Of course printk may destroy console debug. > and the bruby fixes : > > you hate i2c again :-) Applayed. Aivils |