Skip to content

Commit

Permalink
sched: rt: fix the bandwidth contraint computations
Browse files Browse the repository at this point in the history
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: "Daniel K." <dk@uw.no>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Peter Zijlstra authored and Ingo Molnar committed Jun 20, 2008
1 parent eff6549 commit 10b612f
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions kernel/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -8419,7 +8419,7 @@ static unsigned long to_ratio(u64 period, u64 runtime)
#ifdef CONFIG_CGROUP_SCHED
static int __rt_schedulable(struct task_group *tg, u64 period, u64 runtime)
{
struct task_group *tgi, *parent = tg ? tg->parent : NULL;
struct task_group *tgi, *parent = tg->parent;
unsigned long total = 0;

if (!parent) {
Expand All @@ -8443,7 +8443,7 @@ static int __rt_schedulable(struct task_group *tg, u64 period, u64 runtime)
}
rcu_read_unlock();

return total + to_ratio(period, runtime) <
return total + to_ratio(period, runtime) <=
to_ratio(ktime_to_ns(parent->rt_bandwidth.rt_period),
parent->rt_bandwidth.rt_runtime);
}
Expand Down Expand Up @@ -8560,10 +8560,15 @@ long sched_group_rt_period(struct task_group *tg)

static int sched_rt_global_constraints(void)
{
struct task_group *tg = &root_task_group;
u64 rt_runtime, rt_period;
int ret = 0;

rt_period = ktime_to_ns(tg->rt_bandwidth.rt_period);
rt_runtime = tg->rt_bandwidth.rt_runtime;

mutex_lock(&rt_constraints_mutex);
if (!__rt_schedulable(NULL, 1, 0))
if (!__rt_schedulable(tg, rt_period, rt_runtime))
ret = -EINVAL;
mutex_unlock(&rt_constraints_mutex);

Expand Down

0 comments on commit 10b612f

Please sign in to comment.