[3/5] drm/amdgpu:fix RB cost calculator

Submitted by Liu, Monk on Aug. 26, 2016, 6:39 a.m.

Details

Message ID 1472193560-29411-3-git-send-email-Monk.Liu@amd.com
State New
Headers show
Series "Series without cover letter" ( rev: 1 ) in AMD X.Org drivers

Not browsing as part of any series.

Commit Message

Liu, Monk Aug. 26, 2016, 6:39 a.m.
Change-Id: Ie3e4587ed49c487c562f45a99f236a76727ace1e
Signed-off-by: Monk Liu <Monk.Liu@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
index 029ee79..6ad45fa 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
@@ -151,7 +151,7 @@  int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
 		return -EINVAL;
 	}
 
-	r = amdgpu_ring_alloc(ring, 256 * num_ibs);
+	r = amdgpu_ring_alloc(ring, 256 + (num_ibs << 4));
 	if (r) {
 		dev_err(adev->dev, "scheduling IB failed (%d).\n", r);
 		return r;

Comments

This has just gone into drm-next-4.9-wip and caused lots of logging noise.

Seems to work OK though.

Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_fence_gfx [amdgpu]] 
*ERROR* amdgpu: writing more dwords to the ring than expected!
Sep 14 23:18:38 ph4 last message repeated 11 times
Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR* 
amdgpu: writing more dwords to the ring than expected!
Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR* 
amdgpu: writing more dwords to the ring than expected!
Sep 14 23:18:38 ph4 kernel: [drm:amdgpu_ring_insert_nop [amdgpu]] 
*ERROR* amdgpu: writing more dwords to the ring than expected!
Sep 14 23:18:38 ph4 last message repeated 10 times
Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_ib_gfx [amdgpu]] 
*ERROR* amdgpu: writing more dwords to the ring than expected!
Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_ib_gfx [amdgpu]] 
*ERROR* amdgpu: writing more dwords to the ring than expected!
Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_hdp_invalidate 
[amdgpu]] *ERROR* amdgpu: writing more dwords to the ring than expected!
Sep 14 23:18:38 ph4 last message repeated 4 times
Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_fence_gfx [amdgpu]] 
*ERROR* amdgpu: writing more dwords to the ring than expected!
Sep 14 23:18:38 ph4 last message repeated 11 times
Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR* 
amdgpu: writing more dwords to the ring than expected!
Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR* 
amdgpu: writing more dwords to the ring than expected!
Sep 14 23:18:38 ph4 kernel: [drm:amdgpu_ring_insert_nop [amdgpu]] 
*ERROR* amdgpu: writing more dwords to the ring than expected!
Sep 14 23:18:38 ph4 last message repeated 10 times

Monk Liu wrote:
> Change-Id: Ie3e4587ed49c487c562f45a99f236a76727ace1e
> Signed-off-by: Monk Liu <Monk.Liu@amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
> index 029ee79..6ad45fa 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
> @@ -151,7 +151,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
>   		return -EINVAL;
>   	}
>
> -	r = amdgpu_ring_alloc(ring, 256 * num_ibs);
> +	r = amdgpu_ring_alloc(ring, 256 + (num_ibs << 4));
>   	if (r) {
>   		dev_err(adev->dev, "scheduling IB failed (%d).\n", r);
>   		return r;
>
256dw for the header are probably not enough.

Since we now uses NOPs for the CE/DE sync we only need 256dw for that 
alone. I suggest to raise that to 512.

Christian.

Am 15.09.2016 um 00:24 schrieb Andy Furniss:
> This has just gone into drm-next-4.9-wip and caused lots of logging 
> noise.
>
> Seems to work OK though.
>
> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_fence_gfx 
> [amdgpu]] *ERROR* amdgpu: writing more dwords to the ring than expected!
> Sep 14 23:18:38 ph4 last message repeated 11 times
> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR* 
> amdgpu: writing more dwords to the ring than expected!
> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR* 
> amdgpu: writing more dwords to the ring than expected!
> Sep 14 23:18:38 ph4 kernel: [drm:amdgpu_ring_insert_nop [amdgpu]] 
> *ERROR* amdgpu: writing more dwords to the ring than expected!
> Sep 14 23:18:38 ph4 last message repeated 10 times
> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_ib_gfx [amdgpu]] 
> *ERROR* amdgpu: writing more dwords to the ring than expected!
> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_ib_gfx [amdgpu]] 
> *ERROR* amdgpu: writing more dwords to the ring than expected!
> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_hdp_invalidate 
> [amdgpu]] *ERROR* amdgpu: writing more dwords to the ring than expected!
> Sep 14 23:18:38 ph4 last message repeated 4 times
> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_fence_gfx 
> [amdgpu]] *ERROR* amdgpu: writing more dwords to the ring than expected!
> Sep 14 23:18:38 ph4 last message repeated 11 times
> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR* 
> amdgpu: writing more dwords to the ring than expected!
> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR* 
> amdgpu: writing more dwords to the ring than expected!
> Sep 14 23:18:38 ph4 kernel: [drm:amdgpu_ring_insert_nop [amdgpu]] 
> *ERROR* amdgpu: writing more dwords to the ring than expected!
> Sep 14 23:18:38 ph4 last message repeated 10 times
>
> Monk Liu wrote:
>> Change-Id: Ie3e4587ed49c487c562f45a99f236a76727ace1e
>> Signed-off-by: Monk Liu <Monk.Liu@amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
>> index 029ee79..6ad45fa 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
>> @@ -151,7 +151,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, 
>> unsigned num_ibs,
>>           return -EINVAL;
>>       }
>>
>> -    r = amdgpu_ring_alloc(ring, 256 * num_ibs);
>> +    r = amdgpu_ring_alloc(ring, 256 + (num_ibs << 4));
>>       if (r) {
>>           dev_err(adev->dev, "scheduling IB failed (%d).\n", r);
>>           return r;
>>
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Is that applied to all ring ?

Cuz seems only GFX ring each lot of dw per submit ... 

BR Monk

-----Original Message-----
From: Christian König [mailto:deathsimple@vodafone.de] 

Sent: Thursday, September 15, 2016 3:24 PM
To: Andy Furniss <adf.lists@gmail.com>; Liu, Monk <Monk.Liu@amd.com>; amd-gfx@lists.freedesktop.org
Subject: Re: [PATCH 3/5] drm/amdgpu:fix RB cost calculator

256dw for the header are probably not enough.

Since we now uses NOPs for the CE/DE sync we only need 256dw for that alone. I suggest to raise that to 512.

Christian.

Am 15.09.2016 um 00:24 schrieb Andy Furniss:
> This has just gone into drm-next-4.9-wip and caused lots of logging 

> noise.

>

> Seems to work OK though.

>

> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_fence_gfx 

> [amdgpu]] *ERROR* amdgpu: writing more dwords to the ring than expected!

> Sep 14 23:18:38 ph4 last message repeated 11 times Sep 14 23:18:38 ph4 

> kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR*

> amdgpu: writing more dwords to the ring than expected!

> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR*

> amdgpu: writing more dwords to the ring than expected!

> Sep 14 23:18:38 ph4 kernel: [drm:amdgpu_ring_insert_nop [amdgpu]]

> *ERROR* amdgpu: writing more dwords to the ring than expected!

> Sep 14 23:18:38 ph4 last message repeated 10 times Sep 14 23:18:38 ph4 

> kernel: [drm:gfx_v8_0_ring_emit_ib_gfx [amdgpu]]

> *ERROR* amdgpu: writing more dwords to the ring than expected!

> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_ib_gfx [amdgpu]]

> *ERROR* amdgpu: writing more dwords to the ring than expected!

> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_hdp_invalidate

> [amdgpu]] *ERROR* amdgpu: writing more dwords to the ring than expected!

> Sep 14 23:18:38 ph4 last message repeated 4 times Sep 14 23:18:38 ph4 

> kernel: [drm:gfx_v8_0_ring_emit_fence_gfx [amdgpu]] *ERROR* amdgpu: 

> writing more dwords to the ring than expected!

> Sep 14 23:18:38 ph4 last message repeated 11 times Sep 14 23:18:38 ph4 

> kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR*

> amdgpu: writing more dwords to the ring than expected!

> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR*

> amdgpu: writing more dwords to the ring than expected!

> Sep 14 23:18:38 ph4 kernel: [drm:amdgpu_ring_insert_nop [amdgpu]]

> *ERROR* amdgpu: writing more dwords to the ring than expected!

> Sep 14 23:18:38 ph4 last message repeated 10 times

>

> Monk Liu wrote:

>> Change-Id: Ie3e4587ed49c487c562f45a99f236a76727ace1e

>> Signed-off-by: Monk Liu <Monk.Liu@amd.com>

>> ---

>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 2 +-

>>   1 file changed, 1 insertion(+), 1 deletion(-)

>>

>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c

>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c

>> index 029ee79..6ad45fa 100644

>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c

>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c

>> @@ -151,7 +151,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, 

>> unsigned num_ibs,

>>           return -EINVAL;

>>       }

>>

>> -    r = amdgpu_ring_alloc(ring, 256 * num_ibs);

>> +    r = amdgpu_ring_alloc(ring, 256 + (num_ibs << 4));

>>       if (r) {

>>           dev_err(adev->dev, "scheduling IB failed (%d).\n", r);

>>           return r;

>>

>

> _______________________________________________

> amd-gfx mailing list

> amd-gfx@lists.freedesktop.org

> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Alex fixed this up in a rather complete series for all engines/rings.

Christian.

Am 18.09.2016 um 05:47 schrieb Liu, Monk:
> Is that applied to all ring ?
>
> Cuz seems only GFX ring each lot of dw per submit ...
>
> BR Monk
>
> -----Original Message-----
> From: Christian König [mailto:deathsimple@vodafone.de]
> Sent: Thursday, September 15, 2016 3:24 PM
> To: Andy Furniss <adf.lists@gmail.com>; Liu, Monk <Monk.Liu@amd.com>; amd-gfx@lists.freedesktop.org
> Subject: Re: [PATCH 3/5] drm/amdgpu:fix RB cost calculator
>
> 256dw for the header are probably not enough.
>
> Since we now uses NOPs for the CE/DE sync we only need 256dw for that alone. I suggest to raise that to 512.
>
> Christian.
>
> Am 15.09.2016 um 00:24 schrieb Andy Furniss:
>> This has just gone into drm-next-4.9-wip and caused lots of logging
>> noise.
>>
>> Seems to work OK though.
>>
>> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_fence_gfx
>> [amdgpu]] *ERROR* amdgpu: writing more dwords to the ring than expected!
>> Sep 14 23:18:38 ph4 last message repeated 11 times Sep 14 23:18:38 ph4
>> kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR*
>> amdgpu: writing more dwords to the ring than expected!
>> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR*
>> amdgpu: writing more dwords to the ring than expected!
>> Sep 14 23:18:38 ph4 kernel: [drm:amdgpu_ring_insert_nop [amdgpu]]
>> *ERROR* amdgpu: writing more dwords to the ring than expected!
>> Sep 14 23:18:38 ph4 last message repeated 10 times Sep 14 23:18:38 ph4
>> kernel: [drm:gfx_v8_0_ring_emit_ib_gfx [amdgpu]]
>> *ERROR* amdgpu: writing more dwords to the ring than expected!
>> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_ib_gfx [amdgpu]]
>> *ERROR* amdgpu: writing more dwords to the ring than expected!
>> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_0_ring_emit_hdp_invalidate
>> [amdgpu]] *ERROR* amdgpu: writing more dwords to the ring than expected!
>> Sep 14 23:18:38 ph4 last message repeated 4 times Sep 14 23:18:38 ph4
>> kernel: [drm:gfx_v8_0_ring_emit_fence_gfx [amdgpu]] *ERROR* amdgpu:
>> writing more dwords to the ring than expected!
>> Sep 14 23:18:38 ph4 last message repeated 11 times Sep 14 23:18:38 ph4
>> kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR*
>> amdgpu: writing more dwords to the ring than expected!
>> Sep 14 23:18:38 ph4 kernel: [drm:gfx_v8_ring_emit_sb [amdgpu]] *ERROR*
>> amdgpu: writing more dwords to the ring than expected!
>> Sep 14 23:18:38 ph4 kernel: [drm:amdgpu_ring_insert_nop [amdgpu]]
>> *ERROR* amdgpu: writing more dwords to the ring than expected!
>> Sep 14 23:18:38 ph4 last message repeated 10 times
>>
>> Monk Liu wrote:
>>> Change-Id: Ie3e4587ed49c487c562f45a99f236a76727ace1e
>>> Signed-off-by: Monk Liu <Monk.Liu@amd.com>
>>> ---
>>>    drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
>>> index 029ee79..6ad45fa 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
>>> @@ -151,7 +151,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring,
>>> unsigned num_ibs,
>>>            return -EINVAL;
>>>        }
>>>
>>> -    r = amdgpu_ring_alloc(ring, 256 * num_ibs);
>>> +    r = amdgpu_ring_alloc(ring, 256 + (num_ibs << 4));
>>>        if (r) {
>>>            dev_err(adev->dev, "scheduling IB failed (%d).\n", r);
>>>            return r;
>>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx