diff --git a/kernel/sched/core.c b/kernel/sched/core.c index f68625ec8cf8..6469e436bf7c 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1216,8 +1216,12 @@ static void __setscheduler_uclamp(struct task_struct *p, continue; /* By default, RT tasks always get 100% boost */ - if (unlikely(rt_task(p) && clamp_id == UCLAMP_MIN)) + if (sched_feat(SUGOV_RT_MAX_FREQ) && + unlikely(rt_task(p) && + clamp_id == UCLAMP_MIN)) { + clamp_value = uclamp_none(UCLAMP_MAX); + } uclamp_se_set(uc_se, clamp_value, false); } @@ -1250,8 +1254,12 @@ static void uclamp_fork(struct task_struct *p) unsigned int clamp_value = uclamp_none(clamp_id); /* By default, RT tasks always get 100% boost */ - if (unlikely(rt_task(p) && clamp_id == UCLAMP_MIN)) + if (sched_feat(SUGOV_RT_MAX_FREQ) && + unlikely(rt_task(p) && + clamp_id == UCLAMP_MIN)) { + clamp_value = uclamp_none(UCLAMP_MAX); + } uclamp_se_set(&p->uclamp_req[clamp_id], clamp_value, false); }