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