On Mon, Dec 14, 2020 at 02:31:25PM -0800, Alexander Duyck wrote: > On Mon, Dec 14, 2020 at 1:49 PM Saeed Mahameed <saeed@xxxxxxxxxx> wrote: > > > > From: Parav Pandit <parav@xxxxxxxxxx> > > > > MLX5_GENERAL_OBJECT_TYPES types bitfield is 64-bit field. > > > > Defining an enum for such bit fields on 32-bit platform results in below > > warning. > > > > ./include/vdso/bits.h:7:26: warning: left shift count >= width of type [-Wshift-count-overflow] > > ^ > > ./include/linux/mlx5/mlx5_ifc.h:10716:46: note: in expansion of macro ‘BIT’ > > MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_SAMPLER = BIT(0x20), > > ^~~ > > Use 32-bit friendly left shift. > > > > Fixes: 2a2970891647 ("net/mlx5: Add sample offload hardware bits and structures") > > Signed-off-by: Parav Pandit <parav@xxxxxxxxxx> > > Reported-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> > > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx> > > Signed-off-by: Saeed Mahameed <saeed@xxxxxxxxxx> > > --- > > include/linux/mlx5/mlx5_ifc.h | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h > > index 0d6e287d614f..b9f15935dfe5 100644 > > --- a/include/linux/mlx5/mlx5_ifc.h > > +++ b/include/linux/mlx5/mlx5_ifc.h > > @@ -10711,9 +10711,9 @@ struct mlx5_ifc_affiliated_event_header_bits { > > }; > > > > enum { > > - MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_ENCRYPTION_KEY = BIT(0xc), > > - MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_IPSEC = BIT(0x13), > > - MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_SAMPLER = BIT(0x20), > > + MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_ENCRYPTION_KEY = 1ULL << 0xc, > > + MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_IPSEC = 1ULL << 0x13, > > + MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_SAMPLER = 1ULL << 0x20, > > }; > > Why not just use BIT_ULL? mlx5_ifc.h doesn't include bits.h on-purpose and there are "*.c" files that include that ifc header file, but don't include bits.h either. It can cause to build failures in random builds. The mlx5_ifc.h is our main hardware definition file that we are using in other projects outside of the kernel (rdma-core) too, so it is preferable to keep it as plain-C without any extra dependencies. Thanks