[lkml]   [2002]   [Mar]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRaising an disabled tasklet / VC/KBD initialization bug.


I just ran into the following situation on x86-64 on 2.4.17. I think
2.5 has the same problem.

For some reason vc_init executed in init order after kbd_init
(they are both indirectly called via __initcall so it can happen)
vc_init does a tasklet_schedule for the keyboard tasklet in
set_leds. The keyboard tasklet had not been enabled yet because kbd_init
didn't execute.
Result was an raised tasklet that wasn't enabled. schedule was called
and ran the softirqs. tasklet_action always tried to execute it, but
returned on the non zero count. The tasklet was still active. ksoftirqd
noticed that and executed do_softirq again -> endless loop.

For now I just removed the set_leds() call in reset_terminal to work around
it. The real fix would be either to add an mechanism to support raising
of disabled tasklets properly or make sure kbd_init and vc_init have defined
init order and the first always executes before the second.



To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:24    [W:0.048 / U:6.024 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site