[patch 3/7] softirq: avoid softirq_work_list for SCHED_SOFTIRQ when sent remotely

From: Suresh Siddha
Date: Mon May 17 2010 - 15:03:13 EST

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 <suresh.b.siddha@xxxxxxxxx>
Cc: David S. Miller <davem@xxxxxxxxxxxxx>
Cc: Jens Axboe <jens.axboe@xxxxxxxxxx>
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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/