Commit 61aacaa2 authored by Andi Kleen's avatar Andi Kleen Committed by Russell King

[PATCH] Fix console initialization deadlock for x86-64

When vt_init happens to run before the keyboard is initialized (the order is random
because they're both different initcalls) then set_leds raises an not yet enabled
tasklet. This causes an endless loop on the first schedule() call because the tasklet
handling cannot handle raised but disabled tasklets.

This patch just does not do set_leds in virtual terminal initialization to avoid that.
It is done later anyways.
parent b817df50
...@@ -1420,7 +1420,8 @@ static void reset_terminal(int currcons, int do_clear) ...@@ -1420,7 +1420,8 @@ static void reset_terminal(int currcons, int do_clear)
kbd_table[currcons].slockstate = 0; kbd_table[currcons].slockstate = 0;
kbd_table[currcons].ledmode = LED_SHOW_FLAGS; kbd_table[currcons].ledmode = LED_SHOW_FLAGS;
kbd_table[currcons].ledflagstate = kbd_table[currcons].default_ledflagstate; kbd_table[currcons].ledflagstate = kbd_table[currcons].default_ledflagstate;
set_leds(); /* do not do set_leds here because this causes an endless tasklet loop
when the keyboard hasn't been initialized yet */
cursor_type = CUR_DEFAULT; cursor_type = CUR_DEFAULT;
complement_mask = s_complement_mask; complement_mask = s_complement_mask;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment