drm/amdgpu: Check late_init status before set cg/pg state
authorRex Zhu <Rex.Zhu@amd.com>
Wed, 3 Oct 2018 08:19:50 +0000 (16:19 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 10 Oct 2018 19:48:44 +0000 (14:48 -0500)
Fix cg/pg unexpected set in hw init failed case.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

index eda3d1e60ced6ce3bfaa5da3e8f9cfa7a9ce764c..94c92f5e11e095a9634b714c9f4bdc1423b0ddf8 100644 (file)
@@ -1656,7 +1656,7 @@ static int amdgpu_device_set_cg_state(struct amdgpu_device *adev,
 
        for (j = 0; j < adev->num_ip_blocks; j++) {
                i = state == AMD_CG_STATE_GATE ? j : adev->num_ip_blocks - j - 1;
-               if (!adev->ip_blocks[i].status.valid)
+               if (!adev->ip_blocks[i].status.late_initialized)
                        continue;
                /* skip CG for VCE/UVD, it's handled specially */
                if (adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_UVD &&
@@ -1686,7 +1686,7 @@ static int amdgpu_device_set_pg_state(struct amdgpu_device *adev, enum amd_power
 
        for (j = 0; j < adev->num_ip_blocks; j++) {
                i = state == AMD_PG_STATE_GATE ? j : adev->num_ip_blocks - j - 1;
-               if (!adev->ip_blocks[i].status.valid)
+               if (!adev->ip_blocks[i].status.late_initialized)
                        continue;
                /* skip CG for VCE/UVD, it's handled specially */
                if (adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_UVD &&