[l-a-u CCed because we've been talking about this problem there
recently, and that's what prodded me to do the bisection to track it
down... fortunately the -rt8 to -rt9 interdiff was pretty small!]
Subject: [PATCH] [RT] tasklets: fix typo in tasklet_hi_action
Fix a typo in tasklet_hi_action -- using the wrong tasklet list when removing
actions.
This appears to be what was causing the ALSA sequencer device not to work in
2.6.26 with the RT patch: the sequencer was flaky in -rt1 to -rt8, and just
hung in -rt9 and later, after tasklets-fix-tasklet_hi_schedule.patch which
fixed the same typo when adding to the list. I guess that's because before -rt9
the actions were going onto the wrong list, whereas after -rt9 they were being
lost entirely once the first one had been performed. It seems happy now,
anyway.
Signed-off-by: Adam Sampson <ats(a)offog.org>
--- linux-2.6.26/kernel/softirq.c_orig 2009-01-04 14:41:06.000000000 +0000
+++ linux-2.6.26/kernel/softirq.c 2009-01-04 14:41:49.000000000 +0000
@@ -657,7 +657,7 @@
local_irq_disable();
list = __get_cpu_var(tasklet_hi_vec).head;
__get_cpu_var(tasklet_hi_vec).head = NULL;
- __get_cpu_var(tasklet_hi_vec).tail = &__get_cpu_var(tasklet_vec).head;
+ __get_cpu_var(tasklet_hi_vec).tail = &__get_cpu_var(tasklet_hi_vec).head;
local_irq_enable();
__tasklet_action(a, list);
--
Adam Sampson <ats(a)offog.org> <http://offog.org/>