[PATCH 1/3] drm/debugfs: separate debugfs creation into init and register
Christian König
ckoenig.leichtzumerken at gmail.com
Thu Feb 9 08:18:36 UTC 2023
This way we can create debugfs files directly, even between init and register.
Signed-off-by: Christian König <christian.koenig at amd.com>
---
drivers/gpu/drm/drm_debugfs.c | 12 ++++++++----
drivers/gpu/drm/drm_drv.c | 15 +++++++--------
drivers/gpu/drm/drm_internal.h | 1 +
3 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index 4f643a490dc3..2724cac03509 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -221,8 +221,6 @@ EXPORT_SYMBOL(drm_debugfs_create_files);
int drm_debugfs_init(struct drm_minor *minor, int minor_id,
struct dentry *root)
{
- struct drm_device *dev = minor->dev;
- struct drm_debugfs_entry *entry, *tmp;
char name[64];
INIT_LIST_HEAD(&minor->debugfs_list);
@@ -230,6 +228,14 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id,
sprintf(name, "%d", minor_id);
minor->debugfs_root = debugfs_create_dir(name, root);
+ return 0;
+}
+
+void drm_debugfs_register(struct drm_minor *minor)
+{
+ struct drm_device *dev = minor->dev;
+ struct drm_debugfs_entry *entry, *tmp;
+
drm_debugfs_add_files(minor->dev, drm_debugfs_list, DRM_DEBUGFS_ENTRIES);
if (drm_drv_uses_atomic_modeset(dev)) {
@@ -250,8 +256,6 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id,
minor->debugfs_root, entry, &drm_debugfs_entry_fops);
list_del(&entry->list);
}
-
- return 0;
}
void drm_debugfs_late_register(struct drm_device *dev)
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index c6eb8972451a..88ce22c04672 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -156,6 +156,10 @@ static int drm_minor_alloc(struct drm_device *dev, unsigned int type)
if (IS_ERR(minor->kdev))
return PTR_ERR(minor->kdev);
+ r = drm_debugfs_init(minor, minor->index, drm_debugfs_root);
+ if (r)
+ return r;
+
*drm_minor_get_slot(dev, type) = minor;
return 0;
}
@@ -172,15 +176,10 @@ static int drm_minor_register(struct drm_device *dev, unsigned int type)
if (!minor)
return 0;
- if (minor->type == DRM_MINOR_ACCEL) {
+ if (minor->type == DRM_MINOR_ACCEL)
accel_debugfs_init(minor, minor->index);
- } else {
- ret = drm_debugfs_init(minor, minor->index, drm_debugfs_root);
- if (ret) {
- DRM_ERROR("DRM: Failed to initialize /sys/kernel/debug/dri.\n");
- goto err_debugfs;
- }
- }
+ else
+ drm_debugfs_register(minor);
ret = device_add(minor->kdev);
if (ret)
diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h
index ed2103ee272c..332fb65a935a 100644
--- a/drivers/gpu/drm/drm_internal.h
+++ b/drivers/gpu/drm/drm_internal.h
@@ -185,6 +185,7 @@ int drm_gem_dumb_destroy(struct drm_file *file, struct drm_device *dev,
#if defined(CONFIG_DEBUG_FS)
int drm_debugfs_init(struct drm_minor *minor, int minor_id,
struct dentry *root);
+void drm_debugfs_register(struct drm_minor *minor);
void drm_debugfs_cleanup(struct drm_minor *minor);
void drm_debugfs_late_register(struct drm_device *dev);
void drm_debugfs_connector_add(struct drm_connector *connector);
--
2.34.1
More information about the dri-devel
mailing list