The patch titled Subject: linux/bitmap: force inlining of bitmap weight functions has been removed from the -mm tree. Its filename was linux-bitmap-force-inlining-of-bitmap-weight-functions.patch This patch was dropped because it was merged into mainline or a subsystem tree ------------------------------------------------------ From: Denys Vlasenko <dvlasenk@xxxxxxxxxx> Subject: linux/bitmap: force inlining of bitmap weight functions With this config: http://busybox.net/~vda/kernel_config_OPTIMIZE_INLINING_and_Os gcc-4.7.2 generates many copies of these tiny functions: bitmap_weight (55 copies): 55 push %rbp 48 89 e5 mov %rsp,%rbp e8 3f 3a 8b 00 callq __bitmap_weight 5d pop %rbp c3 retq hweight_long (23 copies): 55 push %rbp e8 b5 65 8e 00 callq __sw_hweight64 48 89 e5 mov %rsp,%rbp 5d pop %rbp c3 retq See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66122 This patch fixes this via s/inline/__always_inline/ While at it, replaced two "__inline__" with usual "inline" (the rest of the source file uses the latter). text data bss dec hex filename 86971357 17195880 36659200 140826437 864d745 vmlinux.before 86971120 17195912 36659200 140826232 864d678 vmlinux Signed-off-by: Denys Vlasenko <dvlasenk@xxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxxxxx> Cc: Thomas Graf <tgraf@xxxxxxx> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Cc: David Rientjes <rientjes@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/bitmap.h | 2 +- include/linux/bitops.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff -puN include/linux/bitmap.h~linux-bitmap-force-inlining-of-bitmap-weight-functions include/linux/bitmap.h --- a/include/linux/bitmap.h~linux-bitmap-force-inlining-of-bitmap-weight-functions +++ a/include/linux/bitmap.h @@ -295,7 +295,7 @@ static inline int bitmap_full(const unsi return find_first_zero_bit(src, nbits) == nbits; } -static inline int bitmap_weight(const unsigned long *src, unsigned int nbits) +static __always_inline int bitmap_weight(const unsigned long *src, unsigned int nbits) { if (small_const_nbits(nbits)) return hweight_long(*src & BITMAP_LAST_WORD_MASK(nbits)); diff -puN include/linux/bitops.h~linux-bitmap-force-inlining-of-bitmap-weight-functions include/linux/bitops.h --- a/include/linux/bitops.h~linux-bitmap-force-inlining-of-bitmap-weight-functions +++ a/include/linux/bitops.h @@ -57,7 +57,7 @@ extern unsigned long __sw_hweight64(__u6 (bit) < (size); \ (bit) = find_next_zero_bit((addr), (size), (bit) + 1)) -static __inline__ int get_bitmask_order(unsigned int count) +static inline int get_bitmask_order(unsigned int count) { int order; @@ -65,7 +65,7 @@ static __inline__ int get_bitmask_order( return order; /* We could be slightly more clever with -1 here... */ } -static __inline__ int get_count_order(unsigned int count) +static inline int get_count_order(unsigned int count) { int order; @@ -75,7 +75,7 @@ static __inline__ int get_count_order(un return order; } -static inline unsigned long hweight_long(unsigned long w) +static __always_inline unsigned long hweight_long(unsigned long w) { return sizeof(w) == 4 ? hweight32(w) : hweight64(w); } _ Patches currently in -mm which might be from dvlasenk@xxxxxxxxxx are linux-next.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