|
From: Aivils <ai...@un...> - 2004-04-26 08:56:10
|
Unfortunately I should use agressive methods to check out how wide is ruby bug. > ============================================ > kernel BUG at kernel/softirq.c:412! > invalid operand: 000 [#1] > - BUG_ON(per_cpu(tasklet_vec, hotcpu).list); - BUG_ON(per_cpu(tasklet_hi_vec, hotcpu).list); + per_cpu(tasklet_vec, hotcpu).list = NULL; + per_cpu(tasklet_hi_vec, hotcpu).list = NULL; I do not know how linux-ruby destroy static structures :( Current i have only one thread - linux-ruby dies shortly after VGA console init, because R.Russel place BUG into line 412. Aivils |
|
From: Zoltan B. <zb...@fr...> - 2004-04-29 04:51:58
|
Arne Georg Gleditsch =EDrta:
> * Zoltan Boszormenyi
>=20
>>do your Num/Caps/Scroll Lock leds work? The keys themselves do
>>but the led states aren't changing. (2.6.6-rc2-mm1-ruby)
>=20
>=20
> Ah, no, they don't. Not surprising, perhaps, since set_leds was
> calling tasklet_schedule before the tasklet lists were assigned to
I don't really get this. This is in linux-2.6.5/init/main.c :
-------------from line 477 -------------
init_timers();
softirq_init();
time_init();
=20
/*
* HACK ALERT! This is early. We're enabling the console before
* we've done PCI setups etc, and console_init() must be aware o=
f
* this. But we do want output early, in case something goes wro=
ng.
*/
console_init();
if (panic_later)
panic(panic_later, panic_param);
----------------------------------------
So the softirq_init() is already run before console_init()
that goes this way (back trace):
Call Trace:
[<c0120432>] __tasklet_schedule+0x92/0xb0
[<c01e7af1>] vte_ris+0x181/0x190
[<c01edbe5>] vc_init+0x45/0x60
[<c021770c>] vgacon_init+0x8c/0xc0
[<c01edd93>] vc_allocate+0x123/0x1f0
[<c01ef195>] vt_map_display+0x145/0x1c0
[<c036ef0a>] vga_console_init+0x3a/0xb0
[<c01088ba>] setup_irq+0x8a/0xf0
[<c036ab63>] console_init+0x23/0x30
> NULL. I just commented out the two lines that were originally BUG_ON,
> now the leds work again. I suppose there's an ordering problem here,
> if the lists are not really allowed to be appended to before the
> softirq-stuff runs.
But softirq_init() was already done.
Rusty, could it be the BUG_ON() calls are bogus?
Best regards,
Zolt=E1n B=F6sz=F6rm=E9nyi
|
|
From: Rusty R. <ru...@ru...> - 2004-04-29 05:38:53
|
On Thu, 2004-04-29 at 14:51, Zoltan Boszormenyi wrote: > Arne Georg Gleditsch =EDrta: > > * Zoltan Boszormenyi > >=20 > >>do your Num/Caps/Scroll Lock leds work? The keys themselves do > >>but the led states aren't changing. (2.6.6-rc2-mm1-ruby) > >=20 > >=20 > > Ah, no, they don't. Not surprising, perhaps, since set_leds was > > calling tasklet_schedule before the tasklet lists were assigned to >=20 > I don't really get this. This is in linux-2.6.5/init/main.c : >=20 > -------------from line 477 ------------- > init_timers(); > softirq_init(); But this needs spawn_ksoftirqd, which isn't called here. Looks like the right fix is to remove the BUG_ON()s in cpu_callback, or wrap them in "if (system_state =3D=3D SYSTEM_RUNNING)". Rusty. --=20 Anyone who quotes me in their signature is an idiot -- Rusty Russell |
|
From: Aivils <ai...@un...> - 2004-04-29 06:22:18
|
On Thursday 29 April 2004 08:37, Rusty Russell wrote: > On Thu, 2004-04-29 at 14:51, Zoltan Boszormenyi wrote: > > Arne Georg Gleditsch =EDrta: > > > * Zoltan Boszormenyi > > >=20 > > >>do your Num/Caps/Scroll Lock leds work? The keys themselves do > > >>but the led states aren't changing. (2.6.6-rc2-mm1-ruby) > > >=20 > > >=20 > > > Ah, no, they don't. Not surprising, perhaps, since set_leds was > > > calling tasklet_schedule before the tasklet lists were assigned to > >=20 > > I don't really get this. This is in linux-2.6.5/init/main.c : > >=20 > > -------------from line 477 ------------- > > init_timers(); > > softirq_init(); >=20 > But this needs spawn_ksoftirqd, which isn't called here. >=20 > Looks like the right fix is to remove the BUG_ON()s in cpu_callback, > or wrap them in "if (system_state =3D=3D SYSTEM_RUNNING)". Thanks You very match for Your deep and wide support. linuxconsole.sf.net project have his own terminal emulation code, which seems right now is slightly outdated. Our bug is calling set_leds() to early. I will try to find right place for set_leds() and live alone linus-tree 2.6.5 ,because here set_leds() removed from reset_terminal since APR-2002 :) So BUG_ON() kernel/softirq.c line 412 notify us about early call of tasklet_schedule() and You have the right. Aivils Stoss |
|
From: Zoltan B. <zb...@fr...> - 2004-04-29 13:05:58
|
Aivils =EDrta: > linuxconsole.sf.net project have his own terminal emulation code, which > seems right now is slightly outdated. > Our bug is calling set_leds() to early. I will try to find right place = for > set_leds() and live alone linus-tree 2.6.5 ,because here set_leds() rem= oved > from reset_terminal since APR-2002 :) > So BUG_ON() kernel/softirq.c line 412 notify us about early call of > tasklet_schedule() and You have the right. So when will we see the CVS updated? ;-) Best regards Zolt=E1n B=F6sz=F6rm=E9nyi |
|
From: Arne G. G. <ar...@li...> - 2004-04-26 14:57:28
|
* Aivils > I do not know how linux-ruby destroy static structures :( > Current i have only one thread - linux-ruby dies shortly > after VGA console init, because R.Russel place BUG into > line 412. I don't think this is memory corruption. I've made an attempt to chase this down, and it seems the problem is the call to tasklet_schedule in set_leds. The call stack is like this: vt_console_init vga_console_init vt_map_display vc_allocate vc_init vte_ris set_leds tasklet_schedule Not sure why this is a problem or what the correct fix is, though. Arne. |
|
From: Arne G. G. <ar...@li...> - 2004-04-28 14:37:35
|
* Arne Georg Gleditsch > Not sure why this is a problem or what the correct fix is, though. As a datapoint, with the quick-and-dirty fix given, I'm running a multiseat X configuration quite happily with 2.6.6rc3/ruby. I'm probably not exercising all of the Ruby codebase, but if anyone wants my patches, I'll be happy to make them available. Arne. |
|
From: Zoltan B. <zb...@fr...> - 2004-04-28 15:33:16
|
Hi, Arne Georg Gleditsch =EDrta: > * Arne Georg Gleditsch >=20 >>Not sure why this is a problem or what the correct fix is, though. >=20 >=20 > As a datapoint, with the quick-and-dirty fix given, I'm running a > multiseat X configuration quite happily with 2.6.6rc3/ruby. I'm > probably not exercising all of the Ruby codebase, but if anyone wants > my patches, I'll be happy to make them available. >=20 >=20 > Arne. do your Num/Caps/Scroll Lock leds work? The keys themselves do but the led states aren't changing. (2.6.6-rc2-mm1-ruby) Best regards, Zolt=E1n B=F6sz=F6rm=E9nyi |
|
From: Arne G. G. <ar...@li...> - 2004-04-28 18:59:20
|
* Zoltan Boszormenyi > do your Num/Caps/Scroll Lock leds work? The keys themselves do > but the led states aren't changing. (2.6.6-rc2-mm1-ruby) Ah, no, they don't. Not surprising, perhaps, since set_leds was calling tasklet_schedule before the tasklet lists were assigned to NULL. I just commented out the two lines that were originally BUG_ON, now the leds work again. I suppose there's an ordering problem here, if the lists are not really allowed to be appended to before the softirq-stuff runs. Arne. |