diff options
| author | Guchun Chen <guchun.chen@amd.com> | 2023-05-12 16:10:40 +0800 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2023-06-09 10:57:11 -0400 | 
| commit | 232f2431899cbe6c00c1350e35cfba91ea0c1c0b (patch) | |
| tree | ab33bdb42eb55ace956848f71093915f1847e86b /drivers/gpu/drm/amd | |
| parent | 61c31b8b6c5e386a9c2ddc4e2cf9d8ae46c8a1f9 (diff) | |
drm/amdgpu/gfx: set sched.ready status after ring/IB test in gfx
sched.ready is nothing with ring initialization, it needs to set
to be true after ring/IB test in amdgpu_ring_test_helper to tell
the ring is ready for submission.
Signed-off-by: Guchun Chen <guchun.chen@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 24 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 25 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c | 1 | 
5 files changed, 8 insertions, 46 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c index 0d15002eac69..f7ad883a70fa 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c @@ -6073,7 +6073,6 @@ static int gfx_v10_0_cp_gfx_resume(struct amdgpu_device *adev)  	u32 tmp;  	u32 rb_bufsz;  	u64 rb_addr, rptr_addr, wptr_gpu_addr; -	u32 i;  	/* Set the write pointer delay */  	WREG32_SOC15(GC, 0, mmCP_RB_WPTR_DELAY, 0); @@ -6168,11 +6167,6 @@ static int gfx_v10_0_cp_gfx_resume(struct amdgpu_device *adev)  	/* start the ring */  	gfx_v10_0_cp_gfx_start(adev); -	for (i = 0; i < adev->gfx.num_gfx_rings; i++) { -		ring = &adev->gfx.gfx_ring[i]; -		ring->sched.ready = true; -	} -  	return 0;  } @@ -6470,7 +6464,7 @@ static int gfx_v10_0_cp_async_gfx_ring_resume(struct amdgpu_device *adev)  		r = amdgpu_bo_reserve(ring->mqd_obj, false);  		if (unlikely(r != 0)) -			goto done; +			return r;  		r = amdgpu_bo_kmap(ring->mqd_obj, (void **)&ring->mqd_ptr);  		if (!r) { @@ -6480,23 +6474,14 @@ static int gfx_v10_0_cp_async_gfx_ring_resume(struct amdgpu_device *adev)  		}  		amdgpu_bo_unreserve(ring->mqd_obj);  		if (r) -			goto done; +			return r;  	}  	r = amdgpu_gfx_enable_kgq(adev, 0);  	if (r) -		goto done; - -	r = gfx_v10_0_cp_gfx_start(adev); -	if (r) -		goto done; +		return r; -	for (i = 0; i < adev->gfx.num_gfx_rings; i++) { -		ring = &adev->gfx.gfx_ring[i]; -		ring->sched.ready = true; -	} -done: -	return r; +	return gfx_v10_0_cp_gfx_start(adev);  }  static int gfx_v10_0_compute_mqd_init(struct amdgpu_device *adev, void *m, @@ -6812,7 +6797,6 @@ static int gfx_v10_0_kiq_resume(struct amdgpu_device *adev)  	amdgpu_bo_kunmap(ring->mqd_obj);  	ring->mqd_ptr = NULL;  	amdgpu_bo_unreserve(ring->mqd_obj); -	ring->sched.ready = true;  	return 0;  } diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c index 4b7224de879e..da21bf868080 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c @@ -3228,7 +3228,6 @@ static int gfx_v11_0_cp_gfx_resume(struct amdgpu_device *adev)  	u32 tmp;  	u32 rb_bufsz;  	u64 rb_addr, rptr_addr, wptr_gpu_addr; -	u32 i;  	/* Set the write pointer delay */  	WREG32_SOC15(GC, 0, regCP_RB_WPTR_DELAY, 0); @@ -3320,11 +3319,6 @@ static int gfx_v11_0_cp_gfx_resume(struct amdgpu_device *adev)  	/* start the ring */  	gfx_v11_0_cp_gfx_start(adev); -	for (i = 0; i < adev->gfx.num_gfx_rings; i++) { -		ring = &adev->gfx.gfx_ring[i]; -		ring->sched.ready = true; -	} -  	return 0;  } @@ -3370,8 +3364,6 @@ static void gfx_v11_0_cp_compute_enable(struct amdgpu_device *adev, bool enable)  		WREG32_SOC15(GC, 0, regCP_MEC_CNTL, data);  	} -	adev->gfx.kiq[0].ring.sched.ready = enable; -  	udelay(50);  } @@ -3711,7 +3703,7 @@ static int gfx_v11_0_cp_async_gfx_ring_resume(struct amdgpu_device *adev)  		r = amdgpu_bo_reserve(ring->mqd_obj, false);  		if (unlikely(r != 0)) -			goto done; +			return r;  		r = amdgpu_bo_kmap(ring->mqd_obj, (void **)&ring->mqd_ptr);  		if (!r) { @@ -3721,23 +3713,14 @@ static int gfx_v11_0_cp_async_gfx_ring_resume(struct amdgpu_device *adev)  		}  		amdgpu_bo_unreserve(ring->mqd_obj);  		if (r) -			goto done; +			return r;  	}  	r = amdgpu_gfx_enable_kgq(adev, 0);  	if (r) -		goto done; - -	r = gfx_v11_0_cp_gfx_start(adev); -	if (r) -		goto done; +		return r; -	for (i = 0; i < adev->gfx.num_gfx_rings; i++) { -		ring = &adev->gfx.gfx_ring[i]; -		ring->sched.ready = true; -	} -done: -	return r; +	return gfx_v11_0_cp_gfx_start(adev);  }  static int gfx_v11_0_compute_mqd_init(struct amdgpu_device *adev, void *m, diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index 6d0589dc1d6c..2f1ef75e126c 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c @@ -4283,7 +4283,6 @@ static int gfx_v8_0_cp_gfx_resume(struct amdgpu_device *adev)  	/* start the ring */  	amdgpu_ring_clear_ring(ring);  	gfx_v8_0_cp_gfx_start(adev); -	ring->sched.ready = true;  	return 0;  } @@ -4693,7 +4692,6 @@ static int gfx_v8_0_kiq_resume(struct amdgpu_device *adev)  	amdgpu_bo_kunmap(ring->mqd_obj);  	ring->mqd_ptr = NULL;  	amdgpu_bo_unreserve(ring->mqd_obj); -	ring->sched.ready = true;  	return 0;  } diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c index 8bf95a6b0767..fe090eafa366 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c @@ -3144,7 +3144,6 @@ static int gfx_v9_0_cp_gfx_resume(struct amdgpu_device *adev)  	/* start the ring */  	gfx_v9_0_cp_gfx_start(adev); -	ring->sched.ready = true;  	return 0;  } @@ -3623,7 +3622,6 @@ static int gfx_v9_0_kiq_resume(struct amdgpu_device *adev)  	amdgpu_bo_kunmap(ring->mqd_obj);  	ring->mqd_ptr = NULL;  	amdgpu_bo_unreserve(ring->mqd_obj); -	ring->sched.ready = true;  	return 0;  } diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c index c54bf0b38fe1..ed41a7862d9f 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c @@ -1845,7 +1845,6 @@ static int gfx_v9_4_3_xcc_kiq_resume(struct amdgpu_device *adev, int xcc_id)  	amdgpu_bo_kunmap(ring->mqd_obj);  	ring->mqd_ptr = NULL;  	amdgpu_bo_unreserve(ring->mqd_obj); -	ring->sched.ready = true;  	return 0;  } | 
