AMD-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] drm/amdgpu: drop setting buffer funcs in sdma442
@ 2024-03-15  9:16 Le Ma
  2024-03-15  9:22 ` Zhang, Hawking
  2024-03-15 10:13 ` Lazar, Lijo
  0 siblings, 2 replies; 6+ messages in thread
From: Le Ma @ 2024-03-15  9:16 UTC (permalink / raw)
  To: amd-gfx; +Cc: hawking.zhang, Asher.Song, alexander.deucher, Le Ma

To fix the entity rq NULL issue. This setting has been moved to upper level.

Fixes b70438004a14 ("drm/amdgpu: move buffer funcs setting up a level")

Signed-off-by: Le Ma <le.ma@amd.com>
---
 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;
-- 
2.43.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* RE: [PATCH 1/1] drm/amdgpu: drop setting buffer funcs in sdma442
  2024-03-15  9:16 [PATCH 1/1] drm/amdgpu: drop setting buffer funcs in sdma442 Le Ma
@ 2024-03-15  9:22 ` Zhang, Hawking
  2024-03-15 10:13 ` Lazar, Lijo
  1 sibling, 0 replies; 6+ messages in thread
From: Zhang, Hawking @ 2024-03-15  9:22 UTC (permalink / raw)
  To: Ma, Le, amd-gfx@lists.freedesktop.org; +Cc: Song, Asher, Deucher, Alexander

[AMD Official Use Only - General]

Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>

Regards,
Hawking
-----Original Message-----
From: Ma, Le <Le.Ma@amd.com>
Sent: Friday, March 15, 2024 17:16
To: amd-gfx@lists.freedesktop.org
Cc: Zhang, Hawking <Hawking.Zhang@amd.com>; Song, Asher <Asher.Song@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Ma, Le <Le.Ma@amd.com>
Subject: [PATCH 1/1] drm/amdgpu: drop setting buffer funcs in sdma442

To fix the entity rq NULL issue. This setting has been moved to upper level.

Fixes b70438004a14 ("drm/amdgpu: move buffer funcs setting up a level")

Signed-off-by: Le Ma <le.ma@amd.com>
---
 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;
--
2.43.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/1] drm/amdgpu: drop setting buffer funcs in sdma442
  2024-03-15  9:16 [PATCH 1/1] drm/amdgpu: drop setting buffer funcs in sdma442 Le Ma
  2024-03-15  9:22 ` Zhang, Hawking
@ 2024-03-15 10:13 ` Lazar, Lijo
  2024-03-15 10:19   ` Lazar, Lijo
  2024-03-15 12:15   ` Ma, Le
  1 sibling, 2 replies; 6+ messages in thread
From: Lazar, Lijo @ 2024-03-15 10:13 UTC (permalink / raw)
  To: Le Ma, amd-gfx; +Cc: hawking.zhang, Asher.Song, alexander.deucher



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.

Thanks,
Lijo

> Fixes b70438004a14 ("drm/amdgpu: move buffer funcs setting up a level")
> 
> Signed-off-by: Le Ma <le.ma@amd.com>
> ---
>  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;

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/1] drm/amdgpu: drop setting buffer funcs in sdma442
  2024-03-15 10:13 ` Lazar, Lijo
@ 2024-03-15 10:19   ` Lazar, Lijo
  2024-03-15 12:15   ` Ma, Le
  1 sibling, 0 replies; 6+ messages in thread
From: Lazar, Lijo @ 2024-03-15 10:19 UTC (permalink / raw)
  To: Le Ma, amd-gfx; +Cc: hawking.zhang, Asher.Song, alexander.deucher



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 <le.ma@amd.com>
>> ---
>>  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;

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH 1/1] drm/amdgpu: drop setting buffer funcs in sdma442
  2024-03-15 10:13 ` Lazar, Lijo
  2024-03-15 10:19   ` Lazar, Lijo
@ 2024-03-15 12:15   ` Ma, Le
  2024-03-15 12:23     ` Lazar, Lijo
  1 sibling, 1 reply; 6+ messages in thread
From: Ma, Le @ 2024-03-15 12:15 UTC (permalink / raw)
  To: Lazar, Lijo, amd-gfx@lists.freedesktop.org
  Cc: Zhang, Hawking, Song, Asher, Deucher, Alexander

[-- Attachment #1: Type: text/plain, Size: 4251 bytes --]

[AMD Official Use Only - General]


> -----Original Message-----
> From: Lazar, Lijo <Lijo.Lazar@amd.com<mailto:Lijo.Lazar@amd.com>>
> Sent: Friday, March 15, 2024 6:14 PM
> To: Ma, Le <Le.Ma@amd.com<mailto:Le.Ma@amd.com>>; amd-gfx@lists.freedesktop.org<mailto:amd-gfx@lists.freedesktop.org>
> Cc: Zhang, Hawking <Hawking.Zhang@amd.com<mailto:Hawking.Zhang@amd.com>>; Song, Asher
> <Asher.Song@amd.com<mailto:Asher.Song@amd.com>>; Deucher, Alexander <Alexander.Deucher@amd.com<mailto:Alexander.Deucher@amd.com>>
> Subject: Re: [PATCH 1/1] drm/amdgpu: drop setting buffer funcs in sdma442
>
>
>
> 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.

Thanks for pointing out this. I think we can make another separated patch to handle it for mode2 since this patch is for alignment purpose. Actually, the set_buffer_funcs will not be unset/set in reset case as the conditions below:

      void amdgpu_ttm_set_buffer_funcs_status(struct amdgpu_device *adev, bool enable)
      {
              struct ttm_resource_manager *man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
              uint64_t size;
              int r;

              if (!adev->mman.initialized || amdgpu_in_reset(adev) ||
                  adev->mman.buffer_funcs_enabled == enable || adev->gmc.is_app_apu)
                      return;


>
> Thanks,
> Lijo
>
> > Fixes b70438004a14 ("drm/amdgpu: move buffer funcs setting up a
> > level")
> >
> > Signed-off-by: Le Ma <le.ma@amd.com<mailto:le.ma@amd.com>>
> > ---
> >  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;

[-- Attachment #2: Type: text/html, Size: 17505 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/1] drm/amdgpu: drop setting buffer funcs in sdma442
  2024-03-15 12:15   ` Ma, Le
@ 2024-03-15 12:23     ` Lazar, Lijo
  0 siblings, 0 replies; 6+ messages in thread
From: Lazar, Lijo @ 2024-03-15 12:23 UTC (permalink / raw)
  To: Ma, Le, amd-gfx@lists.freedesktop.org
  Cc: Zhang, Hawking, Song, Asher, Deucher, Alexander



On 3/15/2024 5:45 PM, Ma, Le wrote:
> [AMD Official Use Only - General]
> 
>  
>  
>> -----Original Message-----
>> From: Lazar, Lijo <_Lijo.Lazar@amd.com_ <mailto:Lijo.Lazar@amd.com>>
>> Sent: Friday, March 15, 2024 6:14 PM
>> To: Ma, Le <_Le.Ma@amd.com_ <mailto:Le.Ma@amd.com>>; _amd-gfx@lists.freedesktop.org_
> <mailto:amd-gfx@lists.freedesktop.org>
>> Cc: Zhang, Hawking <_Hawking.Zhang@amd.com_ <mailto:Hawking.Zhang@amd.com>>; Song, Asher
>> <_Asher.Song@amd.com_ <mailto:Asher.Song@amd.com>>; Deucher, Alexander
> <_Alexander.Deucher@amd.com_ <mailto:Alexander.Deucher@amd.com>>
>> Subject: Re: [PATCH 1/1] drm/amdgpu: drop setting buffer funcs in sdma442
>> 
>> 
>> 
>> 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.
>  
> Thanks for pointing out this. I think we can make another separated
> patch to handle it for mode2 since this patch is for alignment purpose.
> Actually, the set_buffer_funcs will not be unset/set in reset case as
> the conditions below:
>  
> void amdgpu_ttm_set_buffer_funcs_status(struct amdgpu_device *adev, bool
> enable)
> {
>         struct ttm_resource_manager *man =
> ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
>         uint64_t size;
>         int r;
>  
>         if (!adev->mman.initialized || amdgpu_in_reset(adev) ||
>             adev->mman.buffer_funcs_enabled == enable ||
> adev->gmc.is_app_apu)
>                 return;
>  
>  

Thanks for clarifying.

In this case, we don't require that since reset() condition is set. I
saw amdgpu_ttm_set_buffer_funcs_status(tmp_adev, true) getting called in
amdgpu_do_asic_reset(), thought it was affected by reset.

Thanks,
Lijo

>> 
>> Thanks,
>> Lijo
>> 
>> > Fixes b70438004a14 ("drm/amdgpu: move buffer funcs setting up a
>> > level")
>> >
>> > Signed-off-by: Le Ma <_le.ma@amd.com_ <mailto:le.ma@amd.com>>
>> > ---
>> >  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;

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-03-15 12:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-15  9:16 [PATCH 1/1] drm/amdgpu: drop setting buffer funcs in sdma442 Le Ma
2024-03-15  9:22 ` Zhang, Hawking
2024-03-15 10:13 ` Lazar, Lijo
2024-03-15 10:19   ` Lazar, Lijo
2024-03-15 12:15   ` Ma, Le
2024-03-15 12:23     ` Lazar, Lijo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox