[PATCH] drm/amdgpu: add helper to convert a ttm bo to amdgpu_bo

Christian König ckoenig.leichtzumerken at gmail.com
Tue Sep 19 11:33:57 UTC 2017


It actually looks like a valid cleanup to me.

Patch is Reviewed-by: Christian König <christian.koenig at amd.com>.

Regards,
Christian.

Am 19.09.2017 um 05:20 schrieb Andres Rodriguez:
> This is a small cleanup patch from my initial naive attempt at 
> extracting a TTM bo in amdgpu_sync_resv(). It didn't end up being 
> useful in that specific case, but I thought I'd send it out anyways in 
> case you find it useful.
>
> Regards,
> Andres
>
>
> On 2017-09-18 11:17 PM, Andres Rodriguez wrote:
>> Signed-off-by: Andres Rodriguez <andresx7 at gmail.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 8 +++-----
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 5 +++++
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    | 9 +++++----
>>   3 files changed, 13 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>> index 726a662..73eedd3 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>> @@ -40,9 +40,7 @@
>>   static void amdgpu_ttm_bo_destroy(struct ttm_buffer_object *tbo)
>>   {
>>       struct amdgpu_device *adev = amdgpu_ttm_adev(tbo->bdev);
>> -    struct amdgpu_bo *bo;
>> -
>> -    bo = container_of(tbo, struct amdgpu_bo, tbo);
>> +    struct amdgpu_bo *bo = ttm_to_amdgpu_bo(tbo);
>>         amdgpu_bo_kunmap(bo);
>>   @@ -891,7 +889,7 @@ void amdgpu_bo_move_notify(struct 
>> ttm_buffer_object *bo,
>>       if (!amdgpu_ttm_bo_is_amdgpu_bo(bo))
>>           return;
>>   -    abo = container_of(bo, struct amdgpu_bo, tbo);
>> +    abo = ttm_to_amdgpu_bo(bo);
>>       amdgpu_vm_bo_invalidate(adev, abo, evict);
>>         amdgpu_bo_kunmap(abo);
>> @@ -918,7 +916,7 @@ int amdgpu_bo_fault_reserve_notify(struct 
>> ttm_buffer_object *bo)
>>       if (!amdgpu_ttm_bo_is_amdgpu_bo(bo))
>>           return 0;
>>   -    abo = container_of(bo, struct amdgpu_bo, tbo);
>> +    abo = ttm_to_amdgpu_bo(bo);
>>         /* Remember that this BO was accessed by the CPU */
>>       abo->flags |= AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
>> index 39b6bf6..c26ef53 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
>> @@ -94,6 +94,11 @@ struct amdgpu_bo {
>>       };
>>   };
>>   +static inline struct amdgpu_bo *ttm_to_amdgpu_bo(struct 
>> ttm_buffer_object *tbo)
>> +{
>> +    return container_of(tbo, struct amdgpu_bo, tbo);
>> +}
>> +
>>   /**
>>    * amdgpu_mem_type_to_domain - return domain corresponding to mem_type
>>    * @mem_type:    ttm memory type
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> index b2b11e1..c9c059d 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> @@ -44,6 +44,7 @@
>>   #include <linux/pagemap.h>
>>   #include <linux/debugfs.h>
>>   #include "amdgpu.h"
>> +#include "amdgpu_object.h"
>>   #include "amdgpu_trace.h"
>>   #include "bif/bif_4_1_d.h"
>>   @@ -209,7 +210,7 @@ static void amdgpu_evict_flags(struct 
>> ttm_buffer_object *bo,
>>           placement->num_busy_placement = 1;
>>           return;
>>       }
>> -    abo = container_of(bo, struct amdgpu_bo, tbo);
>> +    abo = ttm_to_amdgpu_bo(bo);
>>       switch (bo->mem.mem_type) {
>>       case TTM_PL_VRAM:
>>           if (adev->mman.buffer_funcs &&
>> @@ -257,7 +258,7 @@ static void amdgpu_evict_flags(struct 
>> ttm_buffer_object *bo,
>>     static int amdgpu_verify_access(struct ttm_buffer_object *bo, 
>> struct file *filp)
>>   {
>> -    struct amdgpu_bo *abo = container_of(bo, struct amdgpu_bo, tbo);
>> +    struct amdgpu_bo *abo = ttm_to_amdgpu_bo(bo);
>>         if (amdgpu_ttm_tt_get_usermm(bo->ttm))
>>           return -EPERM;
>> @@ -484,7 +485,7 @@ static int amdgpu_bo_move(struct 
>> ttm_buffer_object *bo,
>>       int r;
>>         /* Can't move a pinned BO */
>> -    abo = container_of(bo, struct amdgpu_bo, tbo);
>> +    abo = ttm_to_amdgpu_bo(bo);
>>       if (WARN_ON_ONCE(abo->pin_count > 0))
>>           return -EINVAL;
>>   @@ -1172,7 +1173,7 @@ static int amdgpu_ttm_access_memory(struct 
>> ttm_buffer_object *bo,
>>                       unsigned long offset,
>>                       void *buf, int len, int write)
>>   {
>> -    struct amdgpu_bo *abo = container_of(bo, struct amdgpu_bo, tbo);
>> +    struct amdgpu_bo *abo = ttm_to_amdgpu_bo(bo);
>>       struct amdgpu_device *adev = amdgpu_ttm_adev(abo->tbo.bdev);
>>       struct drm_mm_node *nodes = abo->tbo.mem.mm_node;
>>       uint32_t value = 0;
>>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx




More information about the amd-gfx mailing list