[PATCH]: why reschedule a disabled tasklet?

From: Mathijs Mohlmann (mathijs@knoware.nl)
Date: Thu Nov 08 2001 - 11:36:08 EST


        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/



This archive was generated by hypermail 2b29 : Thu Nov 15 2001 - 21:00:18 EST