Skip to content

Commit 4da11b9

Browse files
committed
drm/amdgpu/gfx12: re-emit unprocessed state on ring reset
Re-emit the unprocessed state after resetting the queue. Drop the soft_recovery callbacks as the queue reset replaces it. Reviewed-by: Jesse Zhang <[email protected]> Reviewed-by: Christian König <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent fa3385a commit 4da11b9

File tree

1 file changed

+4
-31
lines changed

1 file changed

+4
-31
lines changed

drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4694,21 +4694,6 @@ static void gfx_v12_0_ring_emit_reg_write_reg_wait(struct amdgpu_ring *ring,
46944694
ref, mask, 0x20);
46954695
}
46964696

4697-
static void gfx_v12_0_ring_soft_recovery(struct amdgpu_ring *ring,
4698-
unsigned vmid)
4699-
{
4700-
struct amdgpu_device *adev = ring->adev;
4701-
uint32_t value = 0;
4702-
4703-
value = REG_SET_FIELD(value, SQ_CMD, CMD, 0x03);
4704-
value = REG_SET_FIELD(value, SQ_CMD, MODE, 0x01);
4705-
value = REG_SET_FIELD(value, SQ_CMD, CHECK_VMID, 1);
4706-
value = REG_SET_FIELD(value, SQ_CMD, VM_ID, vmid);
4707-
amdgpu_gfx_rlc_enter_safe_mode(adev, 0);
4708-
WREG32_SOC15(GC, 0, regSQ_CMD, value);
4709-
amdgpu_gfx_rlc_exit_safe_mode(adev, 0);
4710-
}
4711-
47124697
static void
47134698
gfx_v12_0_set_gfx_eop_interrupt_state(struct amdgpu_device *adev,
47144699
uint32_t me, uint32_t pipe,
@@ -5321,7 +5306,7 @@ static int gfx_v12_0_reset_kgq(struct amdgpu_ring *ring,
53215306
if (!(adev->gfx.gfx_supported_reset & AMDGPU_RESET_TYPE_PER_QUEUE))
53225307
return -EOPNOTSUPP;
53235308

5324-
drm_sched_wqueue_stop(&ring->sched);
5309+
amdgpu_ring_reset_helper_begin(ring, timedout_fence);
53255310

53265311
r = amdgpu_mes_reset_legacy_queue(ring->adev, ring, vmid, false);
53275312
if (r) {
@@ -5343,12 +5328,7 @@ static int gfx_v12_0_reset_kgq(struct amdgpu_ring *ring,
53435328
return r;
53445329
}
53455330

5346-
r = amdgpu_ring_test_ring(ring);
5347-
if (r)
5348-
return r;
5349-
amdgpu_fence_driver_force_completion(ring);
5350-
drm_sched_wqueue_start(&ring->sched);
5351-
return 0;
5331+
return amdgpu_ring_reset_helper_end(ring, timedout_fence);
53525332
}
53535333

53545334
static int gfx_v12_0_reset_compute_pipe(struct amdgpu_ring *ring)
@@ -5444,7 +5424,7 @@ static int gfx_v12_0_reset_kcq(struct amdgpu_ring *ring,
54445424
if (!(adev->gfx.compute_supported_reset & AMDGPU_RESET_TYPE_PER_QUEUE))
54455425
return -EOPNOTSUPP;
54465426

5447-
drm_sched_wqueue_stop(&ring->sched);
5427+
amdgpu_ring_reset_helper_begin(ring, timedout_fence);
54485428

54495429
r = amdgpu_mes_reset_legacy_queue(ring->adev, ring, vmid, true);
54505430
if (r) {
@@ -5465,12 +5445,7 @@ static int gfx_v12_0_reset_kcq(struct amdgpu_ring *ring,
54655445
return r;
54665446
}
54675447

5468-
r = amdgpu_ring_test_ring(ring);
5469-
if (r)
5470-
return r;
5471-
amdgpu_fence_driver_force_completion(ring);
5472-
drm_sched_wqueue_start(&ring->sched);
5473-
return 0;
5448+
return amdgpu_ring_reset_helper_end(ring, timedout_fence);
54745449
}
54755450

54765451
static void gfx_v12_0_ring_begin_use(struct amdgpu_ring *ring)
@@ -5548,7 +5523,6 @@ static const struct amdgpu_ring_funcs gfx_v12_0_ring_funcs_gfx = {
55485523
.emit_wreg = gfx_v12_0_ring_emit_wreg,
55495524
.emit_reg_wait = gfx_v12_0_ring_emit_reg_wait,
55505525
.emit_reg_write_reg_wait = gfx_v12_0_ring_emit_reg_write_reg_wait,
5551-
.soft_recovery = gfx_v12_0_ring_soft_recovery,
55525526
.emit_mem_sync = gfx_v12_0_emit_mem_sync,
55535527
.reset = gfx_v12_0_reset_kgq,
55545528
.emit_cleaner_shader = gfx_v12_0_ring_emit_cleaner_shader,
@@ -5587,7 +5561,6 @@ static const struct amdgpu_ring_funcs gfx_v12_0_ring_funcs_compute = {
55875561
.emit_wreg = gfx_v12_0_ring_emit_wreg,
55885562
.emit_reg_wait = gfx_v12_0_ring_emit_reg_wait,
55895563
.emit_reg_write_reg_wait = gfx_v12_0_ring_emit_reg_write_reg_wait,
5590-
.soft_recovery = gfx_v12_0_ring_soft_recovery,
55915564
.emit_mem_sync = gfx_v12_0_emit_mem_sync,
55925565
.reset = gfx_v12_0_reset_kcq,
55935566
.emit_cleaner_shader = gfx_v12_0_ring_emit_cleaner_shader,

0 commit comments

Comments
 (0)