@@ -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-
47124697static void
47134698gfx_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
53545334static 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
54765451static 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