[PATCH]: why reschedule a disabled tasklet?

Mathijs Mohlmann (mathijs@knoware.nl)
Thu, 8 Nov 2001 17:36:08 +0100


Hi all,

Attached is a patch i use to get my sparc LX to boot (against 2.4.14).
Without it the SUN does not work. I'm not sure if this is the right way to
fix it, but i fail to see way softirq should be raised again if there are no
enabled tasklets left. Am i missing anything?

The SUN got in a deadlock. The schedule() function didn't return
execution to spawn_ksoftirqd, because ksoftirqd kept on doing do_softirqd to
handle a disabled tasklet (sun_kbd_bh).

Both my i386 and sun4m seem to run stable with this patch.

me

diff -ruN linux-2.4.14/kernel/softirq.c linux/kernel/softirq.c
--- linux-2.4.14/kernel/softirq.c Thu Nov 8 15:58:24 2001
+++ linux/kernel/softirq.c Thu Nov 8 15:59:40 2001
@@ -193,10 +193,9 @@
if (!test_and_clear_bit(TASKLET_STATE_SCHED, &t->state))
BUG();
t->func(t->data);
- tasklet_unlock(t);
- continue;
}
tasklet_unlock(t);
+ continue;
}

local_irq_disable();
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/