From: Suresh Siddha <suresh.b.siddha@intel.com>
To: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
Arjan van de Ven <arjan@linux.jf.intel.com>
Cc: Venkatesh Pallipadi <venki@google.com>,
Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>,
ego@in.ibm.com, LKML <linux-kernel@vger.kernel.org>,
Dominik Brodowski <linux@dominikbrodowski.net>,
Nigel Cunningham <ncunningham@crca.org.au>,
Suresh Siddha <suresh.b.siddha@intel.com>
Subject: [patch 1/7] softirq: Add a no local fallback option to send_remote_softirq
Date: Mon, 17 May 2010 11:27:27 -0700 [thread overview]
Message-ID: <20100517184027.591595902@sbs-t61.sc.intel.com> (raw)
In-Reply-To: <20100517182726.089700767@sbs-t61.sc.intel.com>
[-- Attachment #1: no_local_fallback_option_to_send_remote_sofitq.patch --]
[-- Type: text/plain, Size: 3085 bytes --]
From: Venkatesh Pallipadi <venki@google.com>
Subject: softirq: Add a no local fallback option to send_remote_softirq
send_remote_softirq and __send_remote_softirq fallback to triggering
the softirq on local CPU when __try_remote_softirq fails. In certain
circumstances (like the SCHED_SOFTIRQ usage in following patch), the
softirq should only run on target CPUs if it runs. This new option helps
such callers.
As there seem to be no current users of send_remote_softirq in tree
today, added this option to current API instead of introducing a new
API.
Signed-off-by: Venkatesh Pallipadi <venki@google.com>
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
---
include/linux/interrupt.h | 5 +++--
kernel/softirq.c | 12 ++++++++----
2 files changed, 11 insertions(+), 6 deletions(-)
Index: tip/include/linux/interrupt.h
===================================================================
--- tip.orig/include/linux/interrupt.h
+++ tip/include/linux/interrupt.h
@@ -419,13 +419,14 @@ DECLARE_PER_CPU(struct list_head [NR_SOF
/* Try to send a softirq to a remote cpu. If this cannot be done, the
* work will be queued to the local cpu.
*/
-extern void send_remote_softirq(struct call_single_data *cp, int cpu, int softirq);
+extern void send_remote_softirq(struct call_single_data *cp, int cpu,
+ int softirq, int fallback);
/* Like send_remote_softirq(), but the caller must disable local cpu interrupts
* and compute the current cpu, passed in as 'this_cpu'.
*/
extern void __send_remote_softirq(struct call_single_data *cp, int cpu,
- int this_cpu, int softirq);
+ int this_cpu, int softirq, int fallback);
/* Tasklets --- multithreaded analogue of BHs.
Index: tip/kernel/softirq.c
===================================================================
--- tip.orig/kernel/softirq.c
+++ tip/kernel/softirq.c
@@ -610,9 +610,12 @@ static int __try_remote_softirq(struct c
*
* Interrupts must be disabled.
*/
-void __send_remote_softirq(struct call_single_data *cp, int cpu, int this_cpu, int softirq)
+void __send_remote_softirq(struct call_single_data *cp, int cpu, int this_cpu,
+ int softirq, int fallback)
{
- if (cpu == this_cpu || __try_remote_softirq(cp, cpu, softirq))
+ if (cpu == this_cpu)
+ __local_trigger(cp, softirq);
+ else if (__try_remote_softirq(cp, cpu, softirq) && fallback)
__local_trigger(cp, softirq);
}
EXPORT_SYMBOL(__send_remote_softirq);
@@ -626,14 +629,15 @@ EXPORT_SYMBOL(__send_remote_softirq);
* Like __send_remote_softirq except that disabling interrupts and
* computing the current cpu is done for the caller.
*/
-void send_remote_softirq(struct call_single_data *cp, int cpu, int softirq)
+void send_remote_softirq(struct call_single_data *cp, int cpu, int softirq,
+ int fallback)
{
unsigned long flags;
int this_cpu;
local_irq_save(flags);
this_cpu = smp_processor_id();
- __send_remote_softirq(cp, cpu, this_cpu, softirq);
+ __send_remote_softirq(cp, cpu, this_cpu, softirq, fallback);
local_irq_restore(flags);
}
EXPORT_SYMBOL(send_remote_softirq);
next prev parent reply other threads:[~2010-05-17 19:02 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-17 18:27 [patch 0/7] sched: change nohz idle load balancing logic to push model Suresh Siddha
2010-05-17 18:27 ` Suresh Siddha [this message]
2010-05-17 18:27 ` [patch 2/7] softirq: add init_remote_softirq_csd() Suresh Siddha
2010-05-17 18:27 ` [patch 3/7] softirq: avoid softirq_work_list for SCHED_SOFTIRQ when sent remotely Suresh Siddha
2010-05-20 8:12 ` Peter Zijlstra
2010-05-20 8:14 ` David Miller
2010-05-20 8:23 ` Jens Axboe
2010-05-20 8:29 ` Peter Zijlstra
2010-05-20 9:18 ` David Miller
2010-05-17 18:27 ` [patch 4/7] sched: Change nohz ilb logic from pull to push model Suresh Siddha
2010-06-01 23:47 ` Vaidyanathan Srinivasan
2010-06-02 22:27 ` Suresh Siddha
2010-05-17 18:27 ` [patch 5/7] sched: Change select_nohz_load_balancer to return void Suresh Siddha
2010-05-17 18:27 ` [patch 6/7] sched: change nohz.load_balancer to be nr_cpu_ids based Suresh Siddha
2010-05-20 9:49 ` Peter Zijlstra
2010-05-17 18:27 ` [patch 7/7] timers: use nearest busy cpu for migrating timers from an idle cpu Suresh Siddha
2010-06-01 23:37 ` Vaidyanathan Srinivasan
2010-06-02 22:02 ` Suresh Siddha
2010-05-17 22:39 ` [patch 0/7] sched: change nohz idle load balancing logic to push model Nigel Cunningham
2010-05-19 9:19 ` Dominik Brodowski
2010-05-20 10:50 ` Peter Zijlstra
2010-05-22 0:09 ` Suresh Siddha
2010-05-31 9:17 ` Peter Zijlstra
2010-06-09 10:13 ` [tip:sched/core] sched: Change " tip-bot for Venkatesh Pallipadi
2010-05-20 11:07 ` [patch 0/7] sched: change " Nigel Cunningham
2010-05-20 11:17 ` Dominik Brodowski
2010-05-20 11:35 ` Nigel Cunningham
2010-05-20 12:13 ` Dominik Brodowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100517184027.591595902@sbs-t61.sc.intel.com \
--to=suresh.b.siddha@intel.com \
--cc=arjan@linux.jf.intel.com \
--cc=ego@in.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@dominikbrodowski.net \
--cc=mingo@elte.hu \
--cc=ncunningham@crca.org.au \
--cc=peterz@infradead.org \
--cc=svaidy@linux.vnet.ibm.com \
--cc=tglx@linutronix.de \
--cc=venki@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®