This way we can create debugfs files directly, even between init and register. Signed-off-by: Christian König <christian.koenig@xxxxxxx> --- 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