Commit a5a25b32 authored by Michal Koutný's avatar Michal Koutný Committed by Peter Zijlstra
Browse files

sched: Always initialize rt_rq's task_group



rt_rq->tg may be NULL which denotes the root task_group.
Store the pointer to root_task_group directly so that callers may use
rt_rq->tg homogenously.

root_task_group exists always with CONFIG_CGROUPS_SCHED,
CONFIG_RT_GROUP_SCHED depends on that.

This changes root level rt_rq's default limit from infinity to the
value of (originally) global RT throttling.

Signed-off-by: default avatarMichal Koutný <mkoutny@suse.com>
Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20250310170442.504716-4-mkoutny@suse.com
parent e285313f
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@ void init_rt_rq(struct rt_rq *rt_rq)
	rt_rq->rt_throttled = 0;
	rt_rq->rt_runtime = 0;
	raw_spin_lock_init(&rt_rq->rt_runtime_lock);
	rt_rq->tg = &root_task_group;
#endif
}

@@ -482,9 +483,6 @@ static inline bool rt_task_fits_capacity(struct task_struct *p, int cpu)

static inline u64 sched_rt_runtime(struct rt_rq *rt_rq)
{
	if (!rt_rq->tg)
		return RUNTIME_INF;

	return rt_rq->rt_runtime;
}

@@ -1154,7 +1152,6 @@ inc_rt_group(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq)
	if (rt_se_boosted(rt_se))
		rt_rq->rt_nr_boosted++;

	if (rt_rq->tg)
	start_rt_bandwidth(&rt_rq->tg->rt_bandwidth);
}

+2 −0
Original line number Diff line number Diff line
@@ -821,6 +821,8 @@ struct rt_rq {
	unsigned int		rt_nr_boosted;

	struct rq		*rq;
#endif
#ifdef CONFIG_CGROUP_SCHED
	struct task_group	*tg;
#endif
};