diff options
| author | Rex Zhu <Rex.Zhu@amd.com> | 2018-10-03 04:19:50 -0400 |
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2018-10-10 15:48:44 -0400 |
| commit | a2d31dc3cfab29f79c1cda2876d32b909ae26e25 (patch) | |
| tree | a494d4a7bc2007fc974f71c1fa084a85accb5379 | |
| parent | 73f847dbab26cd9b962ce03e413612d7a2b2b47d (diff) | |
drm/amdgpu: Check late_init status before set cg/pg state
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>
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index eda3d1e60ced..94c92f5e11e0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | |||
| @@ -1656,7 +1656,7 @@ static int amdgpu_device_set_cg_state(struct amdgpu_device *adev, | |||
| 1656 | 1656 | ||
| 1657 | for (j = 0; j < adev->num_ip_blocks; j++) { | 1657 | for (j = 0; j < adev->num_ip_blocks; j++) { |
| 1658 | i = state == AMD_CG_STATE_GATE ? j : adev->num_ip_blocks - j - 1; | 1658 | i = state == AMD_CG_STATE_GATE ? j : adev->num_ip_blocks - j - 1; |
| 1659 | if (!adev->ip_blocks[i].status.valid) | 1659 | if (!adev->ip_blocks[i].status.late_initialized) |
| 1660 | continue; | 1660 | continue; |
| 1661 | /* skip CG for VCE/UVD, it's handled specially */ | 1661 | /* skip CG for VCE/UVD, it's handled specially */ |
| 1662 | if (adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_UVD && | 1662 | 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 | |||
| 1686 | 1686 | ||
| 1687 | for (j = 0; j < adev->num_ip_blocks; j++) { | 1687 | for (j = 0; j < adev->num_ip_blocks; j++) { |
| 1688 | i = state == AMD_PG_STATE_GATE ? j : adev->num_ip_blocks - j - 1; | 1688 | i = state == AMD_PG_STATE_GATE ? j : adev->num_ip_blocks - j - 1; |
| 1689 | if (!adev->ip_blocks[i].status.valid) | 1689 | if (!adev->ip_blocks[i].status.late_initialized) |
| 1690 | continue; | 1690 | continue; |
| 1691 | /* skip CG for VCE/UVD, it's handled specially */ | 1691 | /* skip CG for VCE/UVD, it's handled specially */ |
| 1692 | if (adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_UVD && | 1692 | if (adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_UVD && |
