[RFC PATCH 0/2] Helper to isolate least-significant bit

Petr Tesarik posted 2 patches 1 month ago
Only 0 patches received!
There is a newer version of this series
arch/alpha/include/asm/bitops.h              |  2 +-
arch/alpha/kernel/core_cia.c                 |  2 +-
arch/alpha/kernel/smp.c                      |  2 +-
arch/arc/include/asm/bitops.h                |  2 +-
arch/m68k/include/asm/bitops.h               | 12 +++++------
arch/mips/dec/ecc-berr.c                     |  2 +-
arch/mips/include/asm/bitops.h               |  4 ++--
arch/mips/pci/pci-malta.c                    |  4 ++--
arch/powerpc/include/asm/bitops.h            |  4 ++--
arch/powerpc/kvm/e500_mmu_host.c             |  2 +-
arch/powerpc/lib/sstep.c                     |  2 +-
arch/powerpc/xmon/ppc-dis.c                  |  3 ++-
arch/powerpc/xmon/ppc-opc.c                  |  6 +++---
arch/s390/include/asm/bitops.h               |  2 +-
arch/xtensa/include/asm/bitops.h             |  6 +++---
arch/xtensa/kernel/traps.c                   |  2 +-
drivers/gpu/drm/gma500/psb_intel_sdvo.c      |  2 +-
drivers/iommu/dma-iommu.c                    |  2 +-
drivers/net/ethernet/netronome/nfp/bpf/jit.c |  2 +-
drivers/net/usb/cdc_ncm.c                    |  4 ++--
include/asm-generic/div64.h                  |  4 ++--
include/linux/bitfield.h                     |  3 ++-
include/linux/bitops.h                       |  1 +
include/linux/ffs_val.h                      | 21 ++++++++++++++++++++
include/linux/log2.h                         |  2 +-
include/linux/min_heap.h                     |  5 +++--
lib/math/gcd.c                               |  4 ++--
lib/sort.c                                   |  3 ++-
net/bluetooth/mgmt.c                         |  2 +-
net/netfilter/nft_set_pipapo.c               |  2 +-
30 files changed, 70 insertions(+), 44 deletions(-)
create mode 100644 include/linux/ffs_val.h
[RFC PATCH 0/2] Helper to isolate least-significant bit
Posted by Petr Tesarik 1 month ago
Isolation of the least significant bit can be achieved with 3 basic
ALU operations which are already open-coded in various places in the
kernel.

However, since other places less efficient constructs, for example
`1UL << ffs(x)`, I assume the trick is known only to some authors, and
it's worth adding a helper to promote its use.

Petr Tesarik (2):
  bits: introduce ffs_val()
  treewide, bits: use ffs_val() where it is open-coded

 arch/alpha/include/asm/bitops.h              |  2 +-
 arch/alpha/kernel/core_cia.c                 |  2 +-
 arch/alpha/kernel/smp.c                      |  2 +-
 arch/arc/include/asm/bitops.h                |  2 +-
 arch/m68k/include/asm/bitops.h               | 12 +++++------
 arch/mips/dec/ecc-berr.c                     |  2 +-
 arch/mips/include/asm/bitops.h               |  4 ++--
 arch/mips/pci/pci-malta.c                    |  4 ++--
 arch/powerpc/include/asm/bitops.h            |  4 ++--
 arch/powerpc/kvm/e500_mmu_host.c             |  2 +-
 arch/powerpc/lib/sstep.c                     |  2 +-
 arch/powerpc/xmon/ppc-dis.c                  |  3 ++-
 arch/powerpc/xmon/ppc-opc.c                  |  6 +++---
 arch/s390/include/asm/bitops.h               |  2 +-
 arch/xtensa/include/asm/bitops.h             |  6 +++---
 arch/xtensa/kernel/traps.c                   |  2 +-
 drivers/gpu/drm/gma500/psb_intel_sdvo.c      |  2 +-
 drivers/iommu/dma-iommu.c                    |  2 +-
 drivers/net/ethernet/netronome/nfp/bpf/jit.c |  2 +-
 drivers/net/usb/cdc_ncm.c                    |  4 ++--
 include/asm-generic/div64.h                  |  4 ++--
 include/linux/bitfield.h                     |  3 ++-
 include/linux/bitops.h                       |  1 +
 include/linux/ffs_val.h                      | 21 ++++++++++++++++++++
 include/linux/log2.h                         |  2 +-
 include/linux/min_heap.h                     |  5 +++--
 lib/math/gcd.c                               |  4 ++--
 lib/sort.c                                   |  3 ++-
 net/bluetooth/mgmt.c                         |  2 +-
 net/netfilter/nft_set_pipapo.c               |  2 +-
 30 files changed, 70 insertions(+), 44 deletions(-)
 create mode 100644 include/linux/ffs_val.h

-- 
2.52.0
Re: [RFC PATCH 0/2] Helper to isolate least-significant bit
Posted by Geert Uytterhoeven 1 month ago
Hi Petr,

On Fri, 9 Jan 2026 at 17:38, Petr Tesarik <ptesarik@suse.com> wrote:
> Isolation of the least significant bit can be achieved with 3 basic

least significant _set_ bit

> ALU operations which are already open-coded in various places in the
> kernel.

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds