Re: [PATCH v4 01/13] bitops: Change parity8() to parity_odd() with u64 input and bool return type

From: Guenter Roeck
Date: Wed Apr 09 2025 - 14:41:17 EST


On 4/9/25 11:25, Kuan-Wei Chiu wrote:
On Wed, Apr 09, 2025 at 12:59:14PM -0400, Yury Norov wrote:
On Wed, Apr 09, 2025 at 11:43:44PM +0800, Kuan-Wei Chiu wrote:
Redesign the parity8() helper as parity_odd(), changing its input type
from u8 to u64 to support broader use cases and its return type from
int to bool to clearly reflect the function's binary output. The
function now returns true for odd parity and false for even parity,
making its behavior more intuitive based on the name.

Also mark the function with __attribute_const__ to enable better
compiler optimization, as the result depends solely on its input and
has no side effects.

While more efficient implementations may exist, further optimization is
postponed until a use case in performance-critical paths arises.

Co-developed-by: Yu-Chun Lin <eleanor15x@xxxxxxxxx>
Signed-off-by: Yu-Chun Lin <eleanor15x@xxxxxxxxx>
Signed-off-by: Kuan-Wei Chiu <visitorckw@xxxxxxxxx>
---
arch/x86/kernel/bootflag.c | 4 ++--
drivers/hwmon/spd5118.c | 2 +-
drivers/i3c/master/dw-i3c-master.c | 2 +-
drivers/i3c/master/i3c-master-cdns.c | 2 +-
drivers/i3c/master/mipi-i3c-hci/dat_v1.c | 2 +-
include/linux/bitops.h | 19 ++++++++++++-------
6 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/arch/x86/kernel/bootflag.c b/arch/x86/kernel/bootflag.c
index 73274d76ce16..86aae4b2bfd5 100644
--- a/arch/x86/kernel/bootflag.c
+++ b/arch/x86/kernel/bootflag.c
@@ -26,7 +26,7 @@ static void __init sbf_write(u8 v)
unsigned long flags;
if (sbf_port != -1) {
- if (!parity8(v))
+ if (!parity_odd(v))

What is the benefit of this change all over the place instead of
adding parity_odd() as new API and keeping the old one (just letting
it call the new API) ?

A simple

static inline int parity8(u8 val)
{
return parity_odd(val);
}

would have done the trick and be much less invasive.

Guenter