aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern Brandenburg <bbb@mpi-sws.org>2013-07-25 16:56:55 -0400
committerNamhoon Kim <namhoonk@cs.unc.edu>2014-10-21 10:08:00 -0400
commit2c85fa0767ce6355759868583a9eeedb1feb384f (patch)
tree5b66cdf18a676f402cda31631aba1ad617b98e46
parente801a3104619e8dbee8e1fed05402f160d8f790d (diff)
Don't call set_tsk_need_resched() on remote LITMUS^RT task
This patch fixes a BUG_ON() in litmus/preempt.c:33 reported by Felipe Cerqueira & Manohar Vanga.
-rw-r--r--kernel/sched/core.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 1be8a352f32e..6bced0e430bb 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -526,9 +526,14 @@ void resched_task(struct task_struct *p)
526 if (test_tsk_need_resched(p)) 526 if (test_tsk_need_resched(p))
527 return; 527 return;
528 528
529 set_tsk_need_resched(p);
530
531 cpu = task_cpu(p); 529 cpu = task_cpu(p);
530
531 /* Cannot call set_tsk_need_resched() on LITMUS^RT task
532 * on remote core. Only policy plugins may do this via
533 * litmus_reschedule(). */
534 if (!is_realtime(p) || cpu == smp_processor_id())
535 set_tsk_need_resched(p);
536
532 if (cpu == smp_processor_id()) 537 if (cpu == smp_processor_id())
533 return; 538 return;
534 539