From: David Laight <david.laight.linux@gmail.com>
To: Yury Norov <yury.norov@gmail.com>
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>,
linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org,
Geert Uytterhoeven <geert+renesas@glider.be>,
Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Subject: Re: [PATCH 3/9] bitmap: Use FIELD_PREP() in expansion of FIELD_PREP_WM16()
Date: Thu, 11 Dec 2025 18:53:19 +0000 [thread overview]
Message-ID: <20251211185319.4daf6e4f@pumpkin> (raw)
In-Reply-To: <aTdzTdoPLJqvgqZ_@yury>
On Mon, 8 Dec 2025 19:54:37 -0500
Yury Norov <yury.norov@gmail.com> wrote:
> + Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
>
> It's always good to CC an author of the original implementation,
> isn't?
>
> On Mon, Dec 08, 2025 at 10:42:44PM +0000, david.laight.linux@gmail.com wrote:
> > From: David Laight <david.laight.linux@gmail.com>
> >
> > Instead of directly expanding __BF_FIELD_CHECK() (which really ought
> > not be used outside bitfield) and open-coding the generation of the
> > masked value, just call FIELD_PREP()
>
> That's fair.
>
> > and add an extra check for
> > the mask being at most 16 bits.
>
> Maybe it's time to introduce FIELD_PREP16()?
>
> > Signed-off-by: David Laight <david.laight.linux@gmail.com>
> > ---
> > include/linux/hw_bitfield.h | 17 ++++++++---------
> > 1 file changed, 8 insertions(+), 9 deletions(-)
> >
> > diff --git a/include/linux/hw_bitfield.h b/include/linux/hw_bitfield.h
> > index df202e167ce4..d7f21b60449b 100644
> > --- a/include/linux/hw_bitfield.h
> > +++ b/include/linux/hw_bitfield.h
> > @@ -23,15 +23,14 @@
> > * register, a bit in the lower half is only updated if the corresponding bit
> > * in the upper half is high.
> > */
> > -#define FIELD_PREP_WM16(_mask, _val) \
> > - ({ \
> > - typeof(_val) __val = _val; \
> > - typeof(_mask) __mask = _mask; \
> > - __BF_FIELD_CHECK(__mask, ((u16)0U), __val, \
> > - "HWORD_UPDATE: "); \
> > - (((typeof(__mask))(__val) << __bf_shf(__mask)) & (__mask)) | \
> > - ((__mask) << 16); \
> > - })
> > +#define FIELD_PREP_WM16(mask, val) \
> > +({ \
> > + __auto_type _mask = mask; \
>
> Is __auto_type any better than typeof()?
There is likely to be pressure for a global change soon.
6.19 contains '#define auto __auto_type' to match C23.
>
> > + u32 _val = FIELD_PREP(_mask, val); \
> > + BUILD_BUG_ON_MSG(_mask > 0xffffu, \
> > + "FIELD_PREP_WM16: mask too large"); \
>
> Not necessary to split this line.
Only because I removed a level on indentation.
>
> > + _val | (_mask << 16); \
> > +})
>
> Can you share bloat-o-meter and code generation examples?
>
> For the next version please try to keep as much history
> untouched as possible.
Even the minimal changes (not moving the continuation markers) change pretty
much all the lines.
So It really isn't worth trying to keep it.
David
next prev parent reply other threads:[~2025-12-11 18:53 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-08 22:42 [PATCH 0/9] bitfield: tidy up bitfield.h david.laight.linux
2025-12-08 22:42 ` [PATCH 1/9] nfp: Call FIELD_PREP() in NFP_ETH_SET_BIT_CONFIG() wrapper david.laight.linux
2025-12-08 22:42 ` [PATCH 2/9] thunderblot: Don't pass a bitfield to FIELD_GET david.laight.linux
2025-12-08 22:56 ` Greg KH
2025-12-09 10:36 ` David Laight
2025-12-08 22:42 ` [PATCH 3/9] bitmap: Use FIELD_PREP() in expansion of FIELD_PREP_WM16() david.laight.linux
2025-12-09 0:54 ` Yury Norov
2025-12-09 9:56 ` David Laight
2025-12-11 18:53 ` David Laight [this message]
2025-12-08 22:42 ` [PATCH 4/9] bitfield: Copy #define parameters to locals david.laight.linux
2025-12-08 22:42 ` [PATCH 5/9] bitfield: FIELD_MODIFY: Only do a single read/write on the target david.laight.linux
2025-12-08 22:42 ` [PATCH 6/9] bitfield: Update sanity checks david.laight.linux
2025-12-08 22:42 ` [PATCH 7/9] bitfield: Reduce indentation david.laight.linux
2025-12-08 22:42 ` [PATCH 8/9] bitfield: Add comment block for the host/fixed endian functions david.laight.linux
2025-12-08 22:42 ` [PATCH 9/9] bitfield: Update comments for le/be functions david.laight.linux
2025-12-09 7:08 ` [PATCH 0/9] bitfield: tidy up bitfield.h Mika Westerberg
2025-12-09 7:49 ` Jakub Kicinski
2025-12-09 9:44 ` David Laight
-- strict thread matches above, loose matches on Subject: below --
2025-12-09 10:03 david.laight.linux
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
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=20251211185319.4daf6e4f@pumpkin \
--to=david.laight.linux@gmail.com \
--cc=geert+renesas@glider.be \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=nicolas.frattaroli@collabora.com \
--cc=yury.norov@gmail.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).