[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241009130530.GO17263@noisy.programming.kicks-ass.net>
Date: Wed, 9 Oct 2024 15:05:30 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: Zhongqiu Han <quic_zhonhan@...cinc.com>
Cc: mingo@...hat.com, juri.lelli@...hat.com, vincent.guittot@...aro.org,
dietmar.eggemann@....com, rostedt@...dmis.org, bsegall@...gle.com,
mgorman@...e.de, vschneid@...hat.com, linux-kernel@...r.kernel.org
Subject: Re: [PATCH RESEND] sched: idle: Optimize the generic idle loop by
removing needless memory barrier
On Wed, Oct 09, 2024 at 05:37:45PM +0800, Zhongqiu Han wrote:
> The memory barrier rmb() in generic idle loop do_idle() function is not
> needed, it doesn't order any load instruction, just remove it as needless
> rmb() can cause performance impact.
>
> The rmb() was introduced by the tglx/history.git commit f2f1b44c75c4
> ("[PATCH] Remove RCU abuse in cpu_idle()") to order the loads between
> cpu_idle_map and pm_idle. It pairs with wmb() in function cpu_idle_wait().
>
> And then with the removal of cpu_idle_state in function cpu_idle() and
> wmb() in function cpu_idle_wait() in commit 783e391b7b5b ("x86: Simplify
> cpu_idle_wait"), rmb() no longer has a reason to exist.
>
> After that, commit d16699123434 ("idle: Implement generic idle function")
> implemented a generic idle function cpu_idle_loop() which resembles the
> functionality found in arch/. And it retained the rmb() in generic idle
> loop in file kernel/cpu/idle.c.
>
> And at last, commit cf37b6b48428 ("sched/idle: Move cpu/idle.c to
> sched/idle.c") moved cpu/idle.c to sched/idle.c. And commit c1de45ca831a
> ("sched/idle: Add support for tasks that inject idle") renamed function
> cpu_idle_loop() to do_idle().
>
> Signed-off-by: Zhongqiu Han <quic_zhonhan@...cinc.com>
> History Tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
Thanks!
Powered by blists - more mailing lists