drm/amdgpu: improve PRT syncing

Submitted by Christian König on Sept. 12, 2017, 12:06 p.m.

Details

Message ID 1505218001-5908-1-git-send-email-deathsimple@vodafone.de
State New
Headers show
Series "drm/amdgpu: improve PRT syncing" ( rev: 1 ) in AMD X.Org drivers

Not browsing as part of any series.

Commit Message

Christian König Sept. 12, 2017, 12:06 p.m.
From: Christian König <christian.koenig@amd.com>

Just clean that up a bit more.

Signed-off-by: Christian König <christian.koenig@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 5 -----
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 +-
 2 files changed, 1 insertion(+), 6 deletions(-)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index b59749d..db5dbd3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -760,11 +760,6 @@  static int amdgpu_bo_vm_update_pte(struct amdgpu_cs_parser *p)
 	if (r)
 		return r;
 
-	r = amdgpu_sync_fence(adev, &p->job->sync,
-			      fpriv->prt_va->last_pt_update);
-	if (r)
-		return r;
-
 	if (amdgpu_sriov_vf(adev)) {
 		struct dma_fence *f;
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 6b95ba6..2f577da 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -1768,7 +1768,7 @@  int amdgpu_vm_bo_update(struct amdgpu_device *adev,
 	else
 		flags = 0x0;
 
-	if (clear || (bo && bo->tbo.resv == vm->root.base.bo->tbo.resv))
+	if (clear || !bo || bo->tbo.resv == vm->root.base.bo->tbo.resv)
 		last_update = &vm->last_update;
 	else
 		last_update = &bo_va->last_pt_update;

Comments

Could you stop the clean for syncing? and wait we turn back performance 
first?

Since you merge too kinds of fence to vm->last_update, we will be 
difficult to optimize which fence can remove.

Regards,

David Zhou


On 2017年09月12日 20:06, Christian König wrote:
> From: Christian König <christian.koenig@amd.com>
>
> Just clean that up a bit more.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 5 -----
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 +-
>   2 files changed, 1 insertion(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> index b59749d..db5dbd3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> @@ -760,11 +760,6 @@ static int amdgpu_bo_vm_update_pte(struct amdgpu_cs_parser *p)
>   	if (r)
>   		return r;
>   
> -	r = amdgpu_sync_fence(adev, &p->job->sync,
> -			      fpriv->prt_va->last_pt_update);
> -	if (r)
> -		return r;
> -
>   	if (amdgpu_sriov_vf(adev)) {
>   		struct dma_fence *f;
>   
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index 6b95ba6..2f577da 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -1768,7 +1768,7 @@ int amdgpu_vm_bo_update(struct amdgpu_device *adev,
>   	else
>   		flags = 0x0;
>   
> -	if (clear || (bo && bo->tbo.resv == vm->root.base.bo->tbo.resv))
> +	if (clear || !bo || bo->tbo.resv == vm->root.base.bo->tbo.resv)
>   		last_update = &vm->last_update;
>   	else
>   		last_update = &bo_va->last_pt_update;
> Could you stop the clean for syncing? and wait we turn back 
> performance first?
Performance is not that important here, what we need is correct handling 
and to simplify the code first.

If the closed source UMD is concerned about the performance hit with per 
VM BOs it should simply revert to not using them.

Regards,
Christian.

Am 13.09.2017 um 04:20 schrieb zhoucm1:
> Could you stop the clean for syncing? and wait we turn back 
> performance first?
>
> Since you merge too kinds of fence to vm->last_update, we will be 
> difficult to optimize which fence can remove.
>
> Regards,
>
> David Zhou
>
>
> On 2017年09月12日 20:06, Christian König wrote:
>> From: Christian König <christian.koenig@amd.com>
>>
>> Just clean that up a bit more.
>>
>> Signed-off-by: Christian König <christian.koenig@amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 5 -----
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 +-
>>   2 files changed, 1 insertion(+), 6 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>> index b59749d..db5dbd3 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>> @@ -760,11 +760,6 @@ static int amdgpu_bo_vm_update_pte(struct 
>> amdgpu_cs_parser *p)
>>       if (r)
>>           return r;
>>   -    r = amdgpu_sync_fence(adev, &p->job->sync,
>> -                  fpriv->prt_va->last_pt_update);
>> -    if (r)
>> -        return r;
>> -
>>       if (amdgpu_sriov_vf(adev)) {
>>           struct dma_fence *f;
>>   diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> index 6b95ba6..2f577da 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> @@ -1768,7 +1768,7 @@ int amdgpu_vm_bo_update(struct amdgpu_device 
>> *adev,
>>       else
>>           flags = 0x0;
>>   -    if (clear || (bo && bo->tbo.resv == vm->root.base.bo->tbo.resv))
>> +    if (clear || !bo || bo->tbo.resv == vm->root.base.bo->tbo.resv)
>>           last_update = &vm->last_update;
>>       else
>>           last_update = &bo_va->last_pt_update;
>