Based on top of "lib/bitmap: add bitmap_{read,write}()"[0] from Alexander Potapenko as it uses those new bitmap_{read,write}() functions to not introduce another pair of similar ones. Derived from the PFCP support series[1] as this grew bigger (2 -> 13 commits in v2) and involved more core bitmap changes, finally transforming into a pure bitmap series. The actual mentioned ip_tunnel flags conversion from `__be16` to bitmaps will be submitted bundled with the PFCP set after this one lands. Little breakdown: * #1, #8, #10: misc cleanups; * #2, #5, #6, #7: symbol scope, name collisions; * #3, #4, #9, #11: compile-time optimizations. [0] https://lore.kernel.org/lkml/20231109151106.2385155-1-glider@xxxxxxxxxx [1] https://lore.kernel.org/netdev/20230721071532.613888-1-marcin.szycik@xxxxxxxxxxxxxxx Alexander Lobakin (11): bitops: add missing prototype check bitops: make BYTES_TO_BITS() treewide-available bitops: let the compiler optimize {__,}assign_bit() linkmode: convert linkmode_{test,set,clear,mod}_bit() to macros s390/cio: rename bitmap_size() -> idset_bitmap_size() fs/ntfs3: add prefix to bitmap_size() and use BITS_TO_U64() btrfs: rename bitmap_set_bits() -> btrfs_bitmap_set_bits() tools: move alignment-related macros to new <linux/align.h> bitmap: introduce generic optimized bitmap_size() bitmap: make bitmap_{get,set}_value8() use bitmap_{read,write}() lib/bitmap: add compile-time test for __assign_bit() optimization drivers/md/dm-clone-metadata.c | 5 ---- drivers/s390/cio/idset.c | 12 +++++---- fs/btrfs/free-space-cache.c | 8 +++--- fs/ntfs3/bitmap.c | 4 +-- fs/ntfs3/fsntfs.c | 2 +- fs/ntfs3/index.c | 11 ++++---- fs/ntfs3/ntfs_fs.h | 4 +-- fs/ntfs3/super.c | 2 +- include/linux/bitmap.h | 46 ++++++++-------------------------- include/linux/bitops.h | 23 ++++++----------- include/linux/cpumask.h | 2 +- include/linux/linkmode.h | 27 +++----------------- kernel/trace/trace_probe.c | 2 -- lib/math/prime_numbers.c | 2 -- lib/test_bitmap.c | 18 +++++++------ tools/include/linux/align.h | 11 ++++++++ tools/include/linux/bitmap.h | 9 ++++--- tools/include/linux/bitops.h | 2 ++ tools/include/linux/mm.h | 5 +--- tools/perf/util/probe-finder.c | 4 +-- 20 files changed, 75 insertions(+), 124 deletions(-) create mode 100644 tools/include/linux/align.h --- >From v2[2]: * 00: drop ip_tunnel part: will be sent together with the PFCP part once this gets accepted (Jakub, Yury); * 02: fix format string literal build warning due to the new generic macro having different implicit type (Stephen); * 04: pick Acked-by (Jakub); * 08: new; * 09: pick Acked-by (Yury), fix including the header not existing under the tools/ tree (via #8) (Stephen);. >From v1[3]: * 03: convert assign_bit() to a macro as well, saves some bytes and looks more consistent (Yury); * 03: enclose each argument into own pair of braces (Yury); * 06: use generic BITS_TO_U64() while at it (Yury); * 07: pick Acked-by (David); * 08: Acked-by, use bitmap_size() in the code from 05 as well (Yury); * 09: instead of introducing a new pair of functions, use generic bitmap_{read,write}() from [0]. bloat-o-meter shows no regressions from the switch (Yury, also Andy). Old pfcp -> bitmap changelog: As for former commits (now 10 and 11), almost all of the changes were suggested by Andy, notably: stop violating bitmap API, use __assign_bit() where appropriate, and add more tests to make sure everything works as expected. Apart from that, add simple wrappers for bitmap_*() used in the IP tunnel code to avoid manually specifying ``__IP_TUNNEL_FLAG_NUM`` each time. [2] https://lore.kernel.org/lkml/20231016165247.14212-1-aleksander.lobakin@xxxxxxxxx [3] https://lore.kernel.org/lkml/20231009151026.66145-1-aleksander.lobakin@xxxxxxxxx -- 2.41.0