@@ -9050,21 +9050,6 @@ static void gfx_v10_0_ring_emit_reg_write_reg_wait(struct amdgpu_ring *ring,
90509050 ref , mask );
90519051}
90529052
9053- static void gfx_v10_0_ring_soft_recovery (struct amdgpu_ring * ring ,
9054- unsigned int vmid )
9055- {
9056- struct amdgpu_device * adev = ring -> adev ;
9057- uint32_t value = 0 ;
9058-
9059- value = REG_SET_FIELD (value , SQ_CMD , CMD , 0x03 );
9060- value = REG_SET_FIELD (value , SQ_CMD , MODE , 0x01 );
9061- value = REG_SET_FIELD (value , SQ_CMD , CHECK_VMID , 1 );
9062- value = REG_SET_FIELD (value , SQ_CMD , VM_ID , vmid );
9063- amdgpu_gfx_rlc_enter_safe_mode (adev , 0 );
9064- WREG32_SOC15 (GC , 0 , mmSQ_CMD , value );
9065- amdgpu_gfx_rlc_exit_safe_mode (adev , 0 );
9066- }
9067-
90689053static void
90699054gfx_v10_0_set_gfx_eop_interrupt_state (struct amdgpu_device * adev ,
90709055 uint32_t me , uint32_t pipe ,
@@ -9544,7 +9529,7 @@ static int gfx_v10_0_reset_kgq(struct amdgpu_ring *ring,
95449529 if (!kiq -> pmf || !kiq -> pmf -> kiq_unmap_queues )
95459530 return - EINVAL ;
95469531
9547- drm_sched_wqueue_stop ( & ring -> sched );
9532+ amdgpu_ring_reset_helper_begin ( ring , timedout_fence );
95489533
95499534 spin_lock_irqsave (& kiq -> ring_lock , flags );
95509535
@@ -9593,12 +9578,7 @@ static int gfx_v10_0_reset_kgq(struct amdgpu_ring *ring,
95939578 if (r )
95949579 return r ;
95959580
9596- r = amdgpu_ring_test_ring (ring );
9597- if (r )
9598- return r ;
9599- amdgpu_fence_driver_force_completion (ring );
9600- drm_sched_wqueue_start (& ring -> sched );
9601- return 0 ;
9581+ return amdgpu_ring_reset_helper_end (ring , timedout_fence );
96029582}
96039583
96049584static int gfx_v10_0_reset_kcq (struct amdgpu_ring * ring ,
@@ -9617,7 +9597,7 @@ static int gfx_v10_0_reset_kcq(struct amdgpu_ring *ring,
96179597 if (!kiq -> pmf || !kiq -> pmf -> kiq_unmap_queues )
96189598 return - EINVAL ;
96199599
9620- drm_sched_wqueue_stop ( & ring -> sched );
9600+ amdgpu_ring_reset_helper_begin ( ring , timedout_fence );
96219601
96229602 spin_lock_irqsave (& kiq -> ring_lock , flags );
96239603
@@ -9671,12 +9651,7 @@ static int gfx_v10_0_reset_kcq(struct amdgpu_ring *ring,
96719651 if (r )
96729652 return r ;
96739653
9674- r = amdgpu_ring_test_ring (ring );
9675- if (r )
9676- return r ;
9677- amdgpu_fence_driver_force_completion (ring );
9678- drm_sched_wqueue_start (& ring -> sched );
9679- return 0 ;
9654+ return amdgpu_ring_reset_helper_end (ring , timedout_fence );
96809655}
96819656
96829657static void gfx_v10_ip_print (struct amdgpu_ip_block * ip_block , struct drm_printer * p )
@@ -9911,7 +9886,6 @@ static const struct amdgpu_ring_funcs gfx_v10_0_ring_funcs_gfx = {
99119886 .emit_wreg = gfx_v10_0_ring_emit_wreg ,
99129887 .emit_reg_wait = gfx_v10_0_ring_emit_reg_wait ,
99139888 .emit_reg_write_reg_wait = gfx_v10_0_ring_emit_reg_write_reg_wait ,
9914- .soft_recovery = gfx_v10_0_ring_soft_recovery ,
99159889 .emit_mem_sync = gfx_v10_0_emit_mem_sync ,
99169890 .reset = gfx_v10_0_reset_kgq ,
99179891 .emit_cleaner_shader = gfx_v10_0_ring_emit_cleaner_shader ,
@@ -9952,7 +9926,6 @@ static const struct amdgpu_ring_funcs gfx_v10_0_ring_funcs_compute = {
99529926 .emit_wreg = gfx_v10_0_ring_emit_wreg ,
99539927 .emit_reg_wait = gfx_v10_0_ring_emit_reg_wait ,
99549928 .emit_reg_write_reg_wait = gfx_v10_0_ring_emit_reg_write_reg_wait ,
9955- .soft_recovery = gfx_v10_0_ring_soft_recovery ,
99569929 .emit_mem_sync = gfx_v10_0_emit_mem_sync ,
99579930 .reset = gfx_v10_0_reset_kcq ,
99589931 .emit_cleaner_shader = gfx_v10_0_ring_emit_cleaner_shader ,
0 commit comments