diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2011-08-24 11:32:21 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2011-08-24 11:32:21 -0400 |
commit | e3a21fa46e1391528d03bada261b78ec82ba0b53 (patch) | |
tree | 3c5f0986c357e9a935c99388ba7fb1cd3553dc56 /kernel/sched.c | |
parent | 4576ff97efe90469f848a6849a41ae0abfcd9a30 (diff) |
Prevent Linux to send IPI and queue tasks on remote CPUs.wip-merge-3.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.
As a side effect, note that this patch removes a synchronization
point for CPUs clocks (sched_clock_cpu()).
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 0c8b6e1e9e79..8abc7b0442c3 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -2666,7 +2666,12 @@ static void ttwu_queue(struct task_struct *p, int cpu) | |||
2666 | struct rq *rq = cpu_rq(cpu); | 2666 | struct rq *rq = cpu_rq(cpu); |
2667 | 2667 | ||
2668 | #if defined(CONFIG_SMP) | 2668 | #if defined(CONFIG_SMP) |
2669 | if (sched_feat(TTWU_QUEUE) && cpu != smp_processor_id()) { | 2669 | /* |
2670 | * LITMUS^RT: whether to send an IPI to the remote CPU | ||
2671 | * is plugin specific. | ||
2672 | */ | ||
2673 | if (!is_realtime(p) && | ||
2674 | sched_feat(TTWU_QUEUE) && cpu != smp_processor_id()) { | ||
2670 | sched_clock_cpu(cpu); /* sync clocks x-cpu */ | 2675 | sched_clock_cpu(cpu); /* sync clocks x-cpu */ |
2671 | ttwu_queue_remote(p, cpu); | 2676 | ttwu_queue_remote(p, cpu); |
2672 | return; | 2677 | return; |