On 30.06.25 15:34, Khatri, Sunil wrote: > > 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?
Yes, exactly that. Christian. > > 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