On 6/30/2025 5:11 PM, Christian König wrote:

On 27.06.25 11:49, Sunil Khatri wrote:
move the debugfs functions from drm_drv.c to drm_debugfs.c

move this root node to the debugfs for easily handling
of future requirements to add more information in the
root directory and one of which is planned to have
directories for each client in the root directory
which is dri.

Suggested-by: Christian König <christian.koe...@amd.com>
Signed-off-by: Sunil Khatri <sunil.kha...@amd.com>
---
  drivers/gpu/drm/drm_debugfs.c  | 33 +++++++++++++++++++++++++++------
  drivers/gpu/drm/drm_drv.c      | 19 +++++--------------
  drivers/gpu/drm/drm_internal.h |  6 ++----
  include/drm/drm_drv.h          | 19 +++++++++++++++++--
  4 files changed, 51 insertions(+), 26 deletions(-)

diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index 2d43bda82887..5807dd64d28a 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -44,6 +44,9 @@
  #include "drm_crtc_internal.h"
  #include "drm_internal.h"
+static struct dentry *accel_debugfs_root;
+static struct dentry *drm_debugfs_root;
+
  /***************************************************
   * Initialization, etc.
   **************************************************/
@@ -286,16 +289,35 @@ int drm_debugfs_remove_files(const struct drm_info_list 
*files, int count,
  }
  EXPORT_SYMBOL(drm_debugfs_remove_files);
+void drm_debugfs_init_root(void)
+{
+       drm_debugfs_root = debugfs_create_dir("dri", NULL);
+       accel_debugfs_root = debugfs_create_dir("accel", NULL);
+}
+
+void drm_debugfs_remove_root(void)
+{
+       debugfs_remove(drm_debugfs_root);
+}
+
+void drm_debugfs_remove_accel_root(void)
+{
+       debugfs_remove(accel_debugfs_root);
+}
Those two can be removed together as well I think, apart from that the patch 
looks good to me.
If i got you right you mean to club

drm_debugfs_remove_root and drm_debugfs_remove_accel_root in one function 
drm_debugfs_remove_root?

Regards
Sunil Khatri


Regards,
Christian.

+
+
  /**
   * drm_debugfs_dev_init - create debugfs directory for the device
   * @dev: the device which we want to create the directory for
- * @root: the parent directory depending on the device type
   *
   * Creates the debugfs directory for the device under the given root 
directory.
   */
-void drm_debugfs_dev_init(struct drm_device *dev, struct dentry *root)
+void drm_debugfs_dev_init(struct drm_device *dev)
  {
-       dev->debugfs_root = debugfs_create_dir(dev->unique, root);
+       if (drm_core_check_feature(dev, DRIVER_COMPUTE_ACCEL))
+               dev->debugfs_root = debugfs_create_dir(dev->unique, 
accel_debugfs_root);
+       else
+               dev->debugfs_root = debugfs_create_dir(dev->unique, 
drm_debugfs_root);
  }
/**
@@ -322,14 +344,13 @@ void drm_debugfs_dev_register(struct drm_device *dev)
                drm_atomic_debugfs_init(dev);
  }
-int drm_debugfs_register(struct drm_minor *minor, int minor_id,
-                        struct dentry *root)
+int drm_debugfs_register(struct drm_minor *minor, int minor_id)
  {
        struct drm_device *dev = minor->dev;
        char name[64];
sprintf(name, "%d", minor_id);
-       minor->debugfs_symlink = debugfs_create_symlink(name, root,
+       minor->debugfs_symlink = debugfs_create_symlink(name, drm_debugfs_root,
                                                        dev->unique);
/* TODO: Only for compatibility with drivers */
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index 5d57b622f9aa..68f50d915153 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -69,9 +69,6 @@ DEFINE_XARRAY_ALLOC(drm_minors_xa);
   */
  static bool drm_core_init_complete;
-static struct dentry *drm_debugfs_root;
-static struct dentry *accel_debugfs_root;
-
  DEFINE_STATIC_SRCU(drm_unplug_srcu);
/*
@@ -184,8 +181,7 @@ static int drm_minor_register(struct drm_device *dev, enum 
drm_minor_type type)
                return 0;
if (minor->type != DRM_MINOR_ACCEL) {
-               ret = drm_debugfs_register(minor, minor->index,
-                                          drm_debugfs_root);
+               ret = drm_debugfs_register(minor, minor->index);
                if (ret) {
                        DRM_ERROR("DRM: Failed to initialize 
/sys/kernel/debug/dri.\n");
                        goto err_debugfs;
@@ -752,10 +748,7 @@ static int drm_dev_init(struct drm_device *dev,
                goto err;
        }
- if (drm_core_check_feature(dev, DRIVER_COMPUTE_ACCEL))
-               drm_debugfs_dev_init(dev, accel_debugfs_root);
-       else
-               drm_debugfs_dev_init(dev, drm_debugfs_root);
+       drm_debugfs_dev_init(dev);
return 0; @@ -1167,10 +1160,10 @@ static void drm_core_exit(void)
  {
        drm_privacy_screen_lookup_exit();
        drm_panic_exit();
-       debugfs_remove(accel_debugfs_root);
+       drm_debugfs_remove_accel_root();
        accel_core_exit();
        unregister_chrdev(DRM_MAJOR, "drm");
-       debugfs_remove(drm_debugfs_root);
+       drm_debugfs_remove_root();
        drm_sysfs_destroy();
        WARN_ON(!xa_empty(&drm_minors_xa));
        drm_connector_ida_destroy();
@@ -1189,14 +1182,12 @@ static int __init drm_core_init(void)
                goto error;
        }
- drm_debugfs_root = debugfs_create_dir("dri", NULL);
+       drm_debugfs_init_root();
ret = register_chrdev(DRM_MAJOR, "drm", &drm_stub_fops);
        if (ret < 0)
                goto error;
- accel_debugfs_root = debugfs_create_dir("accel", NULL);
-
        ret = accel_core_init();
        if (ret < 0)
                goto error;
diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h
index b2b6a8e49dda..d2d8e72f32d9 100644
--- a/drivers/gpu/drm/drm_internal.h
+++ b/drivers/gpu/drm/drm_internal.h
@@ -186,8 +186,7 @@ void drm_gem_vunmap(struct drm_gem_object *obj, struct 
iosys_map *map);
  #if defined(CONFIG_DEBUG_FS)
  void drm_debugfs_dev_fini(struct drm_device *dev);
  void drm_debugfs_dev_register(struct drm_device *dev);
-int drm_debugfs_register(struct drm_minor *minor, int minor_id,
-                        struct dentry *root);
+int drm_debugfs_register(struct drm_minor *minor, int minor_id);
  void drm_debugfs_unregister(struct drm_minor *minor);
  void drm_debugfs_connector_add(struct drm_connector *connector);
  void drm_debugfs_connector_remove(struct drm_connector *connector);
@@ -205,8 +204,7 @@ static inline void drm_debugfs_dev_register(struct 
drm_device *dev)
  {
  }
-static inline int drm_debugfs_register(struct drm_minor *minor, int minor_id,
-                                      struct dentry *root)
+static inline int drm_debugfs_register(struct drm_minor *minor, int minor_id)
  {
        return 0;
  }
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index a43d707b5f36..a02bf4885b79 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -566,9 +566,24 @@ static inline bool drm_firmware_drivers_only(void)
  }
#if defined(CONFIG_DEBUG_FS)
-void drm_debugfs_dev_init(struct drm_device *dev, struct dentry *root);
+void drm_debugfs_dev_init(struct drm_device *dev);
+void drm_debugfs_init_root(void);
+void drm_debugfs_remove_root(void);
+void drm_debugfs_remove_accel_root(void);
  #else
-static inline void drm_debugfs_dev_init(struct drm_device *dev, struct dentry 
*root)
+static inline void drm_debugfs_dev_init(struct drm_device *dev)
+{
+}
+
+static inline void drm_debugfs_init_root(void)
+{
+}
+
+static inline void drm_debugfs_remove_root(void)
+{
+}
+
+static inline void drm_debugfs_remove_accel_root(void)
  {
  }
  #endif

Reply via email to