drm/amd/amdgpu: compute ring test fail during S4 on CI
unhalt Instrction Fetch Unit after all rings are inited. Signed-off-by: JimQu <Jim.Qu@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
This commit is contained in:
@@ -2755,8 +2755,7 @@ static int gfx_v7_0_cp_compute_resume(struct amdgpu_device *adev)
|
|||||||
u64 wb_gpu_addr;
|
u64 wb_gpu_addr;
|
||||||
u32 *buf;
|
u32 *buf;
|
||||||
struct bonaire_mqd *mqd;
|
struct bonaire_mqd *mqd;
|
||||||
|
struct amdgpu_ring *ring;
|
||||||
gfx_v7_0_cp_compute_enable(adev, true);
|
|
||||||
|
|
||||||
/* fix up chicken bits */
|
/* fix up chicken bits */
|
||||||
tmp = RREG32(mmCP_CPF_DEBUG);
|
tmp = RREG32(mmCP_CPF_DEBUG);
|
||||||
@@ -2791,7 +2790,7 @@ static int gfx_v7_0_cp_compute_resume(struct amdgpu_device *adev)
|
|||||||
|
|
||||||
/* init the queues. Just two for now. */
|
/* init the queues. Just two for now. */
|
||||||
for (i = 0; i < adev->gfx.num_compute_rings; i++) {
|
for (i = 0; i < adev->gfx.num_compute_rings; i++) {
|
||||||
struct amdgpu_ring *ring = &adev->gfx.compute_ring[i];
|
ring = &adev->gfx.compute_ring[i];
|
||||||
|
|
||||||
if (ring->mqd_obj == NULL) {
|
if (ring->mqd_obj == NULL) {
|
||||||
r = amdgpu_bo_create(adev,
|
r = amdgpu_bo_create(adev,
|
||||||
@@ -2970,6 +2969,13 @@ static int gfx_v7_0_cp_compute_resume(struct amdgpu_device *adev)
|
|||||||
amdgpu_bo_unreserve(ring->mqd_obj);
|
amdgpu_bo_unreserve(ring->mqd_obj);
|
||||||
|
|
||||||
ring->ready = true;
|
ring->ready = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
gfx_v7_0_cp_compute_enable(adev, true);
|
||||||
|
|
||||||
|
for (i = 0; i < adev->gfx.num_compute_rings; i++) {
|
||||||
|
ring = &adev->gfx.compute_ring[i];
|
||||||
|
|
||||||
r = amdgpu_ring_test_ring(ring);
|
r = amdgpu_ring_test_ring(ring);
|
||||||
if (r)
|
if (r)
|
||||||
ring->ready = false;
|
ring->ready = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user