The patch titled Subject: bitops: more BITS_TO_* macros has been added to the -mm tree. Its filename is bitops-more-bits_to_-macros.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/bitops-more-bits_to_-macros.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/bitops-more-bits_to_-macros.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/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Yury Norov <ynorov@xxxxxxxxxxx> Subject: bitops: more BITS_TO_* macros Introduce BITS_TO_U64, BITS_TO_U32 and BITS_TO_BYTES as they are handy in the following patches (BITS_TO_U32 specifically). Reimplement tools/ version of the macros according to the kernel implementation. Also fix indentation for BITS_PER_TYPE definition. [akpm@xxxxxxxxxxxxxxxxxxxx: fix fs/ocfs2/dlm/dlmcommon.h] [akpm@xxxxxxxxxxxxxxxxxxxx: fix drivers/net/ethernet/broadcom/bnx2x/bnx2x_init.h] Link: http://lkml.kernel.org/r/20190501010636.30595-3-ynorov@xxxxxxxxxxx Signed-off-by: Yury Norov <ynorov@xxxxxxxxxxx> Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Cc: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx> Cc: Amritha Nambiar <amritha.nambiar@xxxxxxxxx> Cc: Willem de Bruijn <willemb@xxxxxxxxxx> Cc: Kees Cook <keescook@xxxxxxxxxxxx> Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> Cc: "Tobin C . Harding" <tobin@xxxxxxxxxx> Cc: Will Deacon <will.deacon@xxxxxxx> Cc: Steffen Klassert <steffen.klassert@xxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/net/ethernet/broadcom/bnx2x/bnx2x_init.h | 3 ++- fs/ocfs2/dlm/dlmcommon.h | 6 ++---- include/linux/bitops.h | 5 ++++- tools/include/linux/bitops.h | 9 +++++---- 4 files changed, 13 insertions(+), 10 deletions(-) --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_init.h~bitops-more-bits_to_-macros +++ a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_init.h @@ -17,6 +17,8 @@ #ifndef BNX2X_INIT_H #define BNX2X_INIT_H +#include <linux/bitops.h> + /* Init operation types and structures */ enum { OP_RD = 0x1, /* read a single register */ @@ -296,7 +298,6 @@ static inline void bnx2x_dcb_config_qm(s * possible, the driver should only write the valid vnics into the internal * ram according to the appropriate port mode. */ -#define BITS_TO_BYTES(x) ((x)/8) /* CMNG constants, as derived from system spec calculations */ --- a/fs/ocfs2/dlm/dlmcommon.h~bitops-more-bits_to_-macros +++ a/fs/ocfs2/dlm/dlmcommon.h @@ -10,6 +10,8 @@ #ifndef DLMCOMMON_H #define DLMCOMMON_H +#include <linux/bits.h> +#include <linux/bitops.h> #include <linux/kref.h> #define DLM_HB_NODE_DOWN_PRI (0xf000000) @@ -689,10 +691,6 @@ struct dlm_begin_reco __be32 pad2; }; - -#define BITS_PER_BYTE 8 -#define BITS_TO_BYTES(bits) (((bits)+BITS_PER_BYTE-1)/BITS_PER_BYTE) - struct dlm_query_join_request { u8 node_idx; --- a/include/linux/bitops.h~bitops-more-bits_to_-macros +++ a/include/linux/bitops.h @@ -4,8 +4,11 @@ #include <asm/types.h> #include <linux/bits.h> -#define BITS_PER_TYPE(type) (sizeof(type) * BITS_PER_BYTE) +#define BITS_PER_TYPE(type) (sizeof(type) * BITS_PER_BYTE) #define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(long)) +#define BITS_TO_U64(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(u64)) +#define BITS_TO_U32(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(u32)) +#define BITS_TO_BYTES(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(char)) extern unsigned int __sw_hweight8(unsigned int w); extern unsigned int __sw_hweight16(unsigned int w); --- a/tools/include/linux/bitops.h~bitops-more-bits_to_-macros +++ a/tools/include/linux/bitops.h @@ -13,10 +13,11 @@ #include <linux/bits.h> #include <linux/compiler.h> -#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long)) -#define BITS_TO_U64(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u64)) -#define BITS_TO_U32(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u32)) -#define BITS_TO_BYTES(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE) +#define BITS_PER_TYPE(type) (sizeof(type) * BITS_PER_BYTE) +#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(long)) +#define BITS_TO_U64(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(u64)) +#define BITS_TO_U32(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(u32)) +#define BITS_TO_BYTES(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(char)) extern unsigned int __sw_hweight8(unsigned int w); extern unsigned int __sw_hweight16(unsigned int w); _ Patches currently in -mm which might be from ynorov@xxxxxxxxxxx are lib-string-add-strnchrnul.patch bitops-more-bits_to_-macros.patch lib-add-test-for-bitmap_parse.patch lib-make-bitmap_parse_user-a-wrapper-on-bitmap_parse.patch lib-rework-bitmap_parse.patch lib-new-testcases-for-bitmap_parse_user.patch cpumask-dont-calculate-length-of-the-input-string.patch