drm/amd/powerplay: revise the outputs layout of amdgpu_pm_info debugfs
authorEvan Quan <evan.quan@amd.com>
Tue, 14 Jul 2020 06:25:39 +0000 (14:25 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 27 Jul 2020 20:22:37 +0000 (16:22 -0400)
The current outputs of amdgpu_pm_info debugfs come with clock gating
status and followed by current clock/power information. However the
clock gating status retrieving may pull GFX out of CG status. That
will make the succeeding clock/power information retrieving inaccurate.

To overcome this and be with minimum impact, the outputs are updated
to show current clock/power information first.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c

index 2f7b055..581b2d6 100644 (file)
@@ -4131,14 +4131,6 @@ static int amdgpu_debugfs_pm_info(struct seq_file *m, void *data)
                return r;
        }
 
-       down_read(&adev->reset_sem);
-       amdgpu_device_ip_get_clockgating_state(adev, &flags);
-       up_read(&adev->reset_sem);
-
-       seq_printf(m, "Clock Gating Flags Mask: 0x%x\n", flags);
-       amdgpu_parse_cg_state(m, flags);
-       seq_printf(m, "\n");
-
        if (!adev->pm.dpm_enabled) {
                seq_printf(m, "dpm not enabled\n");
                pm_runtime_mark_last_busy(dev->dev);
@@ -4160,7 +4152,18 @@ static int amdgpu_debugfs_pm_info(struct seq_file *m, void *data)
                r = amdgpu_debugfs_pm_info_pp(m, adev);
        }
        up_read(&adev->reset_sem);
+       if (r)
+               goto out;
+
+       down_read(&adev->reset_sem);
+       amdgpu_device_ip_get_clockgating_state(adev, &flags);
+       up_read(&adev->reset_sem);
+
+       seq_printf(m, "Clock Gating Flags Mask: 0x%x\n", flags);
+       amdgpu_parse_cg_state(m, flags);
+       seq_printf(m, "\n");
 
+out:
        pm_runtime_mark_last_busy(dev->dev);
        pm_runtime_put_autosuspend(dev->dev);