All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/amdgpu/sdma4: use paging queue for buffer funcs
@ 2018-11-07 17:29 Alex Deucher
       [not found] ` <20181107172949.27158-1-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 11+ messages in thread
From: Alex Deucher @ 2018-11-07 17:29 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Alex Deucher

Use the paging queue for buffer functions to avoid contention
with the other queues.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
index e39a09eb0fa1..4b5b47dd2f4c 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
@@ -662,6 +662,10 @@ static void sdma_v4_0_page_stop(struct amdgpu_device *adev)
 	u32 rb_cntl, ib_cntl;
 	int i;
 
+	if ((adev->mman.buffer_funcs_ring == sdma0) ||
+	    (adev->mman.buffer_funcs_ring == sdma1))
+		amdgpu_ttm_set_buffer_funcs_status(adev, false);
+
 	for (i = 0; i < adev->sdma.num_instances; i++) {
 		rb_cntl = RREG32_SDMA(i, mmSDMA0_PAGE_RB_CNTL);
 		rb_cntl = REG_SET_FIELD(rb_cntl, SDMA0_PAGE_RB_CNTL,
@@ -1152,6 +1156,9 @@ static int sdma_v4_0_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)
@@ -2054,7 +2061,10 @@ static const struct amdgpu_buffer_funcs sdma_v4_0_buffer_funcs = {
 static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
 {
 	adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
-	adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
+	if (adev->sdma.has_page_queue)
+		adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page;
+	else
+		adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
 }
 
 static const struct amdgpu_vm_pte_funcs sdma_v4_0_vm_pte_funcs = {
-- 
2.13.6

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* [PATCH 2/2] drm/amdgpu/sdma4: use page queue 1 for buffer funcs
       [not found] ` <20181107172949.27158-1-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
@ 2018-11-07 17:29   ` Alex Deucher
       [not found]     ` <20181107172949.27158-2-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
  2018-11-08  2:05   ` [PATCH 1/2] drm/amdgpu/sdma4: use paging queue " Zhang, Jerry(Junwei)
  2018-11-08  8:01   ` Christian König
  2 siblings, 1 reply; 11+ messages in thread
From: Alex Deucher @ 2018-11-07 17:29 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Alex Deucher

Use page queue 0 rather than 1 to avoid contention with GPUVM
updates using page queue 0.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
index 4b5b47dd2f4c..44c16a5c5428 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
@@ -2062,7 +2062,8 @@ static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
 {
 	adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
 	if (adev->sdma.has_page_queue)
-		adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page;
+		/* use page queue 1 since page queue 0 will be used for VM updates */
+		adev->mman.buffer_funcs_ring = &adev->sdma.instance[1].page;
 	else
 		adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
 }
-- 
2.13.6

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH 1/2] drm/amdgpu/sdma4: use paging queue for buffer funcs
       [not found] ` <20181107172949.27158-1-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
  2018-11-07 17:29   ` [PATCH 2/2] drm/amdgpu/sdma4: use page queue 1 " Alex Deucher
@ 2018-11-08  2:05   ` Zhang, Jerry(Junwei)
       [not found]     ` <19502b5a-8508-3b59-b50e-44de4ade535b-5C7GfCeVMHo@public.gmane.org>
  2018-11-08  8:01   ` Christian König
  2 siblings, 1 reply; 11+ messages in thread
From: Zhang, Jerry(Junwei) @ 2018-11-08  2:05 UTC (permalink / raw)
  To: Alex Deucher, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Alex Deucher

On 11/8/18 1:29 AM, Alex Deucher wrote:
> Use the paging queue for buffer functions to avoid contention
> with the other queues.
>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>

> ---
>   drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 12 +++++++++++-
>   1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> index e39a09eb0fa1..4b5b47dd2f4c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> @@ -662,6 +662,10 @@ static void sdma_v4_0_page_stop(struct amdgpu_device *adev)
>   	u32 rb_cntl, ib_cntl;
>   	int i;
>   
> +	if ((adev->mman.buffer_funcs_ring == sdma0) ||
> +	    (adev->mman.buffer_funcs_ring == sdma1))
> +		amdgpu_ttm_set_buffer_funcs_status(adev, false);
> +
>   	for (i = 0; i < adev->sdma.num_instances; i++) {
>   		rb_cntl = RREG32_SDMA(i, mmSDMA0_PAGE_RB_CNTL);
>   		rb_cntl = REG_SET_FIELD(rb_cntl, SDMA0_PAGE_RB_CNTL,
> @@ -1152,6 +1156,9 @@ static int sdma_v4_0_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)
> @@ -2054,7 +2061,10 @@ static const struct amdgpu_buffer_funcs sdma_v4_0_buffer_funcs = {
>   static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
>   {
>   	adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
> -	adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
> +	if (adev->sdma.has_page_queue)
> +		adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page;
> +	else
> +		adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
>   }
>   
>   static const struct amdgpu_vm_pte_funcs sdma_v4_0_vm_pte_funcs = {

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH 2/2] drm/amdgpu/sdma4: use page queue 1 for buffer funcs
       [not found]     ` <20181107172949.27158-2-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
@ 2018-11-08  2:11       ` Zhang, Jerry(Junwei)
       [not found]         ` <9da6b213-e2d2-c0eb-6f6d-8ce39bcc2152-5C7GfCeVMHo@public.gmane.org>
  2018-11-08  8:00       ` Christian König
  1 sibling, 1 reply; 11+ messages in thread
From: Zhang, Jerry(Junwei) @ 2018-11-08  2:11 UTC (permalink / raw)
  To: Alex Deucher, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Alex Deucher

On 11/8/18 1:29 AM, Alex Deucher wrote:
> Use page queue 0 rather than 1 to avoid contention with GPUVM
> updates using page queue 0.
>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

A little confuse, I thought we were going to use page queue(in any 
instance) for PT update,
gfx ring for general sdma jobs.

Any missing?

Regards,
Jerry
> ---
>   drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> index 4b5b47dd2f4c..44c16a5c5428 100644
> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> @@ -2062,7 +2062,8 @@ static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
>   {
>   	adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
>   	if (adev->sdma.has_page_queue)
> -		adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page;
> +		/* use page queue 1 since page queue 0 will be used for VM updates */
> +		adev->mman.buffer_funcs_ring = &adev->sdma.instance[1].page;
>   	else
>   		adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
>   }

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH 2/2] drm/amdgpu/sdma4: use page queue 1 for buffer funcs
       [not found]         ` <9da6b213-e2d2-c0eb-6f6d-8ce39bcc2152-5C7GfCeVMHo@public.gmane.org>
@ 2018-11-08  2:58           ` Alex Deucher
  0 siblings, 0 replies; 11+ messages in thread
From: Alex Deucher @ 2018-11-08  2:58 UTC (permalink / raw)
  To: Junwei Zhang; +Cc: Deucher, Alexander, amd-gfx list

On Wed, Nov 7, 2018 at 9:11 PM Zhang, Jerry(Junwei) <Jerry.Zhang@amd.com> wrote:
>
> On 11/8/18 1:29 AM, Alex Deucher wrote:
> > Use page queue 0 rather than 1 to avoid contention with GPUVM
> > updates using page queue 0.
> >
> > Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
>
> A little confuse, I thought we were going to use page queue(in any
> instance) for PT update,
> gfx ring for general sdma jobs.
>
> Any missing?

Yes, you are right, I mis-read the code.  I'll drop this patch.

Alex

>
> Regards,
> Jerry
> > ---
> >   drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 3 ++-
> >   1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> > index 4b5b47dd2f4c..44c16a5c5428 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> > @@ -2062,7 +2062,8 @@ static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
> >   {
> >       adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
> >       if (adev->sdma.has_page_queue)
> > -             adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page;
> > +             /* use page queue 1 since page queue 0 will be used for VM updates */
> > +             adev->mman.buffer_funcs_ring = &adev->sdma.instance[1].page;
> >       else
> >               adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
> >   }
>
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH 1/2] drm/amdgpu/sdma4: use paging queue for buffer funcs
       [not found]     ` <19502b5a-8508-3b59-b50e-44de4ade535b-5C7GfCeVMHo@public.gmane.org>
@ 2018-11-08  2:59       ` Alex Deucher
  2018-11-08  7:44         ` Zhang, Jerry(Junwei)
  0 siblings, 1 reply; 11+ messages in thread
From: Alex Deucher @ 2018-11-08  2:59 UTC (permalink / raw)
  To: Junwei Zhang; +Cc: Deucher, Alexander, amd-gfx list

On Wed, Nov 7, 2018 at 9:05 PM Zhang, Jerry(Junwei) <Jerry.Zhang@amd.com> wrote:
>
> On 11/8/18 1:29 AM, Alex Deucher wrote:
> > Use the paging queue for buffer functions to avoid contention
> > with the other queues.
> >
> > Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>

Can someone with a vega10 test this?

Alex

>
> > ---
> >   drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 12 +++++++++++-
> >   1 file changed, 11 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> > index e39a09eb0fa1..4b5b47dd2f4c 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> > @@ -662,6 +662,10 @@ static void sdma_v4_0_page_stop(struct amdgpu_device *adev)
> >       u32 rb_cntl, ib_cntl;
> >       int i;
> >
> > +     if ((adev->mman.buffer_funcs_ring == sdma0) ||
> > +         (adev->mman.buffer_funcs_ring == sdma1))
> > +             amdgpu_ttm_set_buffer_funcs_status(adev, false);
> > +
> >       for (i = 0; i < adev->sdma.num_instances; i++) {
> >               rb_cntl = RREG32_SDMA(i, mmSDMA0_PAGE_RB_CNTL);
> >               rb_cntl = REG_SET_FIELD(rb_cntl, SDMA0_PAGE_RB_CNTL,
> > @@ -1152,6 +1156,9 @@ static int sdma_v4_0_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)
> > @@ -2054,7 +2061,10 @@ static const struct amdgpu_buffer_funcs sdma_v4_0_buffer_funcs = {
> >   static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
> >   {
> >       adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
> > -     adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
> > +     if (adev->sdma.has_page_queue)
> > +             adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page;
> > +     else
> > +             adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
> >   }
> >
> >   static const struct amdgpu_vm_pte_funcs sdma_v4_0_vm_pte_funcs = {
>
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH 1/2] drm/amdgpu/sdma4: use paging queue for buffer funcs
  2018-11-08  2:59       ` Alex Deucher
@ 2018-11-08  7:44         ` Zhang, Jerry(Junwei)
       [not found]           ` <d7df731c-ce0f-1cad-0cf9-15b06fc738db-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 11+ messages in thread
From: Zhang, Jerry(Junwei) @ 2018-11-08  7:44 UTC (permalink / raw)
  To: Alex Deucher, Gong, Curry; +Cc: Deucher, Alexander, amd-gfx list

+ Curry

On 11/8/18 10:59 AM, Alex Deucher wrote:
> On Wed, Nov 7, 2018 at 9:05 PM Zhang, Jerry(Junwei) <Jerry.Zhang@amd.com> wrote:
>> On 11/8/18 1:29 AM, Alex Deucher wrote:
>>> Use the paging queue for buffer functions to avoid contention
>>> with the other queues.
>>>
>>> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
>> Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>
> Can someone with a vega10 test this?
>
> Alex
>
>>> ---
>>>    drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 12 +++++++++++-
>>>    1 file changed, 11 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
>>> index e39a09eb0fa1..4b5b47dd2f4c 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
>>> @@ -662,6 +662,10 @@ static void sdma_v4_0_page_stop(struct amdgpu_device *adev)
>>>        u32 rb_cntl, ib_cntl;
>>>        int i;
>>>
>>> +     if ((adev->mman.buffer_funcs_ring == sdma0) ||
>>> +         (adev->mman.buffer_funcs_ring == sdma1))
>>> +             amdgpu_ttm_set_buffer_funcs_status(adev, false);
>>> +
>>>        for (i = 0; i < adev->sdma.num_instances; i++) {
>>>                rb_cntl = RREG32_SDMA(i, mmSDMA0_PAGE_RB_CNTL);
>>>                rb_cntl = REG_SET_FIELD(rb_cntl, SDMA0_PAGE_RB_CNTL,
>>> @@ -1152,6 +1156,9 @@ static int sdma_v4_0_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)
>>> @@ -2054,7 +2061,10 @@ static const struct amdgpu_buffer_funcs sdma_v4_0_buffer_funcs = {
>>>    static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
>>>    {
>>>        adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
>>> -     adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
>>> +     if (adev->sdma.has_page_queue)
>>> +             adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page;
>>> +     else
>>> +             adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
>>>    }
>>>
>>>    static const struct amdgpu_vm_pte_funcs sdma_v4_0_vm_pte_funcs = {

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH 2/2] drm/amdgpu/sdma4: use page queue 1 for buffer funcs
       [not found]     ` <20181107172949.27158-2-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
  2018-11-08  2:11       ` Zhang, Jerry(Junwei)
@ 2018-11-08  8:00       ` Christian König
  1 sibling, 0 replies; 11+ messages in thread
From: Christian König @ 2018-11-08  8:00 UTC (permalink / raw)
  To: Alex Deucher, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Alex Deucher

Am 07.11.18 um 18:29 schrieb Alex Deucher:
> Use page queue 0 rather than 1 to avoid contention with GPUVM
> updates using page queue 0.

Well NAK for two reasons:
1. VM updates are currently balanced between page queue 0 and 1.
2. I want to keep one paging queue reserved for fault processing in the 
long term.

Christian.

>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> index 4b5b47dd2f4c..44c16a5c5428 100644
> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> @@ -2062,7 +2062,8 @@ static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
>   {
>   	adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
>   	if (adev->sdma.has_page_queue)
> -		adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page;
> +		/* use page queue 1 since page queue 0 will be used for VM updates */
> +		adev->mman.buffer_funcs_ring = &adev->sdma.instance[1].page;
>   	else
>   		adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
>   }

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH 1/2] drm/amdgpu/sdma4: use paging queue for buffer funcs
       [not found] ` <20181107172949.27158-1-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
  2018-11-07 17:29   ` [PATCH 2/2] drm/amdgpu/sdma4: use page queue 1 " Alex Deucher
  2018-11-08  2:05   ` [PATCH 1/2] drm/amdgpu/sdma4: use paging queue " Zhang, Jerry(Junwei)
@ 2018-11-08  8:01   ` Christian König
  2 siblings, 0 replies; 11+ messages in thread
From: Christian König @ 2018-11-08  8:01 UTC (permalink / raw)
  To: Alex Deucher, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Alex Deucher

Am 07.11.18 um 18:29 schrieb Alex Deucher:
> Use the paging queue for buffer functions to avoid contention
> with the other queues.
>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

Reviewed-by: Christian König <christian.koenig@amd.com>

> ---
>   drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 12 +++++++++++-
>   1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> index e39a09eb0fa1..4b5b47dd2f4c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> @@ -662,6 +662,10 @@ static void sdma_v4_0_page_stop(struct amdgpu_device *adev)
>   	u32 rb_cntl, ib_cntl;
>   	int i;
>   
> +	if ((adev->mman.buffer_funcs_ring == sdma0) ||
> +	    (adev->mman.buffer_funcs_ring == sdma1))
> +		amdgpu_ttm_set_buffer_funcs_status(adev, false);
> +
>   	for (i = 0; i < adev->sdma.num_instances; i++) {
>   		rb_cntl = RREG32_SDMA(i, mmSDMA0_PAGE_RB_CNTL);
>   		rb_cntl = REG_SET_FIELD(rb_cntl, SDMA0_PAGE_RB_CNTL,
> @@ -1152,6 +1156,9 @@ static int sdma_v4_0_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)
> @@ -2054,7 +2061,10 @@ static const struct amdgpu_buffer_funcs sdma_v4_0_buffer_funcs = {
>   static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
>   {
>   	adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
> -	adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
> +	if (adev->sdma.has_page_queue)
> +		adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page;
> +	else
> +		adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
>   }
>   
>   static const struct amdgpu_vm_pte_funcs sdma_v4_0_vm_pte_funcs = {

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* RE: [PATCH 1/2] drm/amdgpu/sdma4: use paging queue for buffer funcs
       [not found]           ` <d7df731c-ce0f-1cad-0cf9-15b06fc738db-5C7GfCeVMHo@public.gmane.org>
@ 2018-11-08  8:14             ` Gong, Curry
       [not found]               ` <BN6PR12MB1586D7AC56967190DFD835B59DC50-/b2+HYfkarTyoQOqIZFxpgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
  0 siblings, 1 reply; 11+ messages in thread
From: Gong, Curry @ 2018-11-08  8:14 UTC (permalink / raw)
  To: Zhang, Jerry, Alex Deucher; +Cc: Deucher, Alexander, amd-gfx list

Hi Alex:

I have tested this patch base on branch "amd-staging-dkms-4.18"
glmark2 and unigine_heaven

Tested-by: Chen Gong <Curry.Gong@amd.com>


-----Original Message-----
From: Zhang, Jerry <Jerry.Zhang@amd.com> 
Sent: Thursday, November 8, 2018 3:45 PM
To: Alex Deucher <alexdeucher@gmail.com>; Gong, Curry <Curry.Gong@amd.com>
Cc: amd-gfx list <amd-gfx@lists.freedesktop.org>; Deucher, Alexander <Alexander.Deucher@amd.com>
Subject: Re: [PATCH 1/2] drm/amdgpu/sdma4: use paging queue for buffer funcs

+ Curry

On 11/8/18 10:59 AM, Alex Deucher wrote:
> On Wed, Nov 7, 2018 at 9:05 PM Zhang, Jerry(Junwei) <Jerry.Zhang@amd.com> wrote:
>> On 11/8/18 1:29 AM, Alex Deucher wrote:
>>> Use the paging queue for buffer functions to avoid contention with 
>>> the other queues.
>>>
>>> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
>> Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>
> Can someone with a vega10 test this?
>
> Alex
>
>>> ---
>>>    drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 12 +++++++++++-
>>>    1 file changed, 11 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c 
>>> b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
>>> index e39a09eb0fa1..4b5b47dd2f4c 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
>>> @@ -662,6 +662,10 @@ static void sdma_v4_0_page_stop(struct amdgpu_device *adev)
>>>        u32 rb_cntl, ib_cntl;
>>>        int i;
>>>
>>> +     if ((adev->mman.buffer_funcs_ring == sdma0) ||
>>> +         (adev->mman.buffer_funcs_ring == sdma1))
>>> +             amdgpu_ttm_set_buffer_funcs_status(adev, false);
>>> +
>>>        for (i = 0; i < adev->sdma.num_instances; i++) {
>>>                rb_cntl = RREG32_SDMA(i, mmSDMA0_PAGE_RB_CNTL);
>>>                rb_cntl = REG_SET_FIELD(rb_cntl, SDMA0_PAGE_RB_CNTL, 
>>> @@ -1152,6 +1156,9 @@ static int sdma_v4_0_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) @@ -2054,7 
>>> +2061,10 @@ static const struct amdgpu_buffer_funcs sdma_v4_0_buffer_funcs = {
>>>    static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
>>>    {
>>>        adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
>>> -     adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
>>> +     if (adev->sdma.has_page_queue)
>>> +             adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page;
>>> +     else
>>> +             adev->mman.buffer_funcs_ring = 
>>> + &adev->sdma.instance[0].ring;
>>>    }
>>>
>>>    static const struct amdgpu_vm_pte_funcs sdma_v4_0_vm_pte_funcs = 
>>> {

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* RE: [PATCH 1/2] drm/amdgpu/sdma4: use paging queue for buffer funcs
       [not found]               ` <BN6PR12MB1586D7AC56967190DFD835B59DC50-/b2+HYfkarTyoQOqIZFxpgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
@ 2018-11-08  8:15                 ` Gong, Curry
  0 siblings, 0 replies; 11+ messages in thread
From: Gong, Curry @ 2018-11-08  8:15 UTC (permalink / raw)
  To: Zhang, Jerry, Alex Deucher; +Cc: Deucher, Alexander, amd-gfx list

Result is pass

-----Original Message-----
From: Gong, Curry 
Sent: Thursday, November 8, 2018 4:14 PM
To: Zhang, Jerry <Jerry.Zhang@amd.com>; Alex Deucher <alexdeucher@gmail.com>
Cc: amd-gfx list <amd-gfx@lists.freedesktop.org>; Deucher, Alexander <Alexander.Deucher@amd.com>
Subject: RE: [PATCH 1/2] drm/amdgpu/sdma4: use paging queue for buffer funcs

Hi Alex:

I have tested this patch base on branch "amd-staging-dkms-4.18"
glmark2 and unigine_heaven

Tested-by: Chen Gong <Curry.Gong@amd.com>


-----Original Message-----
From: Zhang, Jerry <Jerry.Zhang@amd.com>
Sent: Thursday, November 8, 2018 3:45 PM
To: Alex Deucher <alexdeucher@gmail.com>; Gong, Curry <Curry.Gong@amd.com>
Cc: amd-gfx list <amd-gfx@lists.freedesktop.org>; Deucher, Alexander <Alexander.Deucher@amd.com>
Subject: Re: [PATCH 1/2] drm/amdgpu/sdma4: use paging queue for buffer funcs

+ Curry

On 11/8/18 10:59 AM, Alex Deucher wrote:
> On Wed, Nov 7, 2018 at 9:05 PM Zhang, Jerry(Junwei) <Jerry.Zhang@amd.com> wrote:
>> On 11/8/18 1:29 AM, Alex Deucher wrote:
>>> Use the paging queue for buffer functions to avoid contention with 
>>> the other queues.
>>>
>>> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
>> Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>
> Can someone with a vega10 test this?
>
> Alex
>
>>> ---
>>>    drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 12 +++++++++++-
>>>    1 file changed, 11 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
>>> b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
>>> index e39a09eb0fa1..4b5b47dd2f4c 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
>>> @@ -662,6 +662,10 @@ static void sdma_v4_0_page_stop(struct amdgpu_device *adev)
>>>        u32 rb_cntl, ib_cntl;
>>>        int i;
>>>
>>> +     if ((adev->mman.buffer_funcs_ring == sdma0) ||
>>> +         (adev->mman.buffer_funcs_ring == sdma1))
>>> +             amdgpu_ttm_set_buffer_funcs_status(adev, false);
>>> +
>>>        for (i = 0; i < adev->sdma.num_instances; i++) {
>>>                rb_cntl = RREG32_SDMA(i, mmSDMA0_PAGE_RB_CNTL);
>>>                rb_cntl = REG_SET_FIELD(rb_cntl, SDMA0_PAGE_RB_CNTL, 
>>> @@ -1152,6 +1156,9 @@ static int sdma_v4_0_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) @@ -2054,7
>>> +2061,10 @@ static const struct amdgpu_buffer_funcs 
>>> +sdma_v4_0_buffer_funcs = {
>>>    static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
>>>    {
>>>        adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
>>> -     adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
>>> +     if (adev->sdma.has_page_queue)
>>> +             adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page;
>>> +     else
>>> +             adev->mman.buffer_funcs_ring = 
>>> + &adev->sdma.instance[0].ring;
>>>    }
>>>
>>>    static const struct amdgpu_vm_pte_funcs sdma_v4_0_vm_pte_funcs = 
>>> {

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

end of thread, other threads:[~2018-11-08  8:15 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-07 17:29 [PATCH 1/2] drm/amdgpu/sdma4: use paging queue for buffer funcs Alex Deucher
     [not found] ` <20181107172949.27158-1-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
2018-11-07 17:29   ` [PATCH 2/2] drm/amdgpu/sdma4: use page queue 1 " Alex Deucher
     [not found]     ` <20181107172949.27158-2-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
2018-11-08  2:11       ` Zhang, Jerry(Junwei)
     [not found]         ` <9da6b213-e2d2-c0eb-6f6d-8ce39bcc2152-5C7GfCeVMHo@public.gmane.org>
2018-11-08  2:58           ` Alex Deucher
2018-11-08  8:00       ` Christian König
2018-11-08  2:05   ` [PATCH 1/2] drm/amdgpu/sdma4: use paging queue " Zhang, Jerry(Junwei)
     [not found]     ` <19502b5a-8508-3b59-b50e-44de4ade535b-5C7GfCeVMHo@public.gmane.org>
2018-11-08  2:59       ` Alex Deucher
2018-11-08  7:44         ` Zhang, Jerry(Junwei)
     [not found]           ` <d7df731c-ce0f-1cad-0cf9-15b06fc738db-5C7GfCeVMHo@public.gmane.org>
2018-11-08  8:14             ` Gong, Curry
     [not found]               ` <BN6PR12MB1586D7AC56967190DFD835B59DC50-/b2+HYfkarTyoQOqIZFxpgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2018-11-08  8:15                 ` Gong, Curry
2018-11-08  8:01   ` Christian König

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.