patch-2.4.0-test9 linux/kernel/softirq.c
Next file: linux/kernel/sys.c
Previous file: linux/kernel/signal.c
Back to the patch index
Back to the overall index
- Lines: 24
- Date:
Fri Sep 22 14:07:43 2000
- Orig file:
v2.4.0-test8/linux/kernel/softirq.c
- Orig date:
Sun Aug 6 12:42:21 2000
diff -u --recursive --new-file v2.4.0-test8/linux/kernel/softirq.c linux/kernel/softirq.c
@@ -44,7 +44,7 @@
irq_cpustat_t irq_stat[NR_CPUS];
#endif /* CONFIG_ARCH_S390 */
-static struct softirq_action softirq_vec[32];
+static struct softirq_action softirq_vec[32] __cacheline_aligned;
asmlinkage void do_softirq()
{
@@ -140,6 +140,14 @@
clear_bit(TASKLET_STATE_SCHED, &t->state);
t->func(t->data);
+ /*
+ * talklet_trylock() uses test_and_set_bit that imply
+ * an mb when it returns zero, thus we need the explicit
+ * mb only here: while closing the critical section.
+ */
+#ifdef CONFIG_SMP
+ smp_mb__before_clear_bit();
+#endif
tasklet_unlock(t);
continue;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)