drm/amdgpu:use clear_ring to clr RB
In resume routine, we need clr RB prior to the ring test of engine, otherwise some engine hang duplicated during GPU reset. Signed-off-by: Monk Liu <Monk.Liu@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -230,7 +230,7 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring,
|
|||||||
dev_err(adev->dev, "(%d) ring create failed\n", r);
|
dev_err(adev->dev, "(%d) ring create failed\n", r);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
memset((void *)ring->ring, 0, ring->ring_size);
|
amdgpu_ring_clear_ring(ring);
|
||||||
}
|
}
|
||||||
ring->ptr_mask = (ring->ring_size / 4) - 1;
|
ring->ptr_mask = (ring->ring_size / 4) - 1;
|
||||||
ring->max_dw = max_dw;
|
ring->max_dw = max_dw;
|
||||||
|
@@ -4515,6 +4515,7 @@ static int gfx_v8_0_cp_gfx_resume(struct amdgpu_device *adev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* start the ring */
|
/* start the ring */
|
||||||
|
amdgpu_ring_clear_ring(ring);
|
||||||
gfx_v8_0_cp_gfx_start(adev);
|
gfx_v8_0_cp_gfx_start(adev);
|
||||||
ring->ready = true;
|
ring->ready = true;
|
||||||
r = amdgpu_ring_test_ring(ring);
|
r = amdgpu_ring_test_ring(ring);
|
||||||
|
@@ -615,6 +615,7 @@ static int sdma_v3_0_gfx_resume(struct amdgpu_device *adev)
|
|||||||
|
|
||||||
for (i = 0; i < adev->sdma.num_instances; i++) {
|
for (i = 0; i < adev->sdma.num_instances; i++) {
|
||||||
ring = &adev->sdma.instance[i].ring;
|
ring = &adev->sdma.instance[i].ring;
|
||||||
|
amdgpu_ring_clear_ring(ring);
|
||||||
wb_offset = (ring->rptr_offs * 4);
|
wb_offset = (ring->rptr_offs * 4);
|
||||||
|
|
||||||
mutex_lock(&adev->srbm_mutex);
|
mutex_lock(&adev->srbm_mutex);
|
||||||
|
Reference in New Issue
Block a user