Re: [PATCH v3 00/20] BYEWORD_UPDATE: unifying (most) HIWORD_UPDATE macros

Yury Norov
2025-08-27T01:09:29Z

Hi Nicolas,

Thanks for the work!

On Mon, Aug 25, 2025 at 10:28:20AM +0200, Nicolas Frattaroli wrote:
> This series was spawned by [1], where I was asked to move every instance
> of HIWORD_UPDATE et al that I could find to a common macro in the same
> series that I am introducing said common macro.
>
> The first patch of the series introduces a new header file,
> hw_bitfield.h, which contains two new macros: FIELD_PREP_WM16 and
> FIELD_PREP_WM16_CONST. The latter can be used in initializers.
>
> I've cheekily added the hw_bitfield.h header to the BITMAP API section
> of the MAINTAINERS file.
>
> This macro definition checks that the mask fits, and that the value fits
> in the mask. Like FIELD_PREP, it also shifts the value up to the mask,
> so turning off a bit does not require using the mask as a value. Masks
> are also required to be contiguous, like with FIELD_PREP.
>
> For each definition of such a macro, the driver(s) that used it were
> evaluated for three different treatments:
> - full conversion to the new macro, for cases where replacing the
> implementation of the old macro wouldn't have worked, or where the
> conversion was trivial. These are the most complex patches in this
> series, as they sometimes have to pull apart definitions of masks
> and values due to the new semantics, which require a contiguous
> mask and shift the value for us.
> - replacing the implementation of the old macro with an instance of the
> new macro, done where I felt it made the patch much easier to review
> because I didn't want to drop a big diff on people.
> - skipping conversion entirely, usually because the mask is
> non-constant and it's not trivial to make it constant. Sometimes an
> added complication is that said non-constant mask is either used in a
> path where runtime overhead may not be desirable, or in an
> initializer.
>
> Left out of conversion:
> - drivers/mmc/host/sdhci-of-arasan.c: mask is non-constant.

+ Michal Simek <michal.simek@amd.com>

> - drivers/phy/rockchip/phy-rockchip-inno-csidphy.c: mask is
> non-constant likely by way of runtime pointer dereferencing, even if
> struct and members are made const.

+ Vinod Koul <vkoul@kernel.org> (already in the list)

> - drivers/clk/rockchip/clk.h: way too many clock drivers use non-const
> masks in the context of an initializer.

+ Heiko Stuebner <heiko@sntech.de> (already in the list)

Guys, can you please take a look? Would be nice to finish the
consolidation.

--

I'll take #1 and the acknowledged (or at least reviewed) per-driver
fixes in bitmap-for-next in 2-3 weeks before the end of cycle.
Everyone, please send your tags!

Nicolas, please ping me if I forget. For the rest of the series, in
case of no feedback from maintainers, let's wait for one more merge
window, and then move everything altogether.

Thanks,
Yury