aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2011-08-24 11:32:21 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2011-08-27 10:29:47 -0400
commitfb8d6602af1cbc09115544056b872b976c6349c3 (patch)
tree8c25e307650001a09a1616fb843b96e2b0d688b7
parentea62a6fe914f7463f89422dcb1812eb071cbd495 (diff)
Prevent Linux to send IPI and queue tasks on remote CPUs.wip-merge-v3.0
Whether to send IPIs and enqueue tasks on remote runqueues is plugin-specific. The recent ttwu_queue() mechanism (by calling ttwu_queue_remote()) interferes with Litmus plugin decisions.
-rw-r--r--kernel/sched.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index 935f8e8e6160..baaca61bc3a3 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -2661,7 +2661,12 @@ static void ttwu_queue(struct task_struct *p, int cpu)
2661 struct rq *rq = cpu_rq(cpu); 2661 struct rq *rq = cpu_rq(cpu);
2662 2662
2663#if defined(CONFIG_SMP) 2663#if defined(CONFIG_SMP)
2664 if (sched_feat(TTWU_QUEUE) && cpu != smp_processor_id()) { 2664 /*
2665 * LITMUS^RT: whether to send an IPI to the remote CPU
2666 * is plugin specific.
2667 */
2668 if (!is_realtime(p) &&
2669 sched_feat(TTWU_QUEUE) && cpu != smp_processor_id()) {
2665 sched_clock_cpu(cpu); /* sync clocks x-cpu */ 2670 sched_clock_cpu(cpu); /* sync clocks x-cpu */
2666 ttwu_queue_remote(p, cpu); 2671 ttwu_queue_remote(p, cpu);
2667 return; 2672 return;