Re: [PATCH 29/31] drm/i915/gem: Roll all of context creation together

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <lkp@xxxxxxxxx>


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@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux