drm/msm: don't create GPU-related debugfs files with no GPU present
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Tue, 10 Oct 2023 05:54:25 +0000 (08:54 +0300)
committerRob Clark <robdclark@chromium.org>
Tue, 21 Nov 2023 02:31:42 +0000 (18:31 -0800)
If there is no GPU present, skip creation of the GPU-related debugfs
files, making the MSM's debugfs more usable.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/561742/
Signed-off-by: Rob Clark <robdclark@chromium.org>
drivers/gpu/drm/msm/msm_debugfs.c
drivers/gpu/drm/msm/msm_rd.c

index 04d304eed22371be8686461d1a27a2bc7ccbc1f9..4494f6d1c7cbbced322b9abc53fdadeab6bffec9 100644 (file)
@@ -304,36 +304,21 @@ int msm_debugfs_late_init(struct drm_device *dev)
        return ret;
 }
 
-void msm_debugfs_init(struct drm_minor *minor)
+static void msm_debugfs_gpu_init(struct drm_minor *minor)
 {
        struct drm_device *dev = minor->dev;
        struct msm_drm_private *priv = dev->dev_private;
        struct dentry *gpu_devfreq;
 
-       drm_debugfs_create_files(msm_debugfs_list,
-                                ARRAY_SIZE(msm_debugfs_list),
-                                minor->debugfs_root, minor);
-
        debugfs_create_file("gpu", S_IRUSR, minor->debugfs_root,
                dev, &msm_gpu_fops);
 
-       if (priv->kms) {
-               drm_debugfs_create_files(msm_kms_debugfs_list,
-                                        ARRAY_SIZE(msm_kms_debugfs_list),
-                                        minor->debugfs_root, minor);
-               debugfs_create_file("kms", S_IRUSR, minor->debugfs_root,
-                                   dev, &msm_kms_fops);
-       }
-
        debugfs_create_u32("hangcheck_period_ms", 0600, minor->debugfs_root,
                &priv->hangcheck_period);
 
        debugfs_create_bool("disable_err_irq", 0600, minor->debugfs_root,
                &priv->disable_err_irq);
 
-       debugfs_create_file("shrink", S_IRWXU, minor->debugfs_root,
-               dev, &shrink_fops);
-
        gpu_devfreq = debugfs_create_dir("devfreq", minor->debugfs_root);
 
        debugfs_create_bool("idle_clamp",0600, gpu_devfreq,
@@ -344,6 +329,30 @@ void msm_debugfs_init(struct drm_minor *minor)
 
        debugfs_create_u32("downdifferential",0600, gpu_devfreq,
                           &priv->gpu_devfreq_config.downdifferential);
+}
+
+void msm_debugfs_init(struct drm_minor *minor)
+{
+       struct drm_device *dev = minor->dev;
+       struct msm_drm_private *priv = dev->dev_private;
+
+       drm_debugfs_create_files(msm_debugfs_list,
+                                ARRAY_SIZE(msm_debugfs_list),
+                                minor->debugfs_root, minor);
+
+       if (priv->gpu_pdev)
+               msm_debugfs_gpu_init(minor);
+
+       if (priv->kms) {
+               drm_debugfs_create_files(msm_kms_debugfs_list,
+                                        ARRAY_SIZE(msm_kms_debugfs_list),
+                                        minor->debugfs_root, minor);
+               debugfs_create_file("kms", S_IRUSR, minor->debugfs_root,
+                                   dev, &msm_kms_fops);
+       }
+
+       debugfs_create_file("shrink", S_IRWXU, minor->debugfs_root,
+               dev, &shrink_fops);
 
        if (priv->kms && priv->kms->funcs->debugfs_init)
                priv->kms->funcs->debugfs_init(priv->kms, minor);
index 5adc51f7ab592ddd7d605c3c6061f4eb9b4b0874..ca44fd291c5ba491d2c82ebd76287eb8d1ee4645 100644 (file)
@@ -270,6 +270,9 @@ int msm_rd_debugfs_init(struct drm_minor *minor)
        struct msm_rd_state *rd;
        int ret;
 
+       if (!priv->gpu_pdev)
+               return 0;
+
        /* only create on first minor: */
        if (priv->rd)
                return 0;