aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMonk Liu <Monk.Liu@amd.com>2017-02-08 22:55:49 -0500
committerAlex Deucher <alexander.deucher@amd.com>2017-03-29 23:52:54 -0400
commite4f0fdcc9c95f415b6ac54d0d309021a17b9b2a8 (patch)
treebf1897344c8be9726525d7e6d93d42c242eab08d
parent2245b60f9c3f5047c581f93d5a2656a0c5988c0e (diff)
drm/amdgpu:use hw_init for sriov_gpu_reset
no suspend invoked so after VF FLR by host, we just call hw_init to reinitialize IPs. Signed-off-by: Monk Liu <Monk.Liu@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_device.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 2abb76ae1551..552452a654a5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -1607,7 +1607,7 @@ int amdgpu_suspend(struct amdgpu_device *adev)
1607 return 0; 1607 return 0;
1608} 1608}
1609 1609
1610static int amdgpu_sriov_resume_early(struct amdgpu_device *adev) 1610static int amdgpu_sriov_reinit_early(struct amdgpu_device *adev)
1611{ 1611{
1612 int i, r; 1612 int i, r;
1613 1613
@@ -1618,7 +1618,7 @@ static int amdgpu_sriov_resume_early(struct amdgpu_device *adev)
1618 if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_COMMON || 1618 if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_COMMON ||
1619 adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC || 1619 adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC ||
1620 adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_IH) 1620 adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_IH)
1621 r = adev->ip_blocks[i].version->funcs->resume(adev); 1621 r = adev->ip_blocks[i].version->funcs->hw_init(adev);
1622 1622
1623 if (r) { 1623 if (r) {
1624 DRM_ERROR("resume of IP block <%s> failed %d\n", 1624 DRM_ERROR("resume of IP block <%s> failed %d\n",
@@ -1630,7 +1630,7 @@ static int amdgpu_sriov_resume_early(struct amdgpu_device *adev)
1630 return 0; 1630 return 0;
1631} 1631}
1632 1632
1633static int amdgpu_sriov_resume_late(struct amdgpu_device *adev) 1633static int amdgpu_sriov_reinit_late(struct amdgpu_device *adev)
1634{ 1634{
1635 int i, r; 1635 int i, r;
1636 1636
@@ -1643,7 +1643,7 @@ static int amdgpu_sriov_resume_late(struct amdgpu_device *adev)
1643 adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_IH ) 1643 adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_IH )
1644 continue; 1644 continue;
1645 1645
1646 r = adev->ip_blocks[i].version->funcs->resume(adev); 1646 r = adev->ip_blocks[i].version->funcs->hw_init(adev);
1647 if (r) { 1647 if (r) {
1648 DRM_ERROR("resume of IP block <%s> failed %d\n", 1648 DRM_ERROR("resume of IP block <%s> failed %d\n",
1649 adev->ip_blocks[i].version->funcs->name, r); 1649 adev->ip_blocks[i].version->funcs->name, r);
@@ -2375,13 +2375,13 @@ int amdgpu_sriov_gpu_reset(struct amdgpu_device *adev, bool voluntary)
2375 2375
2376 2376
2377 /* Resume IP prior to SMC */ 2377 /* Resume IP prior to SMC */
2378 amdgpu_sriov_resume_early(adev); 2378 amdgpu_sriov_reinit_early(adev);
2379 2379
2380 /* we need recover gart prior to run SMC/CP/SDMA resume */ 2380 /* we need recover gart prior to run SMC/CP/SDMA resume */
2381 amdgpu_ttm_recover_gart(adev); 2381 amdgpu_ttm_recover_gart(adev);
2382 2382
2383 /* now we are okay to resume SMC/CP/SDMA */ 2383 /* now we are okay to resume SMC/CP/SDMA */
2384 amdgpu_sriov_resume_late(adev); 2384 amdgpu_sriov_reinit_late(adev);
2385 2385
2386 amdgpu_irq_gpu_reset_resume_helper(adev); 2386 amdgpu_irq_gpu_reset_resume_helper(adev);
2387 2387