From: Yury Norov <yury.norov@gmail.com>
To: Andy Shevchenko <andriy.shevchenko@intel.com>
Cc: david.laight.linux@gmail.com,
Rasmus Villemoes <linux@rasmusvillemoes.dk>,
linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org,
Geert Uytterhoeven <geert+renesas@glider.be>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
Crt Mori <cmo@melexis.com>,
Richard Genoud <richard.genoud@bootlin.com>,
Luo Jie <quic_luoj@quicinc.com>,
Peter Zijlstra <peterz@infradead.org>,
Jakub Kicinski <kuba@kernel.org>,
netdev@vger.kernel.org, "David S . Miller" <davem@davemloft.net>,
Simon Horman <simon.horman@netronome.com>,
Mika Westerberg <mika.westerberg@linux.intel.com>,
Andreas Noever <andreas.noever@gmail.com>,
Yehezkel Bernat <YehezkelShB@gmail.com>,
Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Subject: Re: [PATCH 4/9] bitfield: Copy #define parameters to locals
Date: Wed, 10 Dec 2025 13:45:41 -0500 [thread overview]
Message-ID: <aTm_1cJhtnrCy7FM@yury> (raw)
In-Reply-To: <aThFlDZVFBEyBhFq@smile.fi.intel.com>
On Tue, Dec 09, 2025 at 05:51:48PM +0200, Andy Shevchenko wrote:
> On Tue, Dec 09, 2025 at 10:03:08AM +0000, david.laight.linux@gmail.com wrote:
>
> > Use __auto_type to take copies of parameters to both ensure they are
> > evaluated only once and to avoid bloating the pre-processor output.
> > In particular 'mask' is likely to be GENMASK() and the expension
> > of FIELD_GET() is then about 18KB.
> >
> > Remove any extra (), update kerneldoc.
>
> > Consistently use xxx for #define formal parameters and _xxx for
> > local variables.
>
> Okay, I commented below, and I think this is too huge to be in this commit.
> Can we make it separate?
I'm next to Andy. The commit message covers 6 or 7 independent
changes, and patch body itself seems to be above my abilities to
review. This should look like a series if nice cleanups, now it looks
like a patch bomb.
> > Rather than use (typeof(mask))(val) to ensure bits aren't lost when
> > val is shifted left, use '__auto_type _val = 1 ? (val) : _mask;'
> > relying on the ?: operator to generate a type that is large enough.
> >
> > Remove the (typeof(mask)) cast from __FIELD_GET(), it can only make
> > a difference if 'reg' is larger than 'mask' and the caller cares about
> > the actual type.
> > Note that mask usually comes from GENMASK() and is then 'unsigned long'.
> >
> > Rename the internal defines __FIELD_PREP to __BF_FIELD_PREP and
> > __FIELD_GET to __BF_FIELD_GET.
> >
> > Now that field_prep() and field_get() copy their parameters there is
> > no need for the __field_prep() and __field_get() defines.
> > But add a define to generate the required 'shift' to use in both defines.
>
> ...
>
> > -#define __BF_FIELD_CHECK_MASK(_mask, _val, _pfx) \
> > +#define __BF_FIELD_CHECK_MASK(mask, val, pfx) \
> > ({ \
> > - BUILD_BUG_ON_MSG(!__builtin_constant_p(_mask), \
> > - _pfx "mask is not constant"); \
> > - BUILD_BUG_ON_MSG((_mask) == 0, _pfx "mask is zero"); \
> > - BUILD_BUG_ON_MSG(__builtin_constant_p(_val) ? \
> > - ~((_mask) >> __bf_shf(_mask)) & \
> > - (0 + (_val)) : 0, \
> > - _pfx "value too large for the field"); \
> > - __BUILD_BUG_ON_NOT_POWER_OF_2((_mask) + \
> > - (1ULL << __bf_shf(_mask))); \
> > + BUILD_BUG_ON_MSG(!__builtin_constant_p(mask), \
> > + pfx "mask is not constant"); \
> > + BUILD_BUG_ON_MSG((mask) == 0, _pfx "mask is zero"); \
> > + BUILD_BUG_ON_MSG(__builtin_constant_p(val) ? \
> > + ~((mask) >> __bf_shf(mask)) & \
> > + (0 + (val)) : 0, \
> > + pfx "value too large for the field"); \
> > + __BUILD_BUG_ON_NOT_POWER_OF_2((mask) + \
> > + (1ULL << __bf_shf(mask))); \
> > })
>
> I looks like renaming parameters without any benefit, actually the opposite
> it's very hard to see if there is any interesting change here. Please, drop
> this or make it clear to focus only on the things that needs to be changed.
>
> --
> With Best Regards,
> Andy Shevchenko
>
next prev parent reply other threads:[~2025-12-10 18:45 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-09 10:03 [PATCH 0/9] bitfield: tidy up bitfield.h david.laight.linux
2025-12-09 10:03 ` [PATCH 1/9] nfp: Call FIELD_PREP() in NFP_ETH_SET_BIT_CONFIG() wrapper david.laight.linux
2025-12-10 9:29 ` Jakub Kicinski
2025-12-10 10:04 ` David Laight
2025-12-09 10:03 ` [PATCH 2/9] thunderblot: Don't pass a bitfield to FIELD_GET david.laight.linux
2025-12-10 5:56 ` Mika Westerberg
2025-12-10 9:34 ` David Laight
2025-12-10 9:41 ` Mika Westerberg
2025-12-10 10:18 ` David Laight
2025-12-10 18:13 ` Yury Norov
2025-12-10 20:23 ` David Laight
2025-12-09 10:03 ` [PATCH 3/9] bitmap: Use FIELD_PREP() in expansion of FIELD_PREP_WM16() david.laight.linux
2025-12-09 15:46 ` Andy Shevchenko
2025-12-09 18:54 ` David Laight
2025-12-10 19:18 ` Nicolas Frattaroli
2025-12-10 20:59 ` David Laight
2025-12-11 12:50 ` Nicolas Frattaroli
2025-12-11 17:52 ` David Laight
2025-12-09 10:03 ` [PATCH 4/9] bitfield: Copy #define parameters to locals david.laight.linux
2025-12-09 15:51 ` Andy Shevchenko
2025-12-09 19:11 ` David Laight
2025-12-09 21:54 ` Andy Shevchenko
2025-12-10 18:45 ` Yury Norov [this message]
2025-12-09 10:03 ` [PATCH 5/9] bitfield: FIELD_MODIFY: Only do a single read/write on the target david.laight.linux
2025-12-09 10:03 ` [PATCH 6/9] bitfield: Update sanity checks david.laight.linux
2025-12-09 10:03 ` [PATCH 7/9] bitfield: Reduce indentation david.laight.linux
2025-12-09 10:03 ` [PATCH 8/9] bitfield: Add comment block for the host/fixed endian functions david.laight.linux
2025-12-09 15:53 ` Andy Shevchenko
2025-12-10 9:23 ` Jakub Kicinski
2025-12-10 10:08 ` David Laight
2025-12-11 5:26 ` Jakub Kicinski
2025-12-09 10:03 ` [PATCH 9/9] bitfield: Update comments for le/be functions david.laight.linux
2025-12-10 18:20 ` [PATCH 0/9] bitfield: tidy up bitfield.h Yury Norov
2025-12-10 22:40 ` David Laight
2025-12-11 10:51 ` David Laight
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aTm_1cJhtnrCy7FM@yury \
--to=yury.norov@gmail.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=YehezkelShB@gmail.com \
--cc=alexandre.belloni@bootlin.com \
--cc=andreas.noever@gmail.com \
--cc=andriy.shevchenko@intel.com \
--cc=cmo@melexis.com \
--cc=davem@davemloft.net \
--cc=david.laight.linux@gmail.com \
--cc=geert+renesas@glider.be \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=mika.westerberg@linux.intel.com \
--cc=netdev@vger.kernel.org \
--cc=nicolas.frattaroli@collabora.com \
--cc=peterz@infradead.org \
--cc=quic_luoj@quicinc.com \
--cc=richard.genoud@bootlin.com \
--cc=simon.horman@netronome.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).