[PATCH v2 2/4] drm/prime: Helper to export dmabuf without fd
kernel test robot
lkp at intel.com
Wed Nov 22 14:48:46 UTC 2023
Hi Felix,
kernel test robot noticed the following build warnings:
[auto build test WARNING on drm-misc/drm-misc-next]
[also build test WARNING on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.7-rc2 next-20231122]
[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#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Felix-Kuehling/drm-prime-Helper-to-export-dmabuf-without-fd/20231122-071410
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/20231121231114.703478-2-Felix.Kuehling%40amd.com
patch subject: [PATCH v2 2/4] drm/prime: Helper to export dmabuf without fd
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20231122/202311221810.IJ6ELH6c-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231122/202311221810.IJ6ELH6c-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311221810.IJ6ELH6c-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/gpu/drm/drm_prime.c:428: warning: Excess function parameter 'dma_buf' description in 'drm_gem_prime_handle_to_dmabuf'
vim +428 drivers/gpu/drm/drm_prime.c
319c933c71f3db Daniel Vetter 2013-08-15 411
d3977ac8e10a0b Felix Kuehling 2023-11-21 412 /**
f3facd92ee25e0 Felix Kuehling 2023-11-21 413 * drm_gem_prime_handle_to_dmabuf - PRIME export function for GEM drivers
39cc344acd414e Daniel Vetter 2014-01-22 414 * @dev: dev to export the buffer from
39cc344acd414e Daniel Vetter 2014-01-22 415 * @file_priv: drm file-private structure
39cc344acd414e Daniel Vetter 2014-01-22 416 * @handle: buffer handle to export
39cc344acd414e Daniel Vetter 2014-01-22 417 * @flags: flags like DRM_CLOEXEC
f3facd92ee25e0 Felix Kuehling 2023-11-21 418 * @dma_buf: pointer to storage for the dma-buf reference
39cc344acd414e Daniel Vetter 2014-01-22 419 *
39cc344acd414e Daniel Vetter 2014-01-22 420 * This is the PRIME export function which must be used mandatorily by GEM
39cc344acd414e Daniel Vetter 2014-01-22 421 * drivers to ensure correct lifetime management of the underlying GEM object.
39cc344acd414e Daniel Vetter 2014-01-22 422 * The actual exporting from GEM object to a dma-buf is done through the
d693def4fd1c23 Thomas Zimmermann 2020-09-23 423 * &drm_gem_object_funcs.export callback.
39cc344acd414e Daniel Vetter 2014-01-22 424 */
f3facd92ee25e0 Felix Kuehling 2023-11-21 425 struct dma_buf *drm_gem_prime_handle_to_dmabuf(struct drm_device *dev,
f3facd92ee25e0 Felix Kuehling 2023-11-21 426 struct drm_file *file_priv,
f3facd92ee25e0 Felix Kuehling 2023-11-21 427 uint32_t handle, uint32_t flags)
3248877ea17969 Dave Airlie 2011-11-25 @428 {
3248877ea17969 Dave Airlie 2011-11-25 429 struct drm_gem_object *obj;
219b47339ced80 Dave Airlie 2013-04-22 430 int ret = 0;
f3facd92ee25e0 Felix Kuehling 2023-11-21 431 struct dma_buf *dmabuf = NULL;
3248877ea17969 Dave Airlie 2011-11-25 432
d0b2c5334f41bd Daniel Vetter 2013-08-15 433 mutex_lock(&file_priv->prime.lock);
a8ad0bd84f9860 Chris Wilson 2016-05-09 434 obj = drm_gem_object_lookup(file_priv, handle);
d0b2c5334f41bd Daniel Vetter 2013-08-15 435 if (!obj) {
d0b2c5334f41bd Daniel Vetter 2013-08-15 436 ret = -ENOENT;
d0b2c5334f41bd Daniel Vetter 2013-08-15 437 goto out_unlock;
d0b2c5334f41bd Daniel Vetter 2013-08-15 438 }
d0b2c5334f41bd Daniel Vetter 2013-08-15 439
d0b2c5334f41bd Daniel Vetter 2013-08-15 440 dmabuf = drm_prime_lookup_buf_by_handle(&file_priv->prime, handle);
d0b2c5334f41bd Daniel Vetter 2013-08-15 441 if (dmabuf) {
d0b2c5334f41bd Daniel Vetter 2013-08-15 442 get_dma_buf(dmabuf);
f3facd92ee25e0 Felix Kuehling 2023-11-21 443 goto out;
d0b2c5334f41bd Daniel Vetter 2013-08-15 444 }
3248877ea17969 Dave Airlie 2011-11-25 445
d0b2c5334f41bd Daniel Vetter 2013-08-15 446 mutex_lock(&dev->object_name_lock);
3248877ea17969 Dave Airlie 2011-11-25 447 /* re-export the original imported object */
3248877ea17969 Dave Airlie 2011-11-25 448 if (obj->import_attach) {
219b47339ced80 Dave Airlie 2013-04-22 449 dmabuf = obj->import_attach->dmabuf;
319c933c71f3db Daniel Vetter 2013-08-15 450 get_dma_buf(dmabuf);
219b47339ced80 Dave Airlie 2013-04-22 451 goto out_have_obj;
3248877ea17969 Dave Airlie 2011-11-25 452 }
3248877ea17969 Dave Airlie 2011-11-25 453
319c933c71f3db Daniel Vetter 2013-08-15 454 if (obj->dma_buf) {
319c933c71f3db Daniel Vetter 2013-08-15 455 get_dma_buf(obj->dma_buf);
319c933c71f3db Daniel Vetter 2013-08-15 456 dmabuf = obj->dma_buf;
219b47339ced80 Dave Airlie 2013-04-22 457 goto out_have_obj;
219b47339ced80 Dave Airlie 2013-04-22 458 }
219b47339ced80 Dave Airlie 2013-04-22 459
319c933c71f3db Daniel Vetter 2013-08-15 460 dmabuf = export_and_register_object(dev, obj, flags);
4332bf438bbbc3 Daniel Vetter 2013-08-15 461 if (IS_ERR(dmabuf)) {
3248877ea17969 Dave Airlie 2011-11-25 462 /* normally the created dma-buf takes ownership of the ref,
3248877ea17969 Dave Airlie 2011-11-25 463 * but if that fails then drop the ref
3248877ea17969 Dave Airlie 2011-11-25 464 */
4332bf438bbbc3 Daniel Vetter 2013-08-15 465 ret = PTR_ERR(dmabuf);
d0b2c5334f41bd Daniel Vetter 2013-08-15 466 mutex_unlock(&dev->object_name_lock);
219b47339ced80 Dave Airlie 2013-04-22 467 goto out;
3248877ea17969 Dave Airlie 2011-11-25 468 }
219b47339ced80 Dave Airlie 2013-04-22 469
d0b2c5334f41bd Daniel Vetter 2013-08-15 470 out_have_obj:
d0b2c5334f41bd Daniel Vetter 2013-08-15 471 /*
d0b2c5334f41bd Daniel Vetter 2013-08-15 472 * If we've exported this buffer then cheat and add it to the import list
d0b2c5334f41bd Daniel Vetter 2013-08-15 473 * so we get the correct handle back. We must do this under the
d0b2c5334f41bd Daniel Vetter 2013-08-15 474 * protection of dev->object_name_lock to ensure that a racing gem close
d0b2c5334f41bd Daniel Vetter 2013-08-15 475 * ioctl doesn't miss to remove this buffer handle from the cache.
0ff926c7d4f06f Dave Airlie 2012-05-20 476 */
219b47339ced80 Dave Airlie 2013-04-22 477 ret = drm_prime_add_buf_handle(&file_priv->prime,
319c933c71f3db Daniel Vetter 2013-08-15 478 dmabuf, handle);
d0b2c5334f41bd Daniel Vetter 2013-08-15 479 mutex_unlock(&dev->object_name_lock);
219b47339ced80 Dave Airlie 2013-04-22 480 if (ret)
4332bf438bbbc3 Daniel Vetter 2013-08-15 481 dma_buf_put(dmabuf);
219b47339ced80 Dave Airlie 2013-04-22 482 out:
be6ee102341bc4 Emil Velikov 2020-05-15 483 drm_gem_object_put(obj);
d0b2c5334f41bd Daniel Vetter 2013-08-15 484 out_unlock:
d0b2c5334f41bd Daniel Vetter 2013-08-15 485 mutex_unlock(&file_priv->prime.lock);
d0b2c5334f41bd Daniel Vetter 2013-08-15 486
f3facd92ee25e0 Felix Kuehling 2023-11-21 487 return ret ? ERR_PTR(ret) : dmabuf;
b283e92a2315f9 Daniel Vetter 2019-06-18 488 }
f3facd92ee25e0 Felix Kuehling 2023-11-21 489 EXPORT_SYMBOL(drm_gem_prime_handle_to_dmabuf);
b283e92a2315f9 Daniel Vetter 2019-06-18 490
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
More information about the dri-devel
mailing list