[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20250709162053.0389d4068832d98bd11daa00@linux-foundation.org>
Date: Wed, 9 Jul 2025 16:20:53 -0700
From: Andrew Morton <akpm@...ux-foundation.org>
To: Kuan-Wei Chiu <visitorckw@...il.com>
Cc: paul.walmsley@...ive.com, palmer@...belt.com, aou@...s.berkeley.edu,
alex@...ti.fr, linux-riscv@...ts.infradead.org,
linux-kernel@...r.kernel.org, jserv@...s.ncku.edu.tw, Yu-Chun Lin
<eleanor15x@...il.com>
Subject: Re: [PATCH v3 0/3] Optimize GCD performance on RISC-V by selecting
implementation at runtime
On Fri, 6 Jun 2025 21:47:55 +0800 Kuan-Wei Chiu <visitorckw@...il.com> wrote:
> The current implementation of gcd() selects between the binary GCD and
> the odd-even GCD algorithm at compile time, depending on whether
> CONFIG_CPU_NO_EFFICIENT_FFS is set. On platforms like RISC-V, however,
> this compile-time decision can be misleading: even when the compiler
> emits ctz instructions based on the assumption that they are efficient
> (as is the case when CONFIG_RISCV_ISA_ZBB is enabled), the actual
> hardware may lack support for the Zbb extension. In such cases, ffs()
> falls back to a software implementation at runtime, making the binary
> GCD algorithm significantly slower than the odd-even variant.
>
> To address this, we introduce a static key to allow runtime selection
> between the binary and odd-even GCD implementations. On RISC-V, the
> kernel now checks for Zbb support during boot. If Zbb is unavailable,
> the static key is disabled so that gcd() consistently uses the more
> efficient odd-even algorithm in that scenario. Additionally, to further
> reduce code size, we select CONFIG_CPU_NO_EFFICIENT_FFS automatically
> when CONFIG_RISCV_ISA_ZBB is not enabled, avoiding compilation of the
> unused binary GCD implementation entirely on systems where it would
> never be executed.
>
> This series ensures that the most efficient GCD algorithm is used in
> practice and avoids compiling unnecessary code based on hardware
> capabilities and kernel configuration.
I removed the v2 series from mm.git and added this, thanks.
v2 was in -next for a month, no issues of which I am aware.
Powered by blists - more mailing lists