From: Aivils <ai...@un...> - 2004-05-27 14:26:51
|
On Thursday 27 May 2004 15:40, Helge Hafting wrote: > Aivils wrote: > > >Hi All! > > > > CVS now contains linux-ruby against 2.6.6. > > > >FBIOGET_CON2FBMAP, FBIOSET_CON2FBMAP ioctl() uses > >dummy call. > > > > > Thanks for the good work - ruby-2.6.6 works for me. > There is a small problem where I get 998 messages in > /var/log/messages during startup. > This slows startup down with abouit half a minute, > but doesn't seem to have other problems: > One run: > > May 26 22:57:27 monster kernel: Badness in vc_resize at > drivers/char/vt.c:1095 > May 26 22:57:27 monster kernel: Call Trace: > May 26 22:57:27 monster kernel: [<c0208ad4>] vc_resize+0x3b4/0x3c0 > May 26 22:57:27 monster kernel: [<c0128678>] notifier_call_chain+0x18/0x40 > May 26 22:57:27 monster kernel: [<c0283999>] fb_resize_vt+0x59/0x70 > May 26 22:57:27 monster kernel: [<c0283b17>] fb_ioctl+0x167/0x340 > May 26 22:57:27 monster kernel: [<c0134391>] unlock_page+0x11/0x60 > May 26 22:57:27 monster kernel: [<c014aaa9>] exclusive_swap_page+0x39/0x90 > May 26 22:57:27 monster kernel: [<c0134391>] unlock_page+0x11/0x60 > May 26 22:57:27 monster kernel: [<c014109d>] do_wp_page+0x7d/0x2f0 > May 26 22:57:27 monster kernel: [<c014613d>] __pte_chain_free+0x4d/0x50 > May 26 22:57:27 monster kernel: [<c015f5dc>] sys_ioctl+0xec/0x25a > May 26 22:57:27 monster kernel: [<c0106cff>] syscall_call+0x7/0xb > May 26 22:57:28 monster kernel: > Then the machine was reset, probably by me. > > The log then contains a restart followed by about 900 of these > vc_restart messages. > > Could this be a ruby problem, or some sort of framebuffer problem? ruby needs for tousends of acquire_console_sem();release_console_sem(); pairs. Please try this patch, on succes i upload subject on CVS. diff -Nurp ruby-CVS-20040525/drivers/video/console/fbcon.c ruby-CVS-20040527/drivers/video/console/fbcon.c --- ruby-CVS-20040525/drivers/video/console/fbcon.c 2004-05-24 21:26:48.000000000 +0300 +++ ruby-CVS-20040527/drivers/video/console/fbcon.c 2004-05-27 18:06:46.000000000 +0300 @@ -761,7 +761,9 @@ static void fbcon_set_display(struct vc_ if (!init) { if (vc->vc_cols != nr_cols || vc->vc_rows != nr_rows) + acquire_console_sem(); vc_resize(vc, nr_cols, nr_rows); + release_console_sem(); else if (IS_VISIBLE && vc->vc_mode == KD_TEXT) { accel_clear_margins(vc, info, 0); @@ -1842,7 +1844,9 @@ static int fbcon_do_set_font(struct vc_d && (info->var.yres_virtual % h < info->var.yres % h)) p->vrows--; updatescrollmode(p, vc); + acquire_console_sem(); vc_resize(vc, info->var.xres / w, info->var.yres / h); + release_console_sem(); if (IS_VISIBLE && softback_buf) { int l = fbcon_softback_size / vc->vc_size_row; if (l > 5) diff -Nurp ruby-CVS-20040525/drivers/video/fbmem.c ruby-CVS-20040527/drivers/video/fbmem.c --- ruby-CVS-20040525/drivers/video/fbmem.c 2004-05-24 21:26:48.000000000 +0300 +++ ruby-CVS-20040527/drivers/video/fbmem.c 2004-05-27 18:07:10.000000000 +0300 @@ -1010,8 +1010,11 @@ fb_resize_vt(struct fb_info *info) vc = vt->default_mode; vc->vc_cols = info->var.xres/vc->vc_font.width; vc->vc_rows = info->var.yres/vc->vc_font.height; - for(i = 0; i < vt->vc_count; i++) + for(i = 0; i < vt->vc_count; i++) { + acquire_console_sem(); vc_resize(vt->vc_cons[i], vc->vc_cols, vc->vc_rows); + release_console_sem(); + } return 0; } |