Re: [PATCH 00/21] lib: add alternatives for GENMASK()

Yury Norov
2025-10-25T16:37:03Z

Please disregard it. The patches 8-21 have the TO list corrupted. I'll
resend shortly.

On Sat, Oct 25, 2025 at 12:28:36PM -0400, Yury Norov (NVIDIA) wrote:
> GENMASK(high, low) notation reflects a common pattern to describe
> hardware registers. However, out of drivers context it's confusing and
> error-prone.
>
> This series introduces alternatives for GENMASK():
>
> - BITS(low, high);
> - FIRST_BITS(nbits);
> - LAST_BITS(start);
>
> Patches 1-6 and 8 rename existing local BITS(). Patches 7 and 9 introduce
> new generic macros. Patches 10-18 switch GENMASK() usage in core files to
> better alternatives. Patch 19 adds Documentation section describing
> preferred parameters ordering.
>
> The series is inspired by:
>
> https://lore.kernel.org/all/CAHk-=whoOUsqPKb7OQwhQf9H_3=5sXGPJrDbfQfwLB3Bi13tcQ@mail.gmail.com/
>
> Yury Norov (NVIDIA) (21):
> arc: disasm: rename BITS() for FIELD()
> iwlwifi: drop unused BITS()
> select: rename BITS() to FDS_BITS()
> ALSA: rename BITS to R_BITS
> zlib: BITS() to LOWBITS()
> mfd: prepare to generalize BITS() macro
> bits: Add BITS() macro
> mfd: drop local BITS() macro
> bits: generalize BITMAP_{FIRST,LAST}_WORD_MASK
> i2c: nomadik: don't use GENMASK()
> drivers: don't use GENMASK() in FIELD_PREP_WM16()
> bitmap: don't use GENMASK()
> trace: don't use GENMASK()
> lib: 842: don't use GENMASK_ULL()
> bpf: don't use GENMASK()
> kcsan: don't use GENMASK()
> mm: don't use GENMASK()
> fprobe: don't use GENMASK()
> fs: don't use GENMASK()
> fortify-string: don't use GENMASK()
> Docs: add Functions parameters order section
>
> Documentation/process/coding-style.rst | 48 ++++++++++++++
> arch/arc/include/asm/disasm.h | 62 +++++++++----------
> arch/arc/kernel/disasm.c | 46 +++++++-------
> drivers/gpu/drm/rockchip/rockchip_lvds.h | 2 +-
> drivers/gpu/drm/rockchip/rockchip_vop2_reg.c | 4 +-
> drivers/i2c/busses/i2c-nomadik.c | 44 ++++++-------
> .../platform/synopsys/hdmirx/snps_hdmirx.h | 4 +-
> drivers/mfd/db8500-prcmu-regs.h | 2 -
> drivers/mmc/host/dw_mmc-rockchip.c | 4 +-
> .../net/wireless/intel/iwlwifi/fw/api/coex.h | 2 -
> drivers/soc/rockchip/grf.c | 4 +-
> fs/erofs/internal.h | 2 +-
> fs/f2fs/data.c | 2 +-
> fs/f2fs/inode.c | 2 +-
> fs/f2fs/segment.c | 2 +-
> fs/f2fs/super.c | 2 +-
> fs/proc/task_mmu.c | 2 +-
> fs/resctrl/pseudo_lock.c | 2 +-
> fs/select.c | 6 +-
> include/asm-generic/fprobe.h | 7 +--
> include/linux/bitmap.h | 11 ++--
> include/linux/bits.h | 11 ++++
> include/linux/f2fs_fs.h | 2 +-
> include/linux/find.h | 34 +++++-----
> include/linux/fortify-string.h | 4 +-
> kernel/bpf/verifier.c | 4 +-
> kernel/kcsan/encoding.h | 4 +-
> kernel/trace/fgraph.c | 10 +--
> kernel/trace/trace_probe.h | 2 +-
> lib/842/842_compress.c | 2 +-
> lib/842/842_decompress.c | 2 +-
> lib/bitmap.c | 2 +-
> lib/test_bitmap.c | 14 ++---
> lib/zlib_inflate/inflate.c | 48 +++++++-------
> mm/debug_vm_pgtable.c | 2 +-
> sound/core/oss/rate.c | 12 ++--
> sound/soc/rockchip/rockchip_i2s_tdm.h | 2 +-
> 37 files changed, 235 insertions(+), 180 deletions(-)
>
> --
> 2.43.0