@@ -4201,7 +4201,7 @@ static int gfx_v11_0_kgq_init_queue(struct amdgpu_ring *ring, bool reset)
42014201 memcpy_toio (mqd , adev -> gfx .me .mqd_backup [mqd_idx ], sizeof (* mqd ));
42024202 /* reset the ring */
42034203 ring -> wptr = 0 ;
4204- * ring -> wptr_cpu_addr = 0 ;
4204+ atomic64_set (( atomic64_t * ) ring -> wptr_cpu_addr , 0 ) ;
42054205 amdgpu_ring_clear_ring (ring );
42064206 }
42074207
@@ -6823,11 +6823,12 @@ static int gfx_v11_0_reset_kgq(struct amdgpu_ring *ring,
68236823 struct amdgpu_fence * timedout_fence )
68246824{
68256825 struct amdgpu_device * adev = ring -> adev ;
6826+ bool use_mmio = false;
68266827 int r ;
68276828
68286829 amdgpu_ring_reset_helper_begin (ring , timedout_fence );
68296830
6830- r = amdgpu_mes_reset_legacy_queue (ring -> adev , ring , vmid , false );
6831+ r = amdgpu_mes_reset_legacy_queue (ring -> adev , ring , vmid , use_mmio );
68316832 if (r ) {
68326833
68336834 dev_warn (adev -> dev , "reset via MES failed and try pipe reset %d\n" , r );
@@ -6836,16 +6837,18 @@ static int gfx_v11_0_reset_kgq(struct amdgpu_ring *ring,
68366837 return r ;
68376838 }
68386839
6839- r = gfx_v11_0_kgq_init_queue (ring , true);
6840- if (r ) {
6841- dev_err (adev -> dev , "failed to init kgq\n" );
6842- return r ;
6843- }
6840+ if (use_mmio ) {
6841+ r = gfx_v11_0_kgq_init_queue (ring , true);
6842+ if (r ) {
6843+ dev_err (adev -> dev , "failed to init kgq\n" );
6844+ return r ;
6845+ }
68446846
6845- r = amdgpu_mes_map_legacy_queue (adev , ring );
6846- if (r ) {
6847- dev_err (adev -> dev , "failed to remap kgq\n" );
6848- return r ;
6847+ r = amdgpu_mes_map_legacy_queue (adev , ring );
6848+ if (r ) {
6849+ dev_err (adev -> dev , "failed to remap kgq\n" );
6850+ return r ;
6851+ }
68496852 }
68506853
68516854 return amdgpu_ring_reset_helper_end (ring , timedout_fence );
0 commit comments