tree:
https://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux.git queue-next
head: 68591fc13872b4971e7384508742e998a185efca
commit: c6ca03a1d0da03615a68b6132e81605985ca2ce2 [1605/1612] RDMA/mlx5: Clarify what the
UMR is for when creating MRs
config: powerpc-randconfig-r035-20200913 (attached as .config)
compiler: clang version 12.0.0 (
https://github.com/llvm/llvm-project
d6fadc49e3d7eb0977bca3ff92bf156bd059fcd4)
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
# install powerpc cross compiling tool for clang build
# apt-get install binutils-powerpc-linux-gnu
git checkout c6ca03a1d0da03615a68b6132e81605985ca2ce2
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
> drivers/infiniband/hw/mlx5/mr.c:1205:3: warning: variable
'err' is used uninitialized whenever 'if' condition is true
[-Wsometimes-uninitialized]
if (WARN_ON(access_flags &
IB_ACCESS_ON_DEMAND))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:56:28: note: expanded from macro 'if'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:58:30: note: expanded from macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) :
__trace_if_value(cond))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/infiniband/hw/mlx5/mr.c:1253:17: note: uninitialized use occurs here
return ERR_PTR(err);
^~~
drivers/infiniband/hw/mlx5/mr.c:1205:3: note: remove the 'if' if its condition
is always false
if (WARN_ON(access_flags & IB_ACCESS_ON_DEMAND))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:56:23: note: expanded from macro 'if'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^
drivers/infiniband/hw/mlx5/mr.c:1185:9: note: initialize the variable 'err' to
silence this warning
int err;
^
= 0
1 warning generated.
#
https://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux.git/commit...
git remote add mellanox
https://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux.git
git fetch --no-tags mellanox queue-next
git checkout c6ca03a1d0da03615a68b6132e81605985ca2ce2
vim +1205 drivers/infiniband/hw/mlx5/mr.c
1168
1169 /*
1170 * If ibmr is NULL it will be allocated by reg_create.
1171 * Else, the given ibmr will be used.
1172 */
1173 static struct mlx5_ib_mr *reg_create(struct ib_mr *ibmr, struct ib_pd *pd,
1174 u64 virt_addr, u64 length,
1175 struct ib_umem *umem, int npages,
1176 int page_shift, int access_flags,
1177 bool populate)
1178 {
1179 struct mlx5_ib_dev *dev = to_mdev(pd->device);
1180 struct mlx5_ib_mr *mr;
1181 __be64 *pas;
1182 void *mkc;
1183 int inlen;
1184 u32 *in;
1185 int err;
1186 bool pg_cap = !!(MLX5_CAP_GEN(dev->mdev, pg));
1187
1188 mr = ibmr ? to_mmr(ibmr) : kzalloc(sizeof(*mr), GFP_KERNEL);
1189 if (!mr)
1190 return ERR_PTR(-ENOMEM);
1191
1192 mr->ibmr.pd = pd;
1193 mr->access_flags = access_flags;
1194
1195 inlen = MLX5_ST_SZ_BYTES(create_mkey_in);
1196 if (populate)
1197 inlen += sizeof(*pas) * roundup(npages, 2);
1198 in = kvzalloc(inlen, GFP_KERNEL);
1199 if (!in) {
1200 err = -ENOMEM;
1201 goto err_1;
1202 }
1203 pas = (__be64 *)MLX5_ADDR_OF(create_mkey_in, in, klm_pas_mtt);
1204 if (populate) {
1205 if (WARN_ON(access_flags & IB_ACCESS_ON_DEMAND))
1206 goto err_2;
1207 mlx5_ib_populate_pas(dev, umem, page_shift, pas,
1208 pg_cap ? MLX5_IB_MTT_PRESENT : 0);
1209 }
1210
1211 /* The pg_access bit allows setting the access flags
1212 * in the page list submitted with the command. */
1213 MLX5_SET(create_mkey_in, in, pg_access, !!(pg_cap));
1214
1215 mkc = MLX5_ADDR_OF(create_mkey_in, in, memory_key_mkey_entry);
1216 set_mkc_access_pd_addr_fields(mkc, access_flags, virt_addr,
1217 populate ? pd : dev->umrc.pd);
1218 MLX5_SET(mkc, mkc, free, !populate);
1219 MLX5_SET(mkc, mkc, access_mode_1_0, MLX5_MKC_ACCESS_MODE_MTT);
1220 MLX5_SET(mkc, mkc, umr_en, 1);
1221
1222 MLX5_SET64(mkc, mkc, len, length);
1223 MLX5_SET(mkc, mkc, bsf_octword_size, 0);
1224 MLX5_SET(mkc, mkc, translations_octword_size,
1225 get_octo_len(virt_addr, length, page_shift));
1226 MLX5_SET(mkc, mkc, log_page_size, page_shift);
1227 if (populate) {
1228 MLX5_SET(create_mkey_in, in, translations_octword_actual_size,
1229 get_octo_len(virt_addr, length, page_shift));
1230 }
1231
1232 err = mlx5_ib_create_mkey(dev, &mr->mmkey, in, inlen);
1233 if (err) {
1234 mlx5_ib_warn(dev, "create mkey failed\n");
1235 goto err_2;
1236 }
1237 mr->mmkey.type = MLX5_MKEY_MR;
1238 mr->desc_size = sizeof(struct mlx5_mtt);
1239 mr->dev = dev;
1240 kvfree(in);
1241
1242 mlx5_ib_dbg(dev, "mkey = 0x%x\n", mr->mmkey.key);
1243
1244 return mr;
1245
1246 err_2:
1247 kvfree(in);
1248
1249 err_1:
1250 if (!ibmr)
1251 kfree(mr);
1252
1253 return ERR_PTR(err);
1254 }
1255
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org