OSDN Git Service

drm/amd/powerplay: expose SMU7 asics realtime memory utilization
authorEvan Quan <evan.quan@amd.com>
Wed, 24 Apr 2019 07:46:50 +0000 (15:46 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 24 May 2019 17:20:48 +0000 (12:20 -0500)
Enable realtime memory utilization report on SMU7 asics.

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/hwmgr/smu7_hwmgr.c
drivers/gpu/drm/amd/powerplay/inc/smumgr.h
drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c
drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c
drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c
drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c
drivers/gpu/drm/amd/powerplay/smumgr/vegam_smumgr.c

index 048757e..16591be 100644 (file)
@@ -3532,9 +3532,12 @@ static int smu7_read_sensor(struct pp_hwmgr *hwmgr, int idx,
                *size = 4;
                return 0;
        case AMDGPU_PP_SENSOR_GPU_LOAD:
+       case AMDGPU_PP_SENSOR_MEM_LOAD:
                offset = data->soft_regs_start + smum_get_offsetof(hwmgr,
                                                                SMU_SoftRegisters,
-                                                               AverageGraphicsActivity);
+                                                               (idx == AMDGPU_PP_SENSOR_GPU_LOAD) ?
+                                                               AverageGraphicsActivity:
+                                                               AverageMemoryActivity);
 
                activity_percent = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__SMC, offset);
                activity_percent += 0x80;
index 82550a8..c528883 100644 (file)
@@ -41,6 +41,7 @@ enum SMU_MEMBER {
        HandshakeDisables = 0,
        VoltageChangeTimeout,
        AverageGraphicsActivity,
+       AverageMemoryActivity,
        PreVBlankGap,
        VBlankTimeout,
        UcodeLoadStatus,
index 669bd0c..9ef57fc 100644 (file)
@@ -2254,6 +2254,8 @@ static uint32_t ci_get_offsetof(uint32_t type, uint32_t member)
                        return offsetof(SMU7_SoftRegisters, VoltageChangeTimeout);
                case AverageGraphicsActivity:
                        return offsetof(SMU7_SoftRegisters, AverageGraphicsA);
+               case AverageMemoryActivity:
+                       return offsetof(SMU7_SoftRegisters, AverageMemoryA);
                case PreVBlankGap:
                        return offsetof(SMU7_SoftRegisters, PreVBlankGap);
                case VBlankTimeout:
index bc8375c..0ce85b7 100644 (file)
@@ -2304,6 +2304,8 @@ static uint32_t fiji_get_offsetof(uint32_t type, uint32_t member)
                        return offsetof(SMU73_SoftRegisters, VoltageChangeTimeout);
                case AverageGraphicsActivity:
                        return offsetof(SMU73_SoftRegisters, AverageGraphicsActivity);
+               case AverageMemoryActivity:
+                       return offsetof(SMU73_SoftRegisters, AverageMemoryActivity);
                case PreVBlankGap:
                        return offsetof(SMU73_SoftRegisters, PreVBlankGap);
                case VBlankTimeout:
index 375ccf6..f24f13d 100644 (file)
@@ -2219,6 +2219,8 @@ static uint32_t iceland_get_offsetof(uint32_t type, uint32_t member)
                        return offsetof(SMU71_SoftRegisters, VoltageChangeTimeout);
                case AverageGraphicsActivity:
                        return offsetof(SMU71_SoftRegisters, AverageGraphicsActivity);
+               case AverageMemoryActivity:
+                       return offsetof(SMU71_SoftRegisters, AverageMemoryActivity);
                case PreVBlankGap:
                        return offsetof(SMU71_SoftRegisters, PreVBlankGap);
                case VBlankTimeout:
index 2d4cfe1..0d8958e 100644 (file)
@@ -2313,6 +2313,8 @@ static uint32_t polaris10_get_offsetof(uint32_t type, uint32_t member)
                        return offsetof(SMU74_SoftRegisters, VoltageChangeTimeout);
                case AverageGraphicsActivity:
                        return offsetof(SMU74_SoftRegisters, AverageGraphicsActivity);
+               case AverageMemoryActivity:
+                       return offsetof(SMU74_SoftRegisters, AverageMemoryActivity);
                case PreVBlankGap:
                        return offsetof(SMU74_SoftRegisters, PreVBlankGap);
                case VBlankTimeout:
index 3ed6c5f..060c0f7 100644 (file)
@@ -2611,6 +2611,8 @@ static uint32_t tonga_get_offsetof(uint32_t type, uint32_t member)
                        return offsetof(SMU72_SoftRegisters, VoltageChangeTimeout);
                case AverageGraphicsActivity:
                        return offsetof(SMU72_SoftRegisters, AverageGraphicsActivity);
+               case AverageMemoryActivity:
+                       return offsetof(SMU72_SoftRegisters, AverageMemoryActivity);
                case PreVBlankGap:
                        return offsetof(SMU72_SoftRegisters, PreVBlankGap);
                case VBlankTimeout:
index 1e69300..d499204 100644 (file)
@@ -2167,6 +2167,8 @@ static uint32_t vegam_get_offsetof(uint32_t type, uint32_t member)
                        return offsetof(SMU75_SoftRegisters, VoltageChangeTimeout);
                case AverageGraphicsActivity:
                        return offsetof(SMU75_SoftRegisters, AverageGraphicsActivity);
+               case AverageMemoryActivity:
+                       return offsetof(SMU75_SoftRegisters, AverageMemoryActivity);
                case PreVBlankGap:
                        return offsetof(SMU75_SoftRegisters, PreVBlankGap);
                case VBlankTimeout: