diff options
author | Alex Deucher <[email protected]> | 2024-05-24 12:20:10 -0400 |
---|---|---|
committer | Alex Deucher <[email protected]> | 2024-09-02 11:35:12 -0400 |
commit | b3e9bfd86658b562a33b1ee8563d59a593327aaf (patch) | |
tree | c7ba1721fe474c5b38029883a8b85660376ae385 | |
parent | 0ba3cb8e7cf08223a9246ded3c1bee25a74d1f7f (diff) |
drm/amdgpu/gfx11: add ring reset callbacks
Add ring reset callbacks for gfx and compute.
Acked-by: Vitaly Prosyak <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c index aa7fdece8ad4..986cd5a3d560 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c @@ -6544,6 +6544,22 @@ static void gfx_v11_0_emit_mem_sync(struct amdgpu_ring *ring) amdgpu_ring_write(ring, gcr_cntl); /* GCR_CNTL */ } +static int gfx_v11_0_reset_ring(struct amdgpu_ring *ring, unsigned int vmid) +{ + int r; + + r = amdgpu_mes_reset_legacy_queue(ring->adev, ring, vmid); + if (r) + return r; + + /* reset the ring */ + ring->wptr = 0; + *ring->wptr_cpu_addr = 0; + amdgpu_ring_clear_ring(ring); + + return amdgpu_ring_test_ring(ring); +} + static void gfx_v11_ip_print(void *handle, struct drm_printer *p) { struct amdgpu_device *adev = (struct amdgpu_device *)handle; @@ -6745,6 +6761,7 @@ static const struct amdgpu_ring_funcs gfx_v11_0_ring_funcs_gfx = { .emit_reg_write_reg_wait = gfx_v11_0_ring_emit_reg_write_reg_wait, .soft_recovery = gfx_v11_0_ring_soft_recovery, .emit_mem_sync = gfx_v11_0_emit_mem_sync, + .reset = gfx_v11_0_reset_ring, }; static const struct amdgpu_ring_funcs gfx_v11_0_ring_funcs_compute = { @@ -6782,6 +6799,7 @@ static const struct amdgpu_ring_funcs gfx_v11_0_ring_funcs_compute = { .emit_reg_write_reg_wait = gfx_v11_0_ring_emit_reg_write_reg_wait, .soft_recovery = gfx_v11_0_ring_soft_recovery, .emit_mem_sync = gfx_v11_0_emit_mem_sync, + .reset = gfx_v11_0_reset_ring, }; static const struct amdgpu_ring_funcs gfx_v11_0_ring_funcs_kiq = { |