There is no need to add the SCHED_SOFTIRQ work to the softirq_work_list when sent remotely. This is because any pending work associated with SCHED_SOFTIRQ need not be migrated to a new cpu when the current cpu is going down etc. Also I am not sure how this softirq_work_list works for other softirqs. I don't see anyone removing the list entries from the softirq_work_list after it is handled on a remote cpu. For now, just skip it for SCHED_SOFTIRQ. Signed-off-by: Suresh Siddha Cc: David S. Miller Cc: Jens Axboe --- kernel/softirq.c | 5 +++++ 1 file changed, 5 insertions(+) Index: tip/kernel/softirq.c =================================================================== --- tip.orig/kernel/softirq.c +++ tip/kernel/softirq.c @@ -557,6 +557,11 @@ static void __local_trigger(struct call_ { struct list_head *head = &__get_cpu_var(softirq_work_list[softirq]); + if (softirq == SCHED_SOFTIRQ) { + raise_softirq_irqoff(softirq); + return; + } + list_add_tail(&cp->list, head); /* Trigger the softirq only if the list was previously empty. */ -- 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/