Hi Jason, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on drm-intel/for-linux-next] [also build test WARNING on drm-tip/drm-tip drm-exynos/exynos-drm-next next-20210616] [cannot apply to tegra-drm/drm/tegra/for-next drm/drm-next v5.13-rc6] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Jason-Ekstrand/drm-i915-gem-ioctl-clean-ups-v6/20210616-151016 base: git://anongit.freedesktop.org/drm-intel for-linux-next config: i386-randconfig-s001-20210615 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.3-341-g8af24329-dirty # https://github.com/0day-ci/linux/commit/18d43c75e6489f1e8485d8f4e809d83bbc179326 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Jason-Ekstrand/drm-i915-gem-ioctl-clean-ups-v6/20210616-151016 git checkout 18d43c75e6489f1e8485d8f4e809d83bbc179326 # save the attached .config to linux build tree make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) >> drivers/gpu/drm/i915/gem/i915_gem_context.c:1412:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct i915_address_space *vm @@ got struct i915_address_space [noderef] __rcu *vm @@ drivers/gpu/drm/i915/gem/i915_gem_context.c:1412:34: sparse: expected struct i915_address_space *vm drivers/gpu/drm/i915/gem/i915_gem_context.c:1412:34: sparse: got struct i915_address_space [noderef] __rcu *vm drivers/gpu/drm/i915/gem/i915_gem_context.c: note: in included file: >> drivers/gpu/drm/i915/gem/selftests/mock_context.c:43:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct i915_address_space [noderef] __rcu *vm @@ got struct i915_address_space * @@ drivers/gpu/drm/i915/gem/selftests/mock_context.c:43:25: sparse: expected struct i915_address_space [noderef] __rcu *vm drivers/gpu/drm/i915/gem/selftests/mock_context.c:43:25: sparse: got struct i915_address_space * >> drivers/gpu/drm/i915/gem/selftests/mock_context.c:60:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct i915_address_space *vm @@ got struct i915_address_space [noderef] __rcu *vm @@ drivers/gpu/drm/i915/gem/selftests/mock_context.c:60:34: sparse: expected struct i915_address_space *vm drivers/gpu/drm/i915/gem/selftests/mock_context.c:60:34: sparse: got struct i915_address_space [noderef] __rcu *vm vim +1412 drivers/gpu/drm/i915/gem/i915_gem_context.c 1324 1325 static struct i915_gem_context * 1326 i915_gem_create_context(struct drm_i915_private *i915, 1327 const struct i915_gem_proto_context *pc) 1328 { 1329 struct i915_gem_context *ctx; 1330 struct i915_address_space *vm = NULL; 1331 struct i915_gem_engines *e; 1332 int err; 1333 int i; 1334 1335 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); 1336 if (!ctx) 1337 return ERR_PTR(-ENOMEM); 1338 1339 kref_init(&ctx->ref); 1340 ctx->i915 = i915; 1341 ctx->sched = pc->sched; 1342 mutex_init(&ctx->mutex); 1343 INIT_LIST_HEAD(&ctx->link); 1344 1345 spin_lock_init(&ctx->stale.lock); 1346 INIT_LIST_HEAD(&ctx->stale.engines); 1347 1348 if (pc->vm) { 1349 vm = i915_vm_get(pc->vm); 1350 } else if (HAS_FULL_PPGTT(i915)) { 1351 struct i915_ppgtt *ppgtt; 1352 1353 ppgtt = i915_ppgtt_create(&i915->gt); 1354 if (IS_ERR(ppgtt)) { 1355 drm_dbg(&i915->drm, "PPGTT setup failed (%ld)\n", 1356 PTR_ERR(ppgtt)); 1357 err = PTR_ERR(ppgtt); 1358 goto err_ctx; 1359 } 1360 vm = &ppgtt->vm; 1361 } 1362 if (vm) { 1363 RCU_INIT_POINTER(ctx->vm, i915_vm_open(vm)); 1364 1365 /* i915_vm_open() takes a reference */ 1366 i915_vm_put(vm); 1367 } 1368 1369 mutex_init(&ctx->engines_mutex); 1370 if (pc->num_user_engines >= 0) { 1371 i915_gem_context_set_user_engines(ctx); 1372 e = user_engines(ctx, pc->num_user_engines, pc->user_engines); 1373 } else { 1374 i915_gem_context_clear_user_engines(ctx); 1375 e = default_engines(ctx, pc->legacy_rcs_sseu); 1376 } 1377 if (IS_ERR(e)) { 1378 err = PTR_ERR(e); 1379 goto err_vm; 1380 } 1381 RCU_INIT_POINTER(ctx->engines, e); 1382 1383 INIT_RADIX_TREE(&ctx->handles_vma, GFP_KERNEL); 1384 mutex_init(&ctx->lut_mutex); 1385 1386 /* NB: Mark all slices as needing a remap so that when the context first 1387 * loads it will restore whatever remap state already exists. If there 1388 * is no remap info, it will be a NOP. */ 1389 ctx->remap_slice = ALL_L3_SLICES(i915); 1390 1391 ctx->user_flags = pc->user_flags; 1392 1393 for (i = 0; i < ARRAY_SIZE(ctx->hang_timestamp); i++) 1394 ctx->hang_timestamp[i] = jiffies - CONTEXT_FAST_HANG_JIFFIES; 1395 1396 if (pc->single_timeline) { 1397 err = drm_syncobj_create(&ctx->syncobj, 1398 DRM_SYNCOBJ_CREATE_SIGNALED, 1399 NULL); 1400 if (err) 1401 goto err_engines; 1402 } 1403 1404 trace_i915_context_create(ctx); 1405 1406 return ctx; 1407 1408 err_engines: 1409 free_engines(e); 1410 err_vm: 1411 if (ctx->vm) > 1412 i915_vm_close(ctx->vm); 1413 err_ctx: 1414 kfree(ctx); 1415 return ERR_PTR(err); 1416 } 1417 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org