* [RFC] remove preempt in do_sched_yield
@ 2023-08-23 10:07 Wang You
2023-08-29 18:42 ` Steven Rostedt
0 siblings, 1 reply; 2+ messages in thread
From: Wang You @ 2023-08-23 10:07 UTC (permalink / raw)
To: mingo, peterz, juri.lelli, vincent.guittot, dietmar.eggemann,
rostedt, bsegall, mgorman, bristot, vschneid
Cc: linux-kernel, Wang You
I see do_sched_yield's irq disable cover preempt disable. In this
function, I think preempt op may not work, or it may have some
special effect ? Thanks.
Signed-off-by: Wang You <wangyoua@uniontech.com>
---
kernel/sched/core.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index a68d1276bab0..b255e54c1d38 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -8487,10 +8487,7 @@ static void do_sched_yield(void)
schedstat_inc(rq->yld_count);
current->sched_class->yield_task(rq);
-
- preempt_disable();
rq_unlock_irq(rq, &rf);
- sched_preempt_enable_no_resched();
schedule();
}
--
2.20.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [RFC] remove preempt in do_sched_yield
2023-08-23 10:07 [RFC] remove preempt in do_sched_yield Wang You
@ 2023-08-29 18:42 ` Steven Rostedt
0 siblings, 0 replies; 2+ messages in thread
From: Steven Rostedt @ 2023-08-29 18:42 UTC (permalink / raw)
To: Wang You
Cc: mingo, peterz, juri.lelli, vincent.guittot, dietmar.eggemann,
bsegall, mgorman, bristot, vschneid, linux-kernel
On Wed, 23 Aug 2023 18:07:05 +0800
Wang You <wangyoua@uniontech.com> wrote:
> I see do_sched_yield's irq disable cover preempt disable. In this
> function, I think preempt op may not work, or it may have some
> special effect ? Thanks.
Why would it not work?
>
> Signed-off-by: Wang You <wangyoua@uniontech.com>
> ---
> kernel/sched/core.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index a68d1276bab0..b255e54c1d38 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -8487,10 +8487,7 @@ static void do_sched_yield(void)
>
> schedstat_inc(rq->yld_count);
> current->sched_class->yield_task(rq);
> -
> - preempt_disable();
> rq_unlock_irq(rq, &rf);
> - sched_preempt_enable_no_resched();
The point of this is if an interrupt triggers here and NEED_RESCHED is
set, then it will call schedule and possibly schedule out the task.
When it gets scheduled back in, the first thing it will do is to call
schedule again. The above code you deleted removes the spurious
schedule.
-- Steve
>
> schedule();
> }
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-08-29 18:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-23 10:07 [RFC] remove preempt in do_sched_yield Wang You
2023-08-29 18:42 ` Steven Rostedt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox