All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] sched/uclamp: Fix overzealous type replacement
@ 2019-11-15 10:39 Valentin Schneider
  2019-11-15 14:07 ` Vincent Guittot
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Valentin Schneider @ 2019-11-15 10:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, peterz, vincent.guittot, Dietmar.Eggemann, tj,
	patrick.bellasi, surenb, qperret, Qais Yousef

Some uclamp helpers had their return type changed from 'unsigned int' to
'enum uclamp_id' by commit

  0413d7f33e60 ("sched/uclamp: Always use 'enum uclamp_id' for clamp_id values")

but it happens that some do return a value in the [0, SCHED_CAPACITY_SCALE]
range, which should really be unsigned int. The affected helpers are
uclamp_none(), uclamp_rq_max_value() and uclamp_eff_value(). Fix those up.

Note that this doesn't lead to any obj diff using a relatively recent
aarch64 compiler (8.3-2019.03). The current code of e.g. uclamp_eff_value()
properly returns an 11 bit value (bits_per(1024)) and doesn't seem to do
anything funny. I'm still marking this as fixing the above commit to be on
the safe side.

Fixes: 0413d7f33e60 ("sched/uclamp: Always use 'enum uclamp_id' for clamp_id values")
Reviewed-by: Qais Yousef <qais.yousef@arm.com>
Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
---
v2 changes:
o Also fix uclamp_none() (Vincent)
o Collect reviewed-by
o Slightly reword changelog
---
 kernel/sched/core.c  | 6 +++---
 kernel/sched/sched.h | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 513a4794ff36..3ceff1c93ef1 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -810,7 +810,7 @@ static inline unsigned int uclamp_bucket_base_value(unsigned int clamp_value)
 	return UCLAMP_BUCKET_DELTA * uclamp_bucket_id(clamp_value);
 }
 
-static inline enum uclamp_id uclamp_none(enum uclamp_id clamp_id)
+static inline unsigned int uclamp_none(enum uclamp_id clamp_id)
 {
 	if (clamp_id == UCLAMP_MIN)
 		return 0;
@@ -853,7 +853,7 @@ static inline void uclamp_idle_reset(struct rq *rq, enum uclamp_id clamp_id,
 }
 
 static inline
-enum uclamp_id uclamp_rq_max_value(struct rq *rq, enum uclamp_id clamp_id,
+unsigned int uclamp_rq_max_value(struct rq *rq, enum uclamp_id clamp_id,
 				   unsigned int clamp_value)
 {
 	struct uclamp_bucket *bucket = rq->uclamp[clamp_id].bucket;
@@ -918,7 +918,7 @@ uclamp_eff_get(struct task_struct *p, enum uclamp_id clamp_id)
 	return uc_req;
 }
 
-enum uclamp_id uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id)
+unsigned int uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id)
 {
 	struct uclamp_se uc_eff;
 
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 05c282775f21..280a3c735935 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -2300,7 +2300,7 @@ static inline void cpufreq_update_util(struct rq *rq, unsigned int flags) {}
 #endif /* CONFIG_CPU_FREQ */
 
 #ifdef CONFIG_UCLAMP_TASK
-enum uclamp_id uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id);
+unsigned int uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id);
 
 static __always_inline
 unsigned int uclamp_util_with(struct rq *rq, unsigned int util,
-- 
2.22.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] sched/uclamp: Fix overzealous type replacement
  2019-11-15 10:39 [PATCH v2] sched/uclamp: Fix overzealous type replacement Valentin Schneider
@ 2019-11-15 14:07 ` Vincent Guittot
  2019-11-15 14:29   ` Valentin Schneider
  2019-11-15 17:38 ` Vincent Guittot
  2019-11-17  9:50 ` [tip: sched/core] " tip-bot2 for Valentin Schneider
  2 siblings, 1 reply; 8+ messages in thread
From: Vincent Guittot @ 2019-11-15 14:07 UTC (permalink / raw)
  To: Valentin Schneider
  Cc: linux-kernel, Ingo Molnar, Peter Zijlstra, Dietmar Eggemann,
	Tejun Heo, Patrick Bellasi, Suren Baghdasaryan, Quentin Perret,
	Qais Yousef

On Fri, 15 Nov 2019 at 11:39, Valentin Schneider
<valentin.schneider@arm.com> wrote:
>
> Some uclamp helpers had their return type changed from 'unsigned int' to
> 'enum uclamp_id' by commit
>
>   0413d7f33e60 ("sched/uclamp: Always use 'enum uclamp_id' for clamp_id values")
>
> but it happens that some do return a value in the [0, SCHED_CAPACITY_SCALE]
> range, which should really be unsigned int. The affected helpers are
> uclamp_none(), uclamp_rq_max_value() and uclamp_eff_value(). Fix those up.
>
> Note that this doesn't lead to any obj diff using a relatively recent
> aarch64 compiler (8.3-2019.03). The current code of e.g. uclamp_eff_value()
> properly returns an 11 bit value (bits_per(1024)) and doesn't seem to do
> anything funny. I'm still marking this as fixing the above commit to be on
> the safe side.
>
> Fixes: 0413d7f33e60 ("sched/uclamp: Always use 'enum uclamp_id' for clamp_id values")
> Reviewed-by: Qais Yousef <qais.yousef@arm.com>
> Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
> ---
> v2 changes:
> o Also fix uclamp_none() (Vincent)
> o Collect reviewed-by
> o Slightly reword changelog
> ---
>  kernel/sched/core.c  | 6 +++---
>  kernel/sched/sched.h | 2 +-
>  2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index 513a4794ff36..3ceff1c93ef1 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -810,7 +810,7 @@ static inline unsigned int uclamp_bucket_base_value(unsigned int clamp_value)
>         return UCLAMP_BUCKET_DELTA * uclamp_bucket_id(clamp_value);
>  }
>
> -static inline enum uclamp_id uclamp_none(enum uclamp_id clamp_id)
> +static inline unsigned int uclamp_none(enum uclamp_id clamp_id)

Out of curiosity why uclamp decided to use unsigned int to manipulate
utilization instead of unsigned long which is the type of util_avg ?

>  {
>         if (clamp_id == UCLAMP_MIN)
>                 return 0;
> @@ -853,7 +853,7 @@ static inline void uclamp_idle_reset(struct rq *rq, enum uclamp_id clamp_id,
>  }
>
>  static inline
> -enum uclamp_id uclamp_rq_max_value(struct rq *rq, enum uclamp_id clamp_id,
> +unsigned int uclamp_rq_max_value(struct rq *rq, enum uclamp_id clamp_id,
>                                    unsigned int clamp_value)
>  {
>         struct uclamp_bucket *bucket = rq->uclamp[clamp_id].bucket;
> @@ -918,7 +918,7 @@ uclamp_eff_get(struct task_struct *p, enum uclamp_id clamp_id)
>         return uc_req;
>  }
>
> -enum uclamp_id uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id)
> +unsigned int uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id)
>  {
>         struct uclamp_se uc_eff;
>
> diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
> index 05c282775f21..280a3c735935 100644
> --- a/kernel/sched/sched.h
> +++ b/kernel/sched/sched.h
> @@ -2300,7 +2300,7 @@ static inline void cpufreq_update_util(struct rq *rq, unsigned int flags) {}
>  #endif /* CONFIG_CPU_FREQ */
>
>  #ifdef CONFIG_UCLAMP_TASK
> -enum uclamp_id uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id);
> +unsigned int uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id);
>
>  static __always_inline
>  unsigned int uclamp_util_with(struct rq *rq, unsigned int util,
> --
> 2.22.0
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] sched/uclamp: Fix overzealous type replacement
  2019-11-15 14:07 ` Vincent Guittot
@ 2019-11-15 14:29   ` Valentin Schneider
  2019-11-15 17:10     ` Valentin Schneider
  0 siblings, 1 reply; 8+ messages in thread
From: Valentin Schneider @ 2019-11-15 14:29 UTC (permalink / raw)
  To: Vincent Guittot
  Cc: linux-kernel, Ingo Molnar, Peter Zijlstra, Dietmar Eggemann,
	Tejun Heo, Patrick Bellasi, Suren Baghdasaryan, Quentin Perret,
	Qais Yousef

On 15/11/2019 14:07, Vincent Guittot wrote:
>> -static inline enum uclamp_id uclamp_none(enum uclamp_id clamp_id)
>> +static inline unsigned int uclamp_none(enum uclamp_id clamp_id)
> 
> Out of curiosity why uclamp decided to use unsigned int to manipulate
> utilization instead of unsigned long which is the type of util_avg ?
> 

I didn't stare at the discussion much, but I think it stems from the
design choices behind struct uclamp_se: everything is crammed in an unsigned
int bitfield. Let me see if I can find some relevant mails.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] sched/uclamp: Fix overzealous type replacement
  2019-11-15 14:29   ` Valentin Schneider
@ 2019-11-15 17:10     ` Valentin Schneider
  2019-11-15 17:34       ` Vincent Guittot
  0 siblings, 1 reply; 8+ messages in thread
From: Valentin Schneider @ 2019-11-15 17:10 UTC (permalink / raw)
  To: Vincent Guittot
  Cc: linux-kernel, Ingo Molnar, Peter Zijlstra, Dietmar Eggemann,
	Tejun Heo, Patrick Bellasi, Suren Baghdasaryan, Quentin Perret,
	Qais Yousef

On 15/11/2019 14:29, Valentin Schneider wrote:
> On 15/11/2019 14:07, Vincent Guittot wrote:
>>> -static inline enum uclamp_id uclamp_none(enum uclamp_id clamp_id)
>>> +static inline unsigned int uclamp_none(enum uclamp_id clamp_id)
>>
>> Out of curiosity why uclamp decided to use unsigned int to manipulate
>> utilization instead of unsigned long which is the type of util_avg ?
>>
> 
> I didn't stare at the discussion much, but I think it stems from the
> design choices behind struct uclamp_se: everything is crammed in an unsigned
> int bitfield. Let me see if I can find some relevant mails.
> 

So I think a relevant mail is:

https://lore.kernel.org/lkml/20180912174236.GB24106@hirez.programming.kicks-ass.net/

Other than that, the uclamp_se.value field was 'int' in v1 and has been
'unsigned int' for all following versions. uclamp_bucket.value is a bitfield
of an 'unsigned long' just because we want more headroom for the tasks count,
AFAICT.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] sched/uclamp: Fix overzealous type replacement
  2019-11-15 17:10     ` Valentin Schneider
@ 2019-11-15 17:34       ` Vincent Guittot
  2019-11-15 20:21         ` Peter Zijlstra
  0 siblings, 1 reply; 8+ messages in thread
From: Vincent Guittot @ 2019-11-15 17:34 UTC (permalink / raw)
  To: Valentin Schneider
  Cc: linux-kernel, Ingo Molnar, Peter Zijlstra, Dietmar Eggemann,
	Tejun Heo, Patrick Bellasi, Suren Baghdasaryan, Quentin Perret,
	Qais Yousef

On Fri, 15 Nov 2019 at 18:10, Valentin Schneider
<valentin.schneider@arm.com> wrote:
>
> On 15/11/2019 14:29, Valentin Schneider wrote:
> > On 15/11/2019 14:07, Vincent Guittot wrote:
> >>> -static inline enum uclamp_id uclamp_none(enum uclamp_id clamp_id)
> >>> +static inline unsigned int uclamp_none(enum uclamp_id clamp_id)
> >>
> >> Out of curiosity why uclamp decided to use unsigned int to manipulate
> >> utilization instead of unsigned long which is the type of util_avg ?
> >>
> >
> > I didn't stare at the discussion much, but I think it stems from the
> > design choices behind struct uclamp_se: everything is crammed in an unsigned
> > int bitfield. Let me see if I can find some relevant mails.
> >
>
> So I think a relevant mail is:
>
> https://lore.kernel.org/lkml/20180912174236.GB24106@hirez.programming.kicks-ass.net/
>
> Other than that, the uclamp_se.value field was 'int' in v1 and has been
> 'unsigned int' for all following versions. uclamp_bucket.value is a bitfield
> of an 'unsigned long' just because we want more headroom for the tasks count,
> AFAICT.

Thanks for the pointer and deep diving in the email threads

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] sched/uclamp: Fix overzealous type replacement
  2019-11-15 10:39 [PATCH v2] sched/uclamp: Fix overzealous type replacement Valentin Schneider
  2019-11-15 14:07 ` Vincent Guittot
@ 2019-11-15 17:38 ` Vincent Guittot
  2019-11-17  9:50 ` [tip: sched/core] " tip-bot2 for Valentin Schneider
  2 siblings, 0 replies; 8+ messages in thread
From: Vincent Guittot @ 2019-11-15 17:38 UTC (permalink / raw)
  To: Valentin Schneider
  Cc: linux-kernel, Ingo Molnar, Peter Zijlstra, Dietmar Eggemann,
	Tejun Heo, Patrick Bellasi, Suren Baghdasaryan, Quentin Perret,
	Qais Yousef

On Fri, 15 Nov 2019 at 11:39, Valentin Schneider
<valentin.schneider@arm.com> wrote:
>
> Some uclamp helpers had their return type changed from 'unsigned int' to
> 'enum uclamp_id' by commit
>
>   0413d7f33e60 ("sched/uclamp: Always use 'enum uclamp_id' for clamp_id values")
>
> but it happens that some do return a value in the [0, SCHED_CAPACITY_SCALE]
> range, which should really be unsigned int. The affected helpers are
> uclamp_none(), uclamp_rq_max_value() and uclamp_eff_value(). Fix those up.
>
> Note that this doesn't lead to any obj diff using a relatively recent
> aarch64 compiler (8.3-2019.03). The current code of e.g. uclamp_eff_value()
> properly returns an 11 bit value (bits_per(1024)) and doesn't seem to do
> anything funny. I'm still marking this as fixing the above commit to be on
> the safe side.
>
> Fixes: 0413d7f33e60 ("sched/uclamp: Always use 'enum uclamp_id' for clamp_id values")
> Reviewed-by: Qais Yousef <qais.yousef@arm.com>
> Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>

Acked-by: Vincent Guittot <vincent.guittot@linaro.org>

> ---
> v2 changes:
> o Also fix uclamp_none() (Vincent)
> o Collect reviewed-by
> o Slightly reword changelog
> ---
>  kernel/sched/core.c  | 6 +++---
>  kernel/sched/sched.h | 2 +-
>  2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index 513a4794ff36..3ceff1c93ef1 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -810,7 +810,7 @@ static inline unsigned int uclamp_bucket_base_value(unsigned int clamp_value)
>         return UCLAMP_BUCKET_DELTA * uclamp_bucket_id(clamp_value);
>  }
>
> -static inline enum uclamp_id uclamp_none(enum uclamp_id clamp_id)
> +static inline unsigned int uclamp_none(enum uclamp_id clamp_id)
>  {
>         if (clamp_id == UCLAMP_MIN)
>                 return 0;
> @@ -853,7 +853,7 @@ static inline void uclamp_idle_reset(struct rq *rq, enum uclamp_id clamp_id,
>  }
>
>  static inline
> -enum uclamp_id uclamp_rq_max_value(struct rq *rq, enum uclamp_id clamp_id,
> +unsigned int uclamp_rq_max_value(struct rq *rq, enum uclamp_id clamp_id,
>                                    unsigned int clamp_value)
>  {
>         struct uclamp_bucket *bucket = rq->uclamp[clamp_id].bucket;
> @@ -918,7 +918,7 @@ uclamp_eff_get(struct task_struct *p, enum uclamp_id clamp_id)
>         return uc_req;
>  }
>
> -enum uclamp_id uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id)
> +unsigned int uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id)
>  {
>         struct uclamp_se uc_eff;
>
> diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
> index 05c282775f21..280a3c735935 100644
> --- a/kernel/sched/sched.h
> +++ b/kernel/sched/sched.h
> @@ -2300,7 +2300,7 @@ static inline void cpufreq_update_util(struct rq *rq, unsigned int flags) {}
>  #endif /* CONFIG_CPU_FREQ */
>
>  #ifdef CONFIG_UCLAMP_TASK
> -enum uclamp_id uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id);
> +unsigned int uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id);
>
>  static __always_inline
>  unsigned int uclamp_util_with(struct rq *rq, unsigned int util,
> --
> 2.22.0
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2] sched/uclamp: Fix overzealous type replacement
  2019-11-15 17:34       ` Vincent Guittot
@ 2019-11-15 20:21         ` Peter Zijlstra
  0 siblings, 0 replies; 8+ messages in thread
From: Peter Zijlstra @ 2019-11-15 20:21 UTC (permalink / raw)
  To: Vincent Guittot
  Cc: Valentin Schneider, linux-kernel, Ingo Molnar, Dietmar Eggemann,
	Tejun Heo, Patrick Bellasi, Suren Baghdasaryan, Quentin Perret,
	Qais Yousef

On Fri, Nov 15, 2019 at 06:34:19PM +0100, Vincent Guittot wrote:
> On Fri, 15 Nov 2019 at 18:10, Valentin Schneider
> <valentin.schneider@arm.com> wrote:
> >
> > On 15/11/2019 14:29, Valentin Schneider wrote:
> > > On 15/11/2019 14:07, Vincent Guittot wrote:
> > >>> -static inline enum uclamp_id uclamp_none(enum uclamp_id clamp_id)
> > >>> +static inline unsigned int uclamp_none(enum uclamp_id clamp_id)
> > >>
> > >> Out of curiosity why uclamp decided to use unsigned int to manipulate
> > >> utilization instead of unsigned long which is the type of util_avg ?
> > >>
> > >
> > > I didn't stare at the discussion much, but I think it stems from the
> > > design choices behind struct uclamp_se: everything is crammed in an unsigned
> > > int bitfield. Let me see if I can find some relevant mails.
> > >
> >
> > So I think a relevant mail is:
> >
> > https://lore.kernel.org/lkml/20180912174236.GB24106@hirez.programming.kicks-ass.net/
> >
> > Other than that, the uclamp_se.value field was 'int' in v1 and has been
> > 'unsigned int' for all following versions. uclamp_bucket.value is a bitfield
> > of an 'unsigned long' just because we want more headroom for the tasks count,
> > AFAICT.
> 
> Thanks for the pointer and deep diving in the email threads

It was all in an effort to minimize the number of cachelines touched to
maintain this data.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [tip: sched/core] sched/uclamp: Fix overzealous type replacement
  2019-11-15 10:39 [PATCH v2] sched/uclamp: Fix overzealous type replacement Valentin Schneider
  2019-11-15 14:07 ` Vincent Guittot
  2019-11-15 17:38 ` Vincent Guittot
@ 2019-11-17  9:50 ` tip-bot2 for Valentin Schneider
  2 siblings, 0 replies; 8+ messages in thread
From: tip-bot2 for Valentin Schneider @ 2019-11-17  9:50 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Valentin Schneider, Qais Yousef, Vincent Guittot,
	Dietmar.Eggemann, Linus Torvalds, Peter Zijlstra,
	Thomas Gleixner, patrick.bellasi, qperret, surenb, tj,
	Ingo Molnar, Borislav Petkov, linux-kernel

The following commit has been merged into the sched/core branch of tip:

Commit-ID:     7763baace1b738d65efa46d68326c9406311c6bf
Gitweb:        https://git.kernel.org/tip/7763baace1b738d65efa46d68326c9406311c6bf
Author:        Valentin Schneider <valentin.schneider@arm.com>
AuthorDate:    Fri, 15 Nov 2019 10:39:08 
Committer:     Ingo Molnar <mingo@kernel.org>
CommitterDate: Sun, 17 Nov 2019 10:46:05 +01:00

sched/uclamp: Fix overzealous type replacement

Some uclamp helpers had their return type changed from 'unsigned int' to
'enum uclamp_id' by commit

  0413d7f33e60 ("sched/uclamp: Always use 'enum uclamp_id' for clamp_id values")

but it happens that some do return a value in the [0, SCHED_CAPACITY_SCALE]
range, which should really be unsigned int. The affected helpers are
uclamp_none(), uclamp_rq_max_value() and uclamp_eff_value(). Fix those up.

Note that this doesn't lead to any obj diff using a relatively recent
aarch64 compiler (8.3-2019.03). The current code of e.g. uclamp_eff_value()
properly returns an 11 bit value (bits_per(1024)) and doesn't seem to do
anything funny. I'm still marking this as fixing the above commit to be on
the safe side.

Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
Reviewed-by: Qais Yousef <qais.yousef@arm.com>
Acked-by: Vincent Guittot <vincent.guittot@linaro.org>
Cc: Dietmar.Eggemann@arm.com
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: patrick.bellasi@matbug.net
Cc: qperret@google.com
Cc: surenb@google.com
Cc: tj@kernel.org
Fixes: 0413d7f33e60 ("sched/uclamp: Always use 'enum uclamp_id' for clamp_id values")
Link: https://lkml.kernel.org/r/20191115103908.27610-1-valentin.schneider@arm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 kernel/sched/core.c  | 6 +++---
 kernel/sched/sched.h | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 513a479..3ceff1c 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -810,7 +810,7 @@ static inline unsigned int uclamp_bucket_base_value(unsigned int clamp_value)
 	return UCLAMP_BUCKET_DELTA * uclamp_bucket_id(clamp_value);
 }
 
-static inline enum uclamp_id uclamp_none(enum uclamp_id clamp_id)
+static inline unsigned int uclamp_none(enum uclamp_id clamp_id)
 {
 	if (clamp_id == UCLAMP_MIN)
 		return 0;
@@ -853,7 +853,7 @@ static inline void uclamp_idle_reset(struct rq *rq, enum uclamp_id clamp_id,
 }
 
 static inline
-enum uclamp_id uclamp_rq_max_value(struct rq *rq, enum uclamp_id clamp_id,
+unsigned int uclamp_rq_max_value(struct rq *rq, enum uclamp_id clamp_id,
 				   unsigned int clamp_value)
 {
 	struct uclamp_bucket *bucket = rq->uclamp[clamp_id].bucket;
@@ -918,7 +918,7 @@ uclamp_eff_get(struct task_struct *p, enum uclamp_id clamp_id)
 	return uc_req;
 }
 
-enum uclamp_id uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id)
+unsigned int uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id)
 {
 	struct uclamp_se uc_eff;
 
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 05c2827..280a3c7 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -2300,7 +2300,7 @@ static inline void cpufreq_update_util(struct rq *rq, unsigned int flags) {}
 #endif /* CONFIG_CPU_FREQ */
 
 #ifdef CONFIG_UCLAMP_TASK
-enum uclamp_id uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id);
+unsigned int uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id);
 
 static __always_inline
 unsigned int uclamp_util_with(struct rq *rq, unsigned int util,

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2019-11-17  9:50 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-15 10:39 [PATCH v2] sched/uclamp: Fix overzealous type replacement Valentin Schneider
2019-11-15 14:07 ` Vincent Guittot
2019-11-15 14:29   ` Valentin Schneider
2019-11-15 17:10     ` Valentin Schneider
2019-11-15 17:34       ` Vincent Guittot
2019-11-15 20:21         ` Peter Zijlstra
2019-11-15 17:38 ` Vincent Guittot
2019-11-17  9:50 ` [tip: sched/core] " tip-bot2 for Valentin Schneider

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.