summaryrefslogtreecommitdiffstats
path: root/kernel/sched/sched.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sched/sched.h')
-rw-r--r--kernel/sched/sched.h21
1 files changed, 20 insertions, 1 deletions
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 9b0c77a99346..1783f6b4c2e0 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -2266,11 +2266,20 @@ static inline void cpufreq_update_util(struct rq *rq, unsigned int flags) {}
2266#endif /* CONFIG_CPU_FREQ */ 2266#endif /* CONFIG_CPU_FREQ */
2267 2267
2268#ifdef CONFIG_UCLAMP_TASK 2268#ifdef CONFIG_UCLAMP_TASK
2269static inline unsigned int uclamp_util(struct rq *rq, unsigned int util) 2269unsigned int uclamp_eff_value(struct task_struct *p, unsigned int clamp_id);
2270
2271static __always_inline
2272unsigned int uclamp_util_with(struct rq *rq, unsigned int util,
2273 struct task_struct *p)
2270{ 2274{
2271 unsigned int min_util = READ_ONCE(rq->uclamp[UCLAMP_MIN].value); 2275 unsigned int min_util = READ_ONCE(rq->uclamp[UCLAMP_MIN].value);
2272 unsigned int max_util = READ_ONCE(rq->uclamp[UCLAMP_MAX].value); 2276 unsigned int max_util = READ_ONCE(rq->uclamp[UCLAMP_MAX].value);
2273 2277
2278 if (p) {
2279 min_util = max(min_util, uclamp_eff_value(p, UCLAMP_MIN));
2280 max_util = max(max_util, uclamp_eff_value(p, UCLAMP_MAX));
2281 }
2282
2274 /* 2283 /*
2275 * Since CPU's {min,max}_util clamps are MAX aggregated considering 2284 * Since CPU's {min,max}_util clamps are MAX aggregated considering
2276 * RUNNABLE tasks with _different_ clamps, we can end up with an 2285 * RUNNABLE tasks with _different_ clamps, we can end up with an
@@ -2281,7 +2290,17 @@ static inline unsigned int uclamp_util(struct rq *rq, unsigned int util)
2281 2290
2282 return clamp(util, min_util, max_util); 2291 return clamp(util, min_util, max_util);
2283} 2292}
2293
2294static inline unsigned int uclamp_util(struct rq *rq, unsigned int util)
2295{
2296 return uclamp_util_with(rq, util, NULL);
2297}
2284#else /* CONFIG_UCLAMP_TASK */ 2298#else /* CONFIG_UCLAMP_TASK */
2299static inline unsigned int uclamp_util_with(struct rq *rq, unsigned int util,
2300 struct task_struct *p)
2301{
2302 return util;
2303}
2285static inline unsigned int uclamp_util(struct rq *rq, unsigned int util) 2304static inline unsigned int uclamp_util(struct rq *rq, unsigned int util)
2286{ 2305{
2287 return util; 2306 return util;