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

2023-01-31 Thread kernel test robot
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-...@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 

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`. 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

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

2023-01-30 Thread Maíra Canal
The struct drm_debugfs_files encapsulates all the debugfs-related
objects, so that they can be initialized and destroyed with two helpers.
Therefore, make the struct drm_device use the struct drm_debugfs_files
instead of instantiating the debugfs list and mutex separated.

Signed-off-by: Maíra Canal 
---
 drivers/gpu/drm/drm_debugfs.c | 10 +-
 drivers/gpu/drm/drm_drv.c |  7 ---
 include/drm/drm_device.h  | 12 +++-
 3 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index 8658d3929ea5..aa83f230c402 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -263,7 +263,7 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id,
if (dev->driver->debugfs_init)
dev->driver->debugfs_init(minor);
 
-   list_for_each_entry_safe(entry, tmp, &dev->debugfs_list, list) {
+   list_for_each_entry_safe(entry, tmp, &dev->debugfs_files->list, list) {
debugfs_create_file(entry->file.name, 0444,
minor->debugfs_root, entry, 
&drm_debugfs_entry_fops);
list_del(&entry->list);
@@ -280,7 +280,7 @@ void drm_debugfs_late_register(struct drm_device *dev)
if (!minor)
return;
 
-   list_for_each_entry_safe(entry, tmp, &dev->debugfs_list, list) {
+   list_for_each_entry_safe(entry, tmp, &dev->debugfs_files->list, list) {
debugfs_create_file(entry->file.name, 0444,
minor->debugfs_root, entry, 
&drm_debugfs_entry_fops);
list_del(&entry->list);
@@ -357,9 +357,9 @@ void drm_debugfs_add_file(struct drm_device *dev, const 
char *name,
entry->file.data = data;
entry->dev = dev;
 
-   mutex_lock(&dev->debugfs_mutex);
-   list_add(&entry->list, &dev->debugfs_list);
-   mutex_unlock(&dev->debugfs_mutex);
+   mutex_lock(&dev->debugfs_files->mutex);
+   list_add(&entry->list, &dev->debugfs_files->list);
+   mutex_unlock(&dev->debugfs_files->mutex);
 }
 EXPORT_SYMBOL(drm_debugfs_add_file);
 
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index c6eb8972451a..50812cbe1d81 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -39,6 +39,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -598,7 +599,7 @@ static void drm_dev_init_release(struct drm_device *dev, 
void *res)
mutex_destroy(&dev->clientlist_mutex);
mutex_destroy(&dev->filelist_mutex);
mutex_destroy(&dev->struct_mutex);
-   mutex_destroy(&dev->debugfs_mutex);
+   drm_debugfs_files_destroy(dev->debugfs_files);
drm_legacy_destroy_members(dev);
 }
 
@@ -639,14 +640,14 @@ static int drm_dev_init(struct drm_device *dev,
INIT_LIST_HEAD(&dev->filelist_internal);
INIT_LIST_HEAD(&dev->clientlist);
INIT_LIST_HEAD(&dev->vblank_event_list);
-   INIT_LIST_HEAD(&dev->debugfs_list);
 
spin_lock_init(&dev->event_lock);
mutex_init(&dev->struct_mutex);
mutex_init(&dev->filelist_mutex);
mutex_init(&dev->clientlist_mutex);
mutex_init(&dev->master_mutex);
-   mutex_init(&dev->debugfs_mutex);
+
+   dev->debugfs_files = drm_debugfs_files_init();
 
ret = drmm_add_action_or_reset(dev, drm_dev_init_release, NULL);
if (ret)
diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h
index 7cf4afae2e79..77290f4a06ff 100644
--- a/include/drm/drm_device.h
+++ b/include/drm/drm_device.h
@@ -16,6 +16,7 @@ struct drm_vblank_crtc;
 struct drm_vma_offset_manager;
 struct drm_vram_mm;
 struct drm_fb_helper;
+struct drm_debugfs_files;
 
 struct inode;
 
@@ -312,19 +313,12 @@ struct drm_device {
struct drm_fb_helper *fb_helper;
 
/**
-* @debugfs_mutex:
-*
-* Protects &debugfs_list access.
-*/
-   struct mutex debugfs_mutex;
-
-   /**
-* @debugfs_list:
+* @debugfs_files:
 *
 * List of debugfs files to be created by the DRM device. The files
 * must be added during drm_dev_register().
 */
-   struct list_head debugfs_list;
+   struct drm_debugfs_files *debugfs_files;
 
/* Everything below here is for legacy driver, never use! */
/* private: */
-- 
2.39.1