On 3/15/2024 3:43 PM, Lazar, Lijo wrote:
> 
> 
> On 3/15/2024 2:46 PM, Le Ma wrote:
>> To fix the entity rq NULL issue. This setting has been moved to upper level.
>>
> 
> Need to call amdgpu_ttm_set_buffer_funcs_status(adev, true/false) in
> mode-2 reset handlers as well.
> 

Please also check if it's required here as well -
amdgpu_device_ip_reinit_late_sriov()

Thanks,
Lijo

> Thanks,
> Lijo
> 
>> Fixes b70438004a14 ("drm/amdgpu: move buffer funcs setting up a level")
>>
>> Signed-off-by: Le Ma <[email protected]>
>> ---
>>  drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c | 20 +-------------------
>>  1 file changed, 1 insertion(+), 19 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c 
>> b/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
>> index eaa4f5f49949..589a734982a7 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
>> @@ -431,16 +431,11 @@ static void sdma_v4_4_2_inst_gfx_stop(struct 
>> amdgpu_device *adev,
>>      struct amdgpu_ring *sdma[AMDGPU_MAX_SDMA_INSTANCES];
>>      u32 doorbell_offset, doorbell;
>>      u32 rb_cntl, ib_cntl;
>> -    int i, unset = 0;
>> +    int i;
>>  
>>      for_each_inst(i, inst_mask) {
>>              sdma[i] = &adev->sdma.instance[i].ring;
>>  
>> -            if ((adev->mman.buffer_funcs_ring == sdma[i]) && unset != 1) {
>> -                    amdgpu_ttm_set_buffer_funcs_status(adev, false);
>> -                    unset = 1;
>> -            }
>> -
>>              rb_cntl = RREG32_SDMA(i, regSDMA_GFX_RB_CNTL);
>>              rb_cntl = REG_SET_FIELD(rb_cntl, SDMA_GFX_RB_CNTL, RB_ENABLE, 
>> 0);
>>              WREG32_SDMA(i, regSDMA_GFX_RB_CNTL, rb_cntl);
>> @@ -490,17 +485,10 @@ static void sdma_v4_4_2_inst_page_stop(struct 
>> amdgpu_device *adev,
>>      struct amdgpu_ring *sdma[AMDGPU_MAX_SDMA_INSTANCES];
>>      u32 rb_cntl, ib_cntl;
>>      int i;
>> -    bool unset = false;
>>  
>>      for_each_inst(i, inst_mask) {
>>              sdma[i] = &adev->sdma.instance[i].page;
>>  
>> -            if ((adev->mman.buffer_funcs_ring == sdma[i]) &&
>> -                    (!unset)) {
>> -                    amdgpu_ttm_set_buffer_funcs_status(adev, false);
>> -                    unset = true;
>> -            }
>> -
>>              rb_cntl = RREG32_SDMA(i, regSDMA_PAGE_RB_CNTL);
>>              rb_cntl = REG_SET_FIELD(rb_cntl, SDMA_PAGE_RB_CNTL,
>>                                      RB_ENABLE, 0);
>> @@ -950,13 +938,7 @@ static int sdma_v4_4_2_inst_start(struct amdgpu_device 
>> *adev,
>>                      r = amdgpu_ring_test_helper(page);
>>                      if (r)
>>                              return r;
>> -
>> -                    if (adev->mman.buffer_funcs_ring == page)
>> -                            amdgpu_ttm_set_buffer_funcs_status(adev, true);
>>              }
>> -
>> -            if (adev->mman.buffer_funcs_ring == ring)
>> -                    amdgpu_ttm_set_buffer_funcs_status(adev, true);
>>      }
>>  
>>      return r;

Reply via email to