The patch titled Subject: lib: move find_last_bit to lib/find_next_bit.c has been added to the -mm tree. Its filename is lib-move-find_last_bit-to-lib-find_next_bitc.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/lib-move-find_last_bit-to-lib-find_next_bitc.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/lib-move-find_last_bit-to-lib-find_next_bitc.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Yury Norov <yury.norov@xxxxxxxxx> Subject: lib: move find_last_bit to lib/find_next_bit.c Currently all 'find_*_bit' family is located in lib/find_next_bit.c, except 'find_last_bit', which is in lib/find_last_bit.c. It seems, there's no major benefit to have it separated. Signed-off-by: Yury Norov <yury.norov@xxxxxxxxx> Reviewed-by: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx> Cc: George Spelvin <linux@xxxxxxxxxxx> Cc: Alexey Klimov <klimov.linux@xxxxxxxxx> Cc: David S. Miller <davem@xxxxxxxxxxxxx> Cc: Daniel Borkmann <dborkman@xxxxxxxxxx> Cc: Hannes Frederic Sowa <hannes@xxxxxxxxxxxxxxxxxxx> Cc: Lai Jiangshan <laijs@xxxxxxxxxxxxxx> Cc: Mark Salter <msalter@xxxxxxxxxx> Cc: AKASHI Takahiro <takahiro.akashi@xxxxxxxxxx> Cc: Thomas Graf <tgraf@xxxxxxx> Cc: Valentin Rothberg <valentinrothberg@xxxxxxxxx> Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- lib/Makefile | 2 +- lib/find_next_bit.c | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff -puN lib/Makefile~lib-move-find_last_bit-to-lib-find_next_bitc lib/Makefile --- a/lib/Makefile~lib-move-find_last_bit-to-lib-find_next_bitc +++ a/lib/Makefile @@ -25,7 +25,7 @@ obj-y += lockref.o obj-y += bcd.o div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \ bust_spinlocks.o kasprintf.o bitmap.o scatterlist.o \ gcd.o lcm.o list_sort.o uuid.o flex_array.o clz_ctz.o \ - bsearch.o find_last_bit.o find_next_bit.o llist.o memweight.o kfifo.o \ + bsearch.o find_next_bit.o llist.o memweight.o kfifo.o \ percpu-refcount.o percpu_ida.o rhashtable.o reciprocal_div.o obj-y += string_helpers.o obj-$(CONFIG_TEST_STRING_HELPERS) += test-string_helpers.o diff -puN lib/find_next_bit.c~lib-move-find_last_bit-to-lib-find_next_bitc lib/find_next_bit.c --- a/lib/find_next_bit.c~lib-move-find_last_bit-to-lib-find_next_bitc +++ a/lib/find_next_bit.c @@ -1,8 +1,12 @@ -/* find_next_bit.c: fallback find next bit implementation +/* bit search implementation * * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved. * Written by David Howells (dhowells@xxxxxxxxxx) * + * Copyright (C) 2008 IBM Corporation + * 'find_last_bit' is written by Rusty Russell <rusty@xxxxxxxxxxxxxxx> + * (Inspired by David Howell's find_next_bit implementation) + * * Rewritten by Yury Norov <yury.norov@xxxxxxxxx> to decrease * size and improve performance, 2015. * @@ -13,6 +17,7 @@ */ #include <linux/bitops.h> +#include <linux/bitmap.h> #include <linux/export.h> #include <linux/kernel.h> @@ -106,6 +111,26 @@ unsigned long find_first_zero_bit(const EXPORT_SYMBOL(find_first_zero_bit); #endif +#ifndef find_last_bit +unsigned long find_last_bit(const unsigned long *addr, unsigned long size) +{ + if (size) { + unsigned long val = BITMAP_LAST_WORD_MASK(size); + unsigned long idx = (size-1) / BITS_PER_LONG; + + do { + val &= addr[idx]; + if (val) + return idx * BITS_PER_LONG + __fls(val); + + val = ~0ul; + } while (idx--); + } + return size; +} +EXPORT_SYMBOL(find_last_bit); +#endif + #ifdef __BIG_ENDIAN /* include/linux/byteorder does not support "unsigned long" type */ _ Patches currently in -mm which might be from yury.norov@xxxxxxxxx are linux-bitmaph-improve-bitmap_lastfirst_word_mask.patch lib-find__bit-reimplementation.patch lib-find__bit-reimplementation-fix.patch lib-move-find_last_bit-to-lib-find_next_bitc.patch lib-rename-lib-find_next_bitc-to-lib-find_bitc.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html