From: david.laight.linux@gmail.com
To: Yury Norov <yury.norov@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>,
Andy Shevchenko <andriy.shevchenko@intel.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>
Cc: David Laight <david.laight.linux@gmail.com>
Subject: [PATCH 0/9] bitfield: tidy up bitfield.h
Date: Tue, 9 Dec 2025 10:03:04 +0000 [thread overview]
Message-ID: <20251209100313.2867-1-david.laight.linux@gmail.com> (raw)
From: David Laight <david.laight.linux@gmail.com>
Re-send with patches going to everyone.
(I'd forgotten I'd set 'ccCover = 0'.)
I noticed some very long (18KB) error messages from the compiler.
Turned out they were errors on lines that passed GENMASK() to FIELD_PREP().
Since most of the #defines are already statement functions the values
can be copied to locals so the actual parameters only get expanded once.
The 'bloat' is reduced further by using a simple test to ensure 'reg'
is large enough, slightly simplifying the test for constant 'val' and
only checking 'reg' and 'val' when the parameters are present.
The first two patches are slightly problematic.
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp_eth.c manages to use
a #define that should be an internal to bitfield.h, the changed file
is actually more similar to the previous version.
drivers/thunderbolt/tb.h passes a bifield to FIELD_GET(), these can't
be used with sizeof or __auto_type. The usual solution is to add zero,
but that can't be done in FIELD_GET() because it doesn't want the value
promoted to 'int' (no idea how _Generic() treated it.)
The fix is just to add zero at the call site.
(The bitfield seems to be in a structure rad from hardware - no idea
how that works on BE (or any LE that uses an unusual order for bitfields.)
Both changes may need to to through the same tree as the header file changes.
The changes are based on 'next' and contain the addition of field_prep()
and field_get() for non-constant values.
I also know it is the merge window.
I expect to be generating a v2 in the new year (someone always has a comment).
David Laight (9):
nfp: Call FIELD_PREP() in NFP_ETH_SET_BIT_CONFIG() wrapper
thunderblot: Don't pass a bitfield to FIELD_GET
bitmap: Use FIELD_PREP() in expansion of FIELD_PREP_WM16()
bitfield: Copy #define parameters to locals
bitfield: FIELD_MODIFY: Only do a single read/write on the target
bitfield: Update sanity checks
bitfield: Reduce indentation
bitfield: Add comment block for the host/fixed endian functions
bitfield: Update comments for le/be functions
.../netronome/nfp/nfpcore/nfp_nsp_eth.c | 16 +-
drivers/thunderbolt/tb.h | 2 +-
include/linux/bitfield.h | 278 ++++++++++--------
include/linux/hw_bitfield.h | 17 +-
4 files changed, 166 insertions(+), 147 deletions(-)
--
2.39.5
next reply other threads:[~2025-12-09 10:03 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-09 10:03 david.laight.linux [this message]
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
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
-- strict thread matches above, loose matches on Subject: below --
2025-12-08 22:42 david.laight.linux
2025-12-09 7:08 ` Mika Westerberg
2025-12-09 7:49 ` Jakub Kicinski
2025-12-09 9:44 ` 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=20251209100313.2867-1-david.laight.linux@gmail.com \
--to=david.laight.linux@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=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 \
--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).