Hi Eli, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on next-20200715] url: https://github.com/0day-ci/linux/commits/Eli-Cohen/VDPA-support-for-Mellanox-ConnectX-devices/20200716-155039 base: ca0e494af5edb59002665bf12871e94b4163a257 config: i386-allyesconfig (attached as .config) compiler: gcc-9 (Debian 9.3.0-14) 9.3.0 reproduce (this is a W=1 build): # save the attached .config to linux build tree make W=1 ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): include/linux/mlx5/device.h:56:43: note: in expansion of macro '__mlx5_bit_sz' 56 | #define __mlx5_dw_bit_off(typ, fld) (32 - __mlx5_bit_sz(typ, fld) - (__mlx5_bit_off(typ, fld) & 0x1f)) | ^~~~~~~~~~~~~ include/linux/mlx5/device.h:58:60: note: in expansion of macro '__mlx5_dw_bit_off' 58 | #define __mlx5_dw_mask(typ, fld) (__mlx5_mask(typ, fld) << __mlx5_dw_bit_off(typ, fld)) | ^~~~~~~~~~~~~~~~~ include/linux/mlx5/device.h:78:10: note: in expansion of macro '__mlx5_dw_mask' 78 | (~__mlx5_dw_mask(typ, fld))) | (((_v) & __mlx5_mask(typ, fld)) \ | ^~~~~~~~~~~~~~ drivers/vdpa/mlx5/core/mr.c:194:2: note: in expansion of macro 'MLX5_SET' 194 | MLX5_SET(create_mkey_in, in, uid, mvdev->res.uid); | ^~~~~~~~ include/linux/compiler_types.h:135:35: error: 'struct mlx5_ifc_create_mkey_in_bits' has no member named 'uid' 135 | #define __compiler_offsetof(a, b) __builtin_offsetof(a, b) | ^~~~~~~~~~~~~~~~~~ include/uapi/linux/swab.h:115:54: note: in definition of macro '__swab32' 115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x)) | ^ include/linux/byteorder/generic.h:94:21: note: in expansion of macro '__cpu_to_be32' 94 | #define cpu_to_be32 __cpu_to_be32 | ^~~~~~~~~~~~~ include/linux/stddef.h:17:32: note: in expansion of macro '__compiler_offsetof' 17 | #define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER) | ^~~~~~~~~~~~~~~~~~~ include/linux/mlx5/device.h:51:35: note: in expansion of macro 'offsetof' 51 | #define __mlx5_bit_off(typ, fld) (offsetof(struct mlx5_ifc_##typ##_bits, fld)) | ^~~~~~~~ include/linux/mlx5/device.h:56:70: note: in expansion of macro '__mlx5_bit_off' 56 | #define __mlx5_dw_bit_off(typ, fld) (32 - __mlx5_bit_sz(typ, fld) - (__mlx5_bit_off(typ, fld) & 0x1f)) | ^~~~~~~~~~~~~~ include/linux/mlx5/device.h:58:60: note: in expansion of macro '__mlx5_dw_bit_off' 58 | #define __mlx5_dw_mask(typ, fld) (__mlx5_mask(typ, fld) << __mlx5_dw_bit_off(typ, fld)) | ^~~~~~~~~~~~~~~~~ include/linux/mlx5/device.h:78:10: note: in expansion of macro '__mlx5_dw_mask' 78 | (~__mlx5_dw_mask(typ, fld))) | (((_v) & __mlx5_mask(typ, fld)) \ | ^~~~~~~~~~~~~~ drivers/vdpa/mlx5/core/mr.c:194:2: note: in expansion of macro 'MLX5_SET' 194 | MLX5_SET(create_mkey_in, in, uid, mvdev->res.uid); | ^~~~~~~~ include/linux/mlx5/device.h:50:57: error: 'struct mlx5_ifc_create_mkey_in_bits' has no member named 'uid' 50 | #define __mlx5_bit_sz(typ, fld) sizeof(__mlx5_nullp(typ)->fld) | ^~ include/uapi/linux/swab.h:115:54: note: in definition of macro '__swab32' 115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x)) | ^ include/linux/byteorder/generic.h:94:21: note: in expansion of macro '__cpu_to_be32' 94 | #define cpu_to_be32 __cpu_to_be32 | ^~~~~~~~~~~~~ include/linux/mlx5/device.h:57:47: note: in expansion of macro '__mlx5_bit_sz' 57 | #define __mlx5_mask(typ, fld) ((u32)((1ull << __mlx5_bit_sz(typ, fld)) - 1)) | ^~~~~~~~~~~~~ include/linux/mlx5/device.h:78:48: note: in expansion of macro '__mlx5_mask' 78 | (~__mlx5_dw_mask(typ, fld))) | (((_v) & __mlx5_mask(typ, fld)) \ | ^~~~~~~~~~~ drivers/vdpa/mlx5/core/mr.c:194:2: note: in expansion of macro 'MLX5_SET' 194 | MLX5_SET(create_mkey_in, in, uid, mvdev->res.uid); | ^~~~~~~~ include/linux/mlx5/device.h:50:57: error: 'struct mlx5_ifc_create_mkey_in_bits' has no member named 'uid' 50 | #define __mlx5_bit_sz(typ, fld) sizeof(__mlx5_nullp(typ)->fld) | ^~ include/uapi/linux/swab.h:115:54: note: in definition of macro '__swab32' 115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x)) | ^ include/linux/byteorder/generic.h:94:21: note: in expansion of macro '__cpu_to_be32' 94 | #define cpu_to_be32 __cpu_to_be32 | ^~~~~~~~~~~~~ include/linux/mlx5/device.h:56:43: note: in expansion of macro '__mlx5_bit_sz' 56 | #define __mlx5_dw_bit_off(typ, fld) (32 - __mlx5_bit_sz(typ, fld) - (__mlx5_bit_off(typ, fld) & 0x1f)) | ^~~~~~~~~~~~~ include/linux/mlx5/device.h:79:11: note: in expansion of macro '__mlx5_dw_bit_off' 79 | << __mlx5_dw_bit_off(typ, fld))); \ | ^~~~~~~~~~~~~~~~~ drivers/vdpa/mlx5/core/mr.c:194:2: note: in expansion of macro 'MLX5_SET' 194 | MLX5_SET(create_mkey_in, in, uid, mvdev->res.uid); | ^~~~~~~~ include/linux/compiler_types.h:135:35: error: 'struct mlx5_ifc_create_mkey_in_bits' has no member named 'uid' 135 | #define __compiler_offsetof(a, b) __builtin_offsetof(a, b) | ^~~~~~~~~~~~~~~~~~ include/uapi/linux/swab.h:115:54: note: in definition of macro '__swab32' 115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x)) | ^ include/linux/byteorder/generic.h:94:21: note: in expansion of macro '__cpu_to_be32' 94 | #define cpu_to_be32 __cpu_to_be32 | ^~~~~~~~~~~~~ include/linux/stddef.h:17:32: note: in expansion of macro '__compiler_offsetof' 17 | #define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER) | ^~~~~~~~~~~~~~~~~~~ include/linux/mlx5/device.h:51:35: note: in expansion of macro 'offsetof' 51 | #define __mlx5_bit_off(typ, fld) (offsetof(struct mlx5_ifc_##typ##_bits, fld)) | ^~~~~~~~ include/linux/mlx5/device.h:56:70: note: in expansion of macro '__mlx5_bit_off' 56 | #define __mlx5_dw_bit_off(typ, fld) (32 - __mlx5_bit_sz(typ, fld) - (__mlx5_bit_off(typ, fld) & 0x1f)) | ^~~~~~~~~~~~~~ include/linux/mlx5/device.h:79:11: note: in expansion of macro '__mlx5_dw_bit_off' 79 | << __mlx5_dw_bit_off(typ, fld))); \ | ^~~~~~~~~~~~~~~~~ drivers/vdpa/mlx5/core/mr.c:194:2: note: in expansion of macro 'MLX5_SET' 194 | MLX5_SET(create_mkey_in, in, uid, mvdev->res.uid); | ^~~~~~~~ drivers/vdpa/mlx5/core/mr.c: At top level: >> drivers/vdpa/mlx5/core/mr.c:414:5: warning: no previous prototype for 'mlx5_vdpa_create_mr' [-Wmissing-prototypes] 414 | int mlx5_vdpa_create_mr(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *iotlb) | ^~~~~~~~~~~~~~~~~~~ >> drivers/vdpa/mlx5/core/mr.c:425:6: warning: no previous prototype for 'mlx5_vdpa_destroy_mr' [-Wmissing-prototypes] 425 | void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev) | ^~~~~~~~~~~~~~~~~~~~ vim +/mlx5_vdpa_create_mr +414 drivers/vdpa/mlx5/core/mr.c 413 > 414 int mlx5_vdpa_create_mr(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *iotlb) 415 { 416 struct mlx5_vdpa_mr *mr = &mvdev->mr; 417 int err; 418 419 mutex_lock(&mr->mkey_mtx); 420 err = _mlx5_vdpa_create_mr(mvdev, iotlb); 421 mutex_unlock(&mr->mkey_mtx); 422 return err; 423 } 424 > 425 void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev) 426 { 427 struct mlx5_vdpa_mr *mr = &mvdev->mr; 428 struct mlx5_vdpa_direct_mr *dmr; 429 struct mlx5_vdpa_direct_mr *n; 430 431 mutex_lock(&mr->mkey_mtx); 432 if (!mr->initialized) 433 goto out; 434 435 destroy_indirect_key(mvdev, mr); 436 list_for_each_entry_safe_reverse(dmr, n, &mr->head, list) { 437 list_del_init(&dmr->list); 438 unmap_direct_mr(mvdev, dmr); 439 kfree(dmr); 440 } 441 memset(mr, 0, sizeof(*mr)); 442 mr->initialized = false; 443 out: 444 mutex_unlock(&mr->mkey_mtx); 445 } 446 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org