* [PATCH v2] sched/core: Fix reset-on-fork from RT with uclamp
@ 2020-04-16 8:59 Quentin Perret
2020-04-16 11:03 ` Dietmar Eggemann
2020-04-22 21:20 ` [tip: sched/urgent] " tip-bot2 for Quentin Perret
0 siblings, 2 replies; 4+ messages in thread
From: Quentin Perret @ 2020-04-16 8:59 UTC (permalink / raw)
To: mingo, peterz, juri.lelli, vincent.guittot
Cc: dietmar.eggemann, rostedt, bsegall, mgorman, ctheegal, dianders,
patrick.bellasi, valentin.schneider, qais.yousef, linux-kernel,
qperret, kernel-team
uclamp_fork() resets the uclamp values to their default when the
reset-on-fork flag is set. It also checks whether the task has a RT
policy, and sets its uclamp.min to 1024 accordingly. However, during
reset-on-fork, the task's policy is lowered to SCHED_NORMAL right after,
hence leading to an erroneous uclamp.min setting for the new task if it
was forked from RT.
Fix this by removing the unnecessary check on rt_task() in
uclamp_fork() as this doesn't make sense if the reset-on-fork flag is
set.
Fixes: 1a00d999971c ("sched/uclamp: Set default clamps for RT tasks")
Reported-by: Chitti Babu Theegala <ctheegal@codeaurora.org>
Reviewed-by: Patrick Bellasi <patrick.bellasi@matbug.net>
Signed-off-by: Quentin Perret <qperret@google.com>
---
Changes in v2:
- Added missing 'Fixes:' tag (Patrick)
- Removed unnecessary local variable (Doug, Patrick)
---
kernel/sched/core.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 3a61a3b8eaa9..9a2fbf98fd6f 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -1232,13 +1232,8 @@ static void uclamp_fork(struct task_struct *p)
return;
for_each_clamp_id(clamp_id) {
- 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))
- clamp_value = uclamp_none(UCLAMP_MAX);
-
- uclamp_se_set(&p->uclamp_req[clamp_id], clamp_value, false);
+ uclamp_se_set(&p->uclamp_req[clamp_id],
+ uclamp_none(clamp_id), false);
}
}
--
2.26.1.301.g55bc3eb7cb9-goog
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2] sched/core: Fix reset-on-fork from RT with uclamp
2020-04-16 8:59 [PATCH v2] sched/core: Fix reset-on-fork from RT with uclamp Quentin Perret
@ 2020-04-16 11:03 ` Dietmar Eggemann
2020-04-16 11:41 ` Peter Zijlstra
2020-04-22 21:20 ` [tip: sched/urgent] " tip-bot2 for Quentin Perret
1 sibling, 1 reply; 4+ messages in thread
From: Dietmar Eggemann @ 2020-04-16 11:03 UTC (permalink / raw)
To: Quentin Perret, mingo, peterz, juri.lelli, vincent.guittot
Cc: rostedt, bsegall, mgorman, ctheegal, dianders, patrick.bellasi,
valentin.schneider, qais.yousef, linux-kernel, kernel-team
On 16.04.20 10:59, Quentin Perret wrote:
> uclamp_fork() resets the uclamp values to their default when the
> reset-on-fork flag is set. It also checks whether the task has a RT
> policy, and sets its uclamp.min to 1024 accordingly. However, during
> reset-on-fork, the task's policy is lowered to SCHED_NORMAL right after,
> hence leading to an erroneous uclamp.min setting for the new task if it
> was forked from RT.
>
> Fix this by removing the unnecessary check on rt_task() in
> uclamp_fork() as this doesn't make sense if the reset-on-fork flag is
> set.
>
> Fixes: 1a00d999971c ("sched/uclamp: Set default clamps for RT tasks")
> Reported-by: Chitti Babu Theegala <ctheegal@codeaurora.org>
> Reviewed-by: Patrick Bellasi <patrick.bellasi@matbug.net>
> Signed-off-by: Quentin Perret <qperret@google.com>
> ---
> Changes in v2:
> - Added missing 'Fixes:' tag (Patrick)
> - Removed unnecessary local variable (Doug, Patrick)
> ---
> kernel/sched/core.c | 9 ++-------
> 1 file changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index 3a61a3b8eaa9..9a2fbf98fd6f 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -1232,13 +1232,8 @@ static void uclamp_fork(struct task_struct *p)
> return;
>
> for_each_clamp_id(clamp_id) {
> - 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))
> - clamp_value = uclamp_none(UCLAMP_MAX);
> -
> - uclamp_se_set(&p->uclamp_req[clamp_id], clamp_value, false);
> + uclamp_se_set(&p->uclamp_req[clamp_id],
> + uclamp_none(clamp_id), false);
> }
> }
LGTM.
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] sched/core: Fix reset-on-fork from RT with uclamp
2020-04-16 11:03 ` Dietmar Eggemann
@ 2020-04-16 11:41 ` Peter Zijlstra
0 siblings, 0 replies; 4+ messages in thread
From: Peter Zijlstra @ 2020-04-16 11:41 UTC (permalink / raw)
To: Dietmar Eggemann
Cc: Quentin Perret, mingo, juri.lelli, vincent.guittot, rostedt,
bsegall, mgorman, ctheegal, dianders, patrick.bellasi,
valentin.schneider, qais.yousef, linux-kernel, kernel-team
On Thu, Apr 16, 2020 at 01:03:16PM +0200, Dietmar Eggemann wrote:
> On 16.04.20 10:59, Quentin Perret wrote:
> > uclamp_fork() resets the uclamp values to their default when the
> > reset-on-fork flag is set. It also checks whether the task has a RT
> > policy, and sets its uclamp.min to 1024 accordingly. However, during
> > reset-on-fork, the task's policy is lowered to SCHED_NORMAL right after,
> > hence leading to an erroneous uclamp.min setting for the new task if it
> > was forked from RT.
> >
> > Fix this by removing the unnecessary check on rt_task() in
> > uclamp_fork() as this doesn't make sense if the reset-on-fork flag is
> > set.
> >
> > Fixes: 1a00d999971c ("sched/uclamp: Set default clamps for RT tasks")
> > Reported-by: Chitti Babu Theegala <ctheegal@codeaurora.org>
> > Reviewed-by: Patrick Bellasi <patrick.bellasi@matbug.net>
> > Signed-off-by: Quentin Perret <qperret@google.com>
> > ---
> > Changes in v2:
> > - Added missing 'Fixes:' tag (Patrick)
> > - Removed unnecessary local variable (Doug, Patrick)
> > ---
> > kernel/sched/core.c | 9 ++-------
> > 1 file changed, 2 insertions(+), 7 deletions(-)
> >
> > diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> > index 3a61a3b8eaa9..9a2fbf98fd6f 100644
> > --- a/kernel/sched/core.c
> > +++ b/kernel/sched/core.c
> > @@ -1232,13 +1232,8 @@ static void uclamp_fork(struct task_struct *p)
> > return;
> >
> > for_each_clamp_id(clamp_id) {
> > - 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))
> > - clamp_value = uclamp_none(UCLAMP_MAX);
> > -
> > - uclamp_se_set(&p->uclamp_req[clamp_id], clamp_value, false);
> > + uclamp_se_set(&p->uclamp_req[clamp_id],
> > + uclamp_none(clamp_id), false);
> > }
> > }
>
> LGTM.
>
> Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Thanks guys!
^ permalink raw reply [flat|nested] 4+ messages in thread
* [tip: sched/urgent] sched/core: Fix reset-on-fork from RT with uclamp
2020-04-16 8:59 [PATCH v2] sched/core: Fix reset-on-fork from RT with uclamp Quentin Perret
2020-04-16 11:03 ` Dietmar Eggemann
@ 2020-04-22 21:20 ` tip-bot2 for Quentin Perret
1 sibling, 0 replies; 4+ messages in thread
From: tip-bot2 for Quentin Perret @ 2020-04-22 21:20 UTC (permalink / raw)
To: linux-tip-commits
Cc: Chitti Babu Theegala, Quentin Perret, Peter Zijlstra (Intel),
Patrick Bellasi, Dietmar Eggemann, x86, LKML
The following commit has been merged into the sched/urgent branch of tip:
Commit-ID: eaf5a92ebde5bca3bb2565616115bd6d579486cd
Gitweb: https://git.kernel.org/tip/eaf5a92ebde5bca3bb2565616115bd6d579486cd
Author: Quentin Perret <qperret@google.com>
AuthorDate: Thu, 16 Apr 2020 09:59:56 +01:00
Committer: Peter Zijlstra <peterz@infradead.org>
CommitterDate: Wed, 22 Apr 2020 23:10:13 +02:00
sched/core: Fix reset-on-fork from RT with uclamp
uclamp_fork() resets the uclamp values to their default when the
reset-on-fork flag is set. It also checks whether the task has a RT
policy, and sets its uclamp.min to 1024 accordingly. However, during
reset-on-fork, the task's policy is lowered to SCHED_NORMAL right after,
hence leading to an erroneous uclamp.min setting for the new task if it
was forked from RT.
Fix this by removing the unnecessary check on rt_task() in
uclamp_fork() as this doesn't make sense if the reset-on-fork flag is
set.
Fixes: 1a00d999971c ("sched/uclamp: Set default clamps for RT tasks")
Reported-by: Chitti Babu Theegala <ctheegal@codeaurora.org>
Signed-off-by: Quentin Perret <qperret@google.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Patrick Bellasi <patrick.bellasi@matbug.net>
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Link: https://lkml.kernel.org/r/20200416085956.217587-1-qperret@google.com
---
kernel/sched/core.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 3a61a3b..9a2fbf9 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -1232,13 +1232,8 @@ static void uclamp_fork(struct task_struct *p)
return;
for_each_clamp_id(clamp_id) {
- 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))
- clamp_value = uclamp_none(UCLAMP_MAX);
-
- uclamp_se_set(&p->uclamp_req[clamp_id], clamp_value, false);
+ uclamp_se_set(&p->uclamp_req[clamp_id],
+ uclamp_none(clamp_id), false);
}
}
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-04-22 21:20 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-16 8:59 [PATCH v2] sched/core: Fix reset-on-fork from RT with uclamp Quentin Perret
2020-04-16 11:03 ` Dietmar Eggemann
2020-04-16 11:41 ` Peter Zijlstra
2020-04-22 21:20 ` [tip: sched/urgent] " tip-bot2 for Quentin Perret
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.