drm/amd/powerplay: support uclk activity retrieve on sw smu routine
authorEvan Quan <evan.quan@amd.com>
Tue, 14 May 2019 02:38:42 +0000 (10:38 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 24 May 2019 17:20:59 +0000 (12:20 -0500)
Support realtime uclk activity report.

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/powerplay/smu_v11_0.c

index c139f5f754648a08d502b84a5d92f047812706d4..93ad3997becc158c26cc3c4a7a796599b202f3f2 100644 (file)
@@ -1123,6 +1123,7 @@ static int smu_v11_0_get_metrics_table(struct smu_context *smu,
 }
 
 static int smu_v11_0_get_current_activity_percent(struct smu_context *smu,
+                                                 enum amd_pp_sensors sensor,
                                                  uint32_t *value)
 {
        int ret = 0;
@@ -1135,7 +1136,17 @@ static int smu_v11_0_get_current_activity_percent(struct smu_context *smu,
        if (ret)
                return ret;
 
-       *value = metrics.AverageGfxActivity;
+       switch (sensor) {
+       case AMDGPU_PP_SENSOR_GPU_LOAD:
+               *value = metrics.AverageGfxActivity;
+               break;
+       case AMDGPU_PP_SENSOR_MEM_LOAD:
+               *value = metrics.AverageUclkActivity;
+               break;
+       default:
+               pr_err("Invalid sensor for retrieving clock activity\n");
+               return -EINVAL;
+       }
 
        return 0;
 }
@@ -1210,7 +1221,9 @@ static int smu_v11_0_read_sensor(struct smu_context *smu,
        int ret = 0;
        switch (sensor) {
        case AMDGPU_PP_SENSOR_GPU_LOAD:
+       case AMDGPU_PP_SENSOR_MEM_LOAD:
                ret = smu_v11_0_get_current_activity_percent(smu,
+                                                            sensor,
                                                             (uint32_t *)data);
                *size = 4;
                break;