[Intel-gfx] [PATCH] drm/i915/gem: Allow importing of shmemfs objects into any device

kernel test robot lkp at intel.com
Wed Jan 20 20:53:13 UTC 2021


Hi Chris,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-tip/drm-tip v5.11-rc4 next-20210120]
[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/Chris-Wilson/drm-i915-gem-Allow-importing-of-shmemfs-objects-into-any-device/20210120-234237
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: i386-randconfig-a013-20210120 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
        # https://github.com/0day-ci/linux/commit/ce377384dec1c18f1af3558d5d4624d300d160c4
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Chris-Wilson/drm-i915-gem-Allow-importing-of-shmemfs-objects-into-any-device/20210120-234237
        git checkout ce377384dec1c18f1af3558d5d4624d300d160c4
        # 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 <lkp at intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c: In function 'i915_gem_prime_import':
>> drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c:250:7: error: implicit declaration of function 'i915_gem_object_is_shmem'; did you mean 'i915_gem_object_is_tiled'? [-Werror=implicit-function-declaration]
     250 |   if (i915_gem_object_is_shmem(obj))
         |       ^~~~~~~~~~~~~~~~~~~~~~~~
         |       i915_gem_object_is_tiled
   cc1: some warnings being treated as errors


vim +250 drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c

   225	
   226	struct drm_gem_object *i915_gem_prime_import(struct drm_device *dev,
   227						     struct dma_buf *dma_buf)
   228	{
   229		static struct lock_class_key lock_class;
   230		struct dma_buf_attachment *attach;
   231		struct drm_i915_gem_object *obj;
   232		int ret;
   233	
   234		/* is this one of own objects? */
   235		if (dma_buf->ops == &i915_dmabuf_ops) {
   236			obj = dma_buf_to_obj(dma_buf);
   237			/* is it from our device? */
   238			if (obj->base.dev == dev) {
   239				/*
   240				 * Importing dmabuf exported from out own gem increases
   241				 * refcount on gem itself instead of f_count of dmabuf.
   242				 */
   243				return &i915_gem_object_get(obj)->base;
   244			}
   245	
   246			/*
   247			 * If the object is in plain system memory, we can reuse the
   248			 * same backing store in any device.
   249			 */
 > 250			if (i915_gem_object_is_shmem(obj))
   251				return &i915_gem_object_get(obj)->base;
   252		}
   253	
   254		/* need to attach */
   255		attach = dma_buf_attach(dma_buf, dev->dev);
   256		if (IS_ERR(attach))
   257			return ERR_CAST(attach);
   258	
   259		get_dma_buf(dma_buf);
   260	
   261		obj = i915_gem_object_alloc();
   262		if (obj == NULL) {
   263			ret = -ENOMEM;
   264			goto fail_detach;
   265		}
   266	
   267		drm_gem_private_object_init(dev, &obj->base, dma_buf->size);
   268		i915_gem_object_init(obj, &i915_gem_object_dmabuf_ops, &lock_class);
   269		obj->base.import_attach = attach;
   270		obj->base.resv = dma_buf->resv;
   271	
   272		/* We use GTT as shorthand for a coherent domain, one that is
   273		 * neither in the GPU cache nor in the CPU cache, where all
   274		 * writes are immediately visible in memory. (That's not strictly
   275		 * true, but it's close! There are internal buffers such as the
   276		 * write-combined buffer or a delay through the chipset for GTT
   277		 * writes that do require us to treat GTT as a separate cache domain.)
   278		 */
   279		obj->read_domains = I915_GEM_DOMAIN_GTT;
   280		obj->write_domain = 0;
   281	
   282		return &obj->base;
   283	
   284	fail_detach:
   285		dma_buf_detach(dma_buf, attach);
   286		dma_buf_put(dma_buf);
   287	
   288		return ERR_PTR(ret);
   289	}
   290	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 34782 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/intel-gfx/attachments/20210121/5a16975a/attachment-0001.gz>


More information about the Intel-gfx mailing list