The debugfs_init callback is called from drm_debugfs_register during
drm_minor_register, before dev->registered is set to true. Move it to
drm_dev_register after dev->registered = true so that callbacks see a
fully registered device.

Signed-off-by: Alvin Sun <[email protected]>
---
 drivers/gpu/drm/drm_debugfs.c | 3 ---
 drivers/gpu/drm/drm_drv.c     | 5 +++++
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index ae1c6126c2c59..38cf6ce387cc8 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -442,9 +442,6 @@ int drm_debugfs_register(struct drm_minor *minor, int 
minor_id)
        /* TODO: Only for compatibility with drivers */
        minor->debugfs_root = dev->debugfs_root;
 
-       if (dev->driver->debugfs_init && dev->render != minor)
-               dev->driver->debugfs_init(minor);
-
        return 0;
 }
 
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index e890052061f30..15669764fe625 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -1101,6 +1101,11 @@ int drm_dev_register(struct drm_device *dev, unsigned 
long flags)
        dev->registered = true;
        dev->unplugged = false;
 
+       /* Call debugfs_init after the device is fully registered. */
+       if (dev->driver->debugfs_init && dev->primary &&
+           dev->render != dev->primary)
+               dev->driver->debugfs_init(dev->primary);
+
        if (driver->load) {
                ret = driver->load(dev, flags);
                if (ret)

-- 
2.43.0


Reply via email to