aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--litmus/sched_pfair.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/litmus/sched_pfair.c b/litmus/sched_pfair.c
index c5ec177f236b..4f9a8c2ecdc3 100644
--- a/litmus/sched_pfair.c
+++ b/litmus/sched_pfair.c
@@ -630,9 +630,14 @@ static void process_out_of_budget_tasks(
630 list_del(&tsk_rt(t)->list); 630 list_del(&tsk_rt(t)->list);
631 if (t != prev || !blocks) 631 if (t != prev || !blocks)
632 { 632 {
633 sched_trace_task_release(t); 633 if (time_after(cur_release(t), state->local_tick)) {
634 add_release(&cpu_cluster(state)->pfair, t); 634 TRACE_TASK(t, "adding to release queue (budget exhausted)\n");
635 TRACE_TASK(t, "adding to release queue (budget exhausted)\n"); 635 add_release(&cpu_cluster(state)->pfair, t);
636 } else {
637 TRACE_TASK(t, "adding to ready queue (budget exhausted)\n");
638 sched_trace_task_release(t);
639 __add_ready(&cpu_cluster(state)->pfair, t);
640 }
636 } else { 641 } else {
637 TRACE_TASK(t, "not added to release queue (blocks=%d)\n", blocks); 642 TRACE_TASK(t, "not added to release queue (blocks=%d)\n", blocks);
638 tsk_pfair(t)->needs_requeue = 1; 643 tsk_pfair(t)->needs_requeue = 1;