Avoids ugly hacks in drivers debugfs code, if it depends on dev->dev_private having already been initialized. Signed-off-by: Rob Clark <robdclark@xxxxxxxxx> --- Some cleanup that Daniel Vetter wants to do may make this unnecessary in the future, but in order to unblock some msm patches that I'd like to send for 3.16, I propose this patch. If no objections, I could include this in msm pull req. drivers/gpu/drm/drm_debugfs.c | 15 +++++++++------ drivers/gpu/drm/drm_stub.c | 24 ++++++++++++++++++------ include/drm/drmP.h | 6 ++---- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c index b4b51d4..231d1ab 100644 --- a/drivers/gpu/drm/drm_debugfs.c +++ b/drivers/gpu/drm/drm_debugfs.c @@ -134,23 +134,26 @@ EXPORT_SYMBOL(drm_debugfs_create_files); * Initialize the DRI debugfs filesystem for a device * * \param dev DRM device - * \param minor device minor number - * \param root DRI debugfs dir entry. * * Create the DRI debugfs root entry "/sys/kernel/debug/dri", the device debugfs root entry * "/sys/kernel/debug/dri/%minor%/", and each entry in debugfs_list as * "/sys/kernel/debug/dri/%minor%/%name%". */ -int drm_debugfs_init(struct drm_minor *minor, int minor_id, - struct dentry *root) +int drm_debugfs_init(struct drm_minor *minor) { - struct drm_device *dev = minor->dev; + struct drm_device *dev; + struct dentry *root = drm_debugfs_root; char name[64]; int ret; + if (!minor) + return 0; + + dev = minor->dev; + INIT_LIST_HEAD(&minor->debugfs_list); mutex_init(&minor->debugfs_lock); - sprintf(name, "%d", minor_id); + sprintf(name, "%d", minor->index); minor->debugfs_root = debugfs_create_dir(name, root); if (!minor->debugfs_root) { DRM_ERROR("Cannot create /sys/kernel/debug/dri/%s\n", name); diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c index 3727ac8..94e3742 100644 --- a/drivers/gpu/drm/drm_stub.c +++ b/drivers/gpu/drm/drm_stub.c @@ -328,12 +328,6 @@ static int drm_minor_register(struct drm_device *dev, unsigned int type) new_minor->index = minor_id; - ret = drm_debugfs_init(new_minor, minor_id, drm_debugfs_root); - if (ret) { - DRM_ERROR("DRM: Failed to initialize /sys/kernel/debug/dri.\n"); - goto err_id; - } - ret = drm_sysfs_device_add(new_minor); if (ret) { DRM_ERROR("DRM: Error sysfs_device_add.\n"); @@ -723,6 +717,24 @@ int drm_dev_register(struct drm_device *dev, unsigned long flags) goto err_minors; } + ret = drm_debugfs_init(dev->control); + if (ret) { + DRM_ERROR("DRM: Failed to initialize /sys/kernel/debug/dri.\n"); + goto err_minors; + } + + ret = drm_debugfs_init(dev->render); + if (ret) { + DRM_ERROR("DRM: Failed to initialize /sys/kernel/debug/dri.\n"); + goto err_minors; + } + + ret = drm_debugfs_init(dev->primary); + if (ret) { + DRM_ERROR("DRM: Failed to initialize /sys/kernel/debug/dri.\n"); + goto err_minors; + } + /* setup grouping for legacy outputs */ if (drm_core_check_feature(dev, DRIVER_MODESET)) { ret = drm_mode_group_init_legacy_group(dev, diff --git a/include/drm/drmP.h b/include/drm/drmP.h index 12f10bc..76e6e03 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h @@ -1409,8 +1409,7 @@ extern struct drm_local_map *drm_getsarea(struct drm_device *dev); /* Debugfs support */ #if defined(CONFIG_DEBUG_FS) -extern int drm_debugfs_init(struct drm_minor *minor, int minor_id, - struct dentry *root); +extern int drm_debugfs_init(struct drm_minor *minor); extern int drm_debugfs_create_files(const struct drm_info_list *files, int count, struct dentry *root, struct drm_minor *minor); @@ -1418,8 +1417,7 @@ extern int drm_debugfs_remove_files(const struct drm_info_list *files, int count, struct drm_minor *minor); extern int drm_debugfs_cleanup(struct drm_minor *minor); #else -static inline int drm_debugfs_init(struct drm_minor *minor, int minor_id, - struct dentry *root) +static inline int drm_debugfs_init(struct drm_minor *minor) { return 0; } -- 1.9.3 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel