[PATCH v2 2/6] drm/debugfs: Make drm_device use the struct drm_debugfs_files

kernel test robot lkp at intel.com
Tue Jan 31 17:15:11 UTC 2023


Hi Maíra,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on drm-intel/for-linux-next drm-tip/drm-tip next-20230131]
[cannot apply to drm-intel/for-linux-next-fixes linus/master v6.2-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#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    https://lore.kernel.org/r/20230130123008.287141-3-mcanal%40igalia.com
patch subject: [PATCH v2 2/6] drm/debugfs: Make drm_device use the struct drm_debugfs_files
config: arc-randconfig-r043-20230129 (https://download.01.org/0day-ci/archive/20230201/202302010102.Zlw3VTYI-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 12.1.0
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
        # https://github.com/intel-lab-lkp/linux/commit/776660a442d9112d8fbc06b0b8b0b77852b18fca
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
        git checkout 776660a442d9112d8fbc06b0b8b0b77852b18fca
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arc olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arc SHELL=/bin/bash drivers/gpu/drm/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp at intel.com>

All error/warnings (new ones prefixed by >>):

   drivers/gpu/drm/drm_drv.c: In function 'drm_dev_init_release':
>> drivers/gpu/drm/drm_drv.c:602:9: error: implicit declaration of function 'drm_debugfs_files_destroy'; did you mean 'drm_debugfs_list_destroy'? [-Werror=implicit-function-declaration]
     602 |         drm_debugfs_files_destroy(dev->debugfs_files);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~
         |         drm_debugfs_list_destroy
   drivers/gpu/drm/drm_drv.c: In function 'drm_dev_init':
>> drivers/gpu/drm/drm_drv.c:650:30: error: implicit declaration of function 'drm_debugfs_files_init'; did you mean 'drm_debugfs_list_init'? [-Werror=implicit-function-declaration]
     650 |         dev->debugfs_files = drm_debugfs_files_init();
         |                              ^~~~~~~~~~~~~~~~~~~~~~
         |                              drm_debugfs_list_init
>> drivers/gpu/drm/drm_drv.c:650:28: warning: assignment to 'struct drm_debugfs_files *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     650 |         dev->debugfs_files = drm_debugfs_files_init();
         |                            ^
   cc1: some warnings being treated as errors


vim +602 drivers/gpu/drm/drm_drv.c

   562	
   563	/**
   564	 * DOC: component helper usage recommendations
   565	 *
   566	 * DRM drivers that drive hardware where a logical device consists of a pile of
   567	 * independent hardware blocks are recommended to use the :ref:`component helper
   568	 * library<component>`. For consistency and better options for code reuse the
   569	 * following guidelines apply:
   570	 *
   571	 *  - The entire device initialization procedure should be run from the
   572	 *    &component_master_ops.master_bind callback, starting with
   573	 *    devm_drm_dev_alloc(), then binding all components with
   574	 *    component_bind_all() and finishing with drm_dev_register().
   575	 *
   576	 *  - The opaque pointer passed to all components through component_bind_all()
   577	 *    should point at &struct drm_device of the device instance, not some driver
   578	 *    specific private structure.
   579	 *
   580	 *  - The component helper fills the niche where further standardization of
   581	 *    interfaces is not practical. When there already is, or will be, a
   582	 *    standardized interface like &drm_bridge or &drm_panel, providing its own
   583	 *    functions to find such components at driver load time, like
   584	 *    drm_of_find_panel_or_bridge(), then the component helper should not be
   585	 *    used.
   586	 */
   587	
   588	static void drm_dev_init_release(struct drm_device *dev, void *res)
   589	{
   590		drm_legacy_ctxbitmap_cleanup(dev);
   591		drm_legacy_remove_map_hash(dev);
   592		drm_fs_inode_free(dev->anon_inode);
   593	
   594		put_device(dev->dev);
   595		/* Prevent use-after-free in drm_managed_release when debugging is
   596		 * enabled. Slightly awkward, but can't really be helped. */
   597		dev->dev = NULL;
   598		mutex_destroy(&dev->master_mutex);
   599		mutex_destroy(&dev->clientlist_mutex);
   600		mutex_destroy(&dev->filelist_mutex);
   601		mutex_destroy(&dev->struct_mutex);
 > 602		drm_debugfs_files_destroy(dev->debugfs_files);
   603		drm_legacy_destroy_members(dev);
   604	}
   605	
   606	static int drm_dev_init(struct drm_device *dev,
   607				const struct drm_driver *driver,
   608				struct device *parent)
   609	{
   610		struct inode *inode;
   611		int ret;
   612	
   613		if (!drm_core_init_complete) {
   614			DRM_ERROR("DRM core is not initialized\n");
   615			return -ENODEV;
   616		}
   617	
   618		if (WARN_ON(!parent))
   619			return -EINVAL;
   620	
   621		kref_init(&dev->ref);
   622		dev->dev = get_device(parent);
   623		dev->driver = driver;
   624	
   625		INIT_LIST_HEAD(&dev->managed.resources);
   626		spin_lock_init(&dev->managed.lock);
   627	
   628		/* no per-device feature limits by default */
   629		dev->driver_features = ~0u;
   630	
   631		if (drm_core_check_feature(dev, DRIVER_COMPUTE_ACCEL) &&
   632					(drm_core_check_feature(dev, DRIVER_RENDER) ||
   633					drm_core_check_feature(dev, DRIVER_MODESET))) {
   634			DRM_ERROR("DRM driver can't be both a compute acceleration and graphics driver\n");
   635			return -EINVAL;
   636		}
   637	
   638		drm_legacy_init_members(dev);
   639		INIT_LIST_HEAD(&dev->filelist);
   640		INIT_LIST_HEAD(&dev->filelist_internal);
   641		INIT_LIST_HEAD(&dev->clientlist);
   642		INIT_LIST_HEAD(&dev->vblank_event_list);
   643	
   644		spin_lock_init(&dev->event_lock);
   645		mutex_init(&dev->struct_mutex);
   646		mutex_init(&dev->filelist_mutex);
   647		mutex_init(&dev->clientlist_mutex);
   648		mutex_init(&dev->master_mutex);
   649	
 > 650		dev->debugfs_files = drm_debugfs_files_init();
   651	
   652		ret = drmm_add_action_or_reset(dev, drm_dev_init_release, NULL);
   653		if (ret)
   654			return ret;
   655	
   656		inode = drm_fs_inode_new();
   657		if (IS_ERR(inode)) {
   658			ret = PTR_ERR(inode);
   659			DRM_ERROR("Cannot allocate anonymous inode: %d\n", ret);
   660			goto err;
   661		}
   662	
   663		dev->anon_inode = inode;
   664	
   665		if (drm_core_check_feature(dev, DRIVER_COMPUTE_ACCEL)) {
   666			ret = drm_minor_alloc(dev, DRM_MINOR_ACCEL);
   667			if (ret)
   668				goto err;
   669		} else {
   670			if (drm_core_check_feature(dev, DRIVER_RENDER)) {
   671				ret = drm_minor_alloc(dev, DRM_MINOR_RENDER);
   672				if (ret)
   673					goto err;
   674			}
   675	
   676			ret = drm_minor_alloc(dev, DRM_MINOR_PRIMARY);
   677			if (ret)
   678				goto err;
   679		}
   680	
   681		ret = drm_legacy_create_map_hash(dev);
   682		if (ret)
   683			goto err;
   684	
   685		drm_legacy_ctxbitmap_init(dev);
   686	
   687		if (drm_core_check_feature(dev, DRIVER_GEM)) {
   688			ret = drm_gem_init(dev);
   689			if (ret) {
   690				DRM_ERROR("Cannot initialize graphics execution manager (GEM)\n");
   691				goto err;
   692			}
   693		}
   694	
   695		ret = drm_dev_set_unique(dev, dev_name(parent));
   696		if (ret)
   697			goto err;
   698	
   699		return 0;
   700	
   701	err:
   702		drm_managed_release(dev);
   703	
   704		return ret;
   705	}
   706	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests


More information about the dri-devel mailing list