From: Yury Norov <yury.norov@gmail.com>
To: david.laight.linux@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: Mon, 8 Dec 2025 19:54:37 -0500 [thread overview]
Message-ID: <aTdzTdoPLJqvgqZ_@yury> (raw)
In-Reply-To: <20251208224250.536159-4-david.laight.linux@gmail.com>
+ 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()?
> + u32 _val = FIELD_PREP(_mask, val); \
> + BUILD_BUG_ON_MSG(_mask > 0xffffu, \
> + "FIELD_PREP_WM16: mask too large"); \
Not necessary to split this line.
> + _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.
Thanks,
Yury
>
> /**
> * FIELD_PREP_WM16_CONST() - prepare a constant bitfield element with a mask in
> --
> 2.39.5
next prev parent reply other threads:[~2025-12-09 0:54 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 [this message]
2025-12-09 9:56 ` David Laight
2025-12-11 18:53 ` David Laight
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=aTdzTdoPLJqvgqZ_@yury \
--to=yury.norov@gmail.com \
--cc=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 \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.