public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [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