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.

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