Messages in this thread | | | From | Vincent Guittot <> | Date | Wed, 4 Dec 2019 16:22:44 +0100 | Subject | Re: [PATCH v2 1/4] sched/uclamp: Make uclamp_util_*() helpers use and return UL values |
| |
On Tue, 3 Dec 2019 at 17:02, Valentin Schneider <valentin.schneider@arm.com> wrote: > > Vincent pointed out recently that the canonical type for utilization > values is 'unsigned long'. Internally uclamp uses 'unsigned int' values for > cache optimization, but this doesn't have to be exported to its users. > > Make the uclamp helpers that deal with utilization use and return unsigned > long values. > > Reviewed-by: Quentin Perret <qperret@google.com> > Signed-off-by: Valentin Schneider <valentin.schneider@arm.com> > --- > kernel/sched/sched.h | 20 ++++++++++---------- > 1 file changed, 10 insertions(+), 10 deletions(-) > > diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h > index 280a3c735935..f1d035e5df7e 100644 > --- a/kernel/sched/sched.h > +++ b/kernel/sched/sched.h > @@ -2303,15 +2303,15 @@ static inline void cpufreq_update_util(struct rq *rq, unsigned int flags) {} > unsigned int uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id);
Why not changing uclamp_eff_value to return unsigned long too ? The returned value represents a utilization to be compared with other utilization value
> > static __always_inline > -unsigned int uclamp_util_with(struct rq *rq, unsigned int util, > - struct task_struct *p) > +unsigned long uclamp_util_with(struct rq *rq, unsigned long util, > + struct task_struct *p) > { > - unsigned int min_util = READ_ONCE(rq->uclamp[UCLAMP_MIN].value); > - unsigned int max_util = READ_ONCE(rq->uclamp[UCLAMP_MAX].value); > + unsigned long min_util = READ_ONCE(rq->uclamp[UCLAMP_MIN].value); > + unsigned long max_util = READ_ONCE(rq->uclamp[UCLAMP_MAX].value); > > if (p) { > - min_util = max(min_util, uclamp_eff_value(p, UCLAMP_MIN)); > - max_util = max(max_util, uclamp_eff_value(p, UCLAMP_MAX)); > + min_util = max_t(unsigned long, min_util, uclamp_eff_value(p, UCLAMP_MIN));
As mentioned above, uclamp_eff_value should return an unsigned long
> + max_util = max_t(unsigned long, max_util, uclamp_eff_value(p, UCLAMP_MAX)); > } > > /* > @@ -2325,17 +2325,17 @@ unsigned int uclamp_util_with(struct rq *rq, unsigned int util, > return clamp(util, min_util, max_util); > } > > -static inline unsigned int uclamp_util(struct rq *rq, unsigned int util) > +static inline unsigned long uclamp_util(struct rq *rq, unsigned long util) > { > return uclamp_util_with(rq, util, NULL); > } > #else /* CONFIG_UCLAMP_TASK */ > -static inline unsigned int uclamp_util_with(struct rq *rq, unsigned int util, > - struct task_struct *p) > +static inline unsigned long uclamp_util_with(struct rq *rq, unsigned long util, > + struct task_struct *p) > { > return util; > } > -static inline unsigned int uclamp_util(struct rq *rq, unsigned int util) > +static inline unsigned long uclamp_util(struct rq *rq, unsigned long util) > { > return util; > } > -- > 2.24.0 >
| |