[2/3] drm/amdgpu: use existing function amdgpu_bo_create_kernel

Submitted by Leo Liu on May 31, 2017, 7:28 p.m.

Details

Message ID 20170531192826.17571-2-leo.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

Leo Liu May 31, 2017, 7:28 p.m.
To simplify vce bo create

Signed-off-by: Leo Liu <leo.liu@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 27 +++------------------------
 1 file changed, 3 insertions(+), 24 deletions(-)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
index 735c38d..b9b0906 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
@@ -165,35 +165,14 @@  int amdgpu_vce_sw_init(struct amdgpu_device *adev, unsigned long size)
 	adev->vce.fw_version = ((version_major << 24) | (version_minor << 16) |
 				(binary_id << 8));
 
-	/* allocate firmware, stack and heap BO */
-
-	r = amdgpu_bo_create(adev, size, PAGE_SIZE, true,
-			     AMDGPU_GEM_DOMAIN_VRAM,
-			     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
-			     AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS,
-			     NULL, NULL, &adev->vce.vcpu_bo);
+	r = amdgpu_bo_create_kernel(adev, size, PAGE_SIZE,
+				    AMDGPU_GEM_DOMAIN_VRAM, &adev->vce.vcpu_bo,
+				    &adev->vce.gpu_addr, &adev->vce.cpu_addr);
 	if (r) {
 		dev_err(adev->dev, "(%d) failed to allocate VCE bo\n", r);
 		return r;
 	}
 
-	r = amdgpu_bo_reserve(adev->vce.vcpu_bo, false);
-	if (r) {
-		amdgpu_bo_unref(&adev->vce.vcpu_bo);
-		dev_err(adev->dev, "(%d) failed to reserve VCE bo\n", r);
-		return r;
-	}
-
-	r = amdgpu_bo_pin(adev->vce.vcpu_bo, AMDGPU_GEM_DOMAIN_VRAM,
-			  &adev->vce.gpu_addr);
-	amdgpu_bo_unreserve(adev->vce.vcpu_bo);
-	if (r) {
-		amdgpu_bo_unref(&adev->vce.vcpu_bo);
-		dev_err(adev->dev, "(%d) VCE bo pin failed\n", r);
-		return r;
-	}
-
-
 	ring = &adev->vce.ring[0];
 	rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL];
 	r = amd_sched_entity_init(&ring->sched, &adev->vce.entity,

Comments

Am 31.05.2017 um 21:28 schrieb Leo Liu:
> To simplify vce bo create
>
> Signed-off-by: Leo Liu <leo.liu@amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 27 +++------------------------
>   1 file changed, 3 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
> index 735c38d..b9b0906 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
> @@ -165,35 +165,14 @@ int amdgpu_vce_sw_init(struct amdgpu_device *adev, unsigned long size)
>   	adev->vce.fw_version = ((version_major << 24) | (version_minor << 16) |
>   				(binary_id << 8));
>   
> -	/* allocate firmware, stack and heap BO */
> -
> -	r = amdgpu_bo_create(adev, size, PAGE_SIZE, true,
> -			     AMDGPU_GEM_DOMAIN_VRAM,
> -			     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> -			     AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS,
> -			     NULL, NULL, &adev->vce.vcpu_bo);
> +	r = amdgpu_bo_create_kernel(adev, size, PAGE_SIZE,
> +				    AMDGPU_GEM_DOMAIN_VRAM, &adev->vce.vcpu_bo,
> +				    &adev->vce.gpu_addr, &adev->vce.cpu_addr);

When you now CPU map the BO you also need to make sure that this mapping 
is properly destroyed in amdgpu_vce_sw_fini().

In other words use amdgpu_bo_free_kernel() in amdgpu_vce_sw_fini() as 
well :)

Apart from that the set looks good to me,
Christian.

>   	if (r) {
>   		dev_err(adev->dev, "(%d) failed to allocate VCE bo\n", r);
>   		return r;
>   	}
>   
> -	r = amdgpu_bo_reserve(adev->vce.vcpu_bo, false);
> -	if (r) {
> -		amdgpu_bo_unref(&adev->vce.vcpu_bo);
> -		dev_err(adev->dev, "(%d) failed to reserve VCE bo\n", r);
> -		return r;
> -	}
> -
> -	r = amdgpu_bo_pin(adev->vce.vcpu_bo, AMDGPU_GEM_DOMAIN_VRAM,
> -			  &adev->vce.gpu_addr);
> -	amdgpu_bo_unreserve(adev->vce.vcpu_bo);
> -	if (r) {
> -		amdgpu_bo_unref(&adev->vce.vcpu_bo);
> -		dev_err(adev->dev, "(%d) VCE bo pin failed\n", r);
> -		return r;
> -	}
> -
> -
>   	ring = &adev->vce.ring[0];
>   	rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL];
>   	r = amd_sched_entity_init(&ring->sched, &adev->vce.entity,
On 06/01/2017 06:55 AM, Christian König wrote:
> Am 31.05.2017 um 21:28 schrieb Leo Liu:
>> To simplify vce bo create
>>
>> Signed-off-by: Leo Liu <leo.liu@amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 27 
>> +++------------------------
>>   1 file changed, 3 insertions(+), 24 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
>> index 735c38d..b9b0906 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
>> @@ -165,35 +165,14 @@ int amdgpu_vce_sw_init(struct amdgpu_device 
>> *adev, unsigned long size)
>>       adev->vce.fw_version = ((version_major << 24) | (version_minor 
>> << 16) |
>>                   (binary_id << 8));
>>   -    /* allocate firmware, stack and heap BO */
>> -
>> -    r = amdgpu_bo_create(adev, size, PAGE_SIZE, true,
>> -                 AMDGPU_GEM_DOMAIN_VRAM,
>> -                 AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
>> -                 AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS,
>> -                 NULL, NULL, &adev->vce.vcpu_bo);
>> +    r = amdgpu_bo_create_kernel(adev, size, PAGE_SIZE,
>> +                    AMDGPU_GEM_DOMAIN_VRAM, &adev->vce.vcpu_bo,
>> +                    &adev->vce.gpu_addr, &adev->vce.cpu_addr);
>
> When you now CPU map the BO you also need to make sure that this 
> mapping is properly destroyed in amdgpu_vce_sw_fini().
>
> In other words use amdgpu_bo_free_kernel() in amdgpu_vce_sw_fini() as 
> well :)

Thanks for pointing this out. I will add it following your comment.

Thanks,
Leo

>
> Apart from that the set looks good to me,
> Christian.
>
>>       if (r) {
>>           dev_err(adev->dev, "(%d) failed to allocate VCE bo\n", r);
>>           return r;
>>       }
>>   -    r = amdgpu_bo_reserve(adev->vce.vcpu_bo, false);
>> -    if (r) {
>> -        amdgpu_bo_unref(&adev->vce.vcpu_bo);
>> -        dev_err(adev->dev, "(%d) failed to reserve VCE bo\n", r);
>> -        return r;
>> -    }
>> -
>> -    r = amdgpu_bo_pin(adev->vce.vcpu_bo, AMDGPU_GEM_DOMAIN_VRAM,
>> -              &adev->vce.gpu_addr);
>> -    amdgpu_bo_unreserve(adev->vce.vcpu_bo);
>> -    if (r) {
>> -        amdgpu_bo_unref(&adev->vce.vcpu_bo);
>> -        dev_err(adev->dev, "(%d) VCE bo pin failed\n", r);
>> -        return r;
>> -    }
>> -
>> -
>>       ring = &adev->vce.ring[0];
>>       rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL];
>>       r = amd_sched_entity_init(&ring->sched, &adev->vce.entity,
>
>