[PATCH 2/2] drm/amdgpu: move shadow_list to amdgpu_bo_vm
Das, Nirmoy
nirmoy.das at amd.com
Tue Jun 15 11:59:13 UTC 2021
On 6/15/2021 1:57 PM, Christian König wrote:
>
>
> Am 15.06.21 um 13:51 schrieb Nirmoy Das:
>> Move shadow_list to struct amdgpu_bo_vm as shadow BOs
>> are part of PT/PD BOs.
>>
>> Signed-off-by: Nirmoy Das <nirmoy.das at amd.com>
>> ---
>> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 5 +++--
>> drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 14 ++++++++------
>> drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 6 ++----
>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 +-
>> 4 files changed, 14 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> index f2636f411a25..3f51b142fc83 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> @@ -4063,6 +4063,7 @@ static int amdgpu_device_recover_vram(struct
>> amdgpu_device *adev)
>> {
>> struct dma_fence *fence = NULL, *next = NULL;
>> struct amdgpu_bo *shadow;
>> + struct amdgpu_bo_vm *vmbo;
>> long r = 1, tmo;
>> if (amdgpu_sriov_runtime(adev))
>> @@ -4072,8 +4073,8 @@ static int amdgpu_device_recover_vram(struct
>> amdgpu_device *adev)
>> dev_info(adev->dev, "recover vram bo from shadow start\n");
>> mutex_lock(&adev->shadow_list_lock);
>> - list_for_each_entry(shadow, &adev->shadow_list, shadow_list) {
>> -
>> + list_for_each_entry(vmbo, &adev->shadow_list, shadow_list) {
>> + shadow = &vmbo->bo;
>> /* No need to recover an evicted BO */
>> if (shadow->tbo.mem.mem_type != TTM_PL_TT ||
>> shadow->tbo.mem.start == AMDGPU_BO_INVALID_OFFSET ||
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>> index ea54fd739c41..ea339eaac399 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>> @@ -103,11 +103,13 @@ static void amdgpu_bo_vm_destroy(struct
>> ttm_buffer_object *tbo)
>> {
>> struct amdgpu_device *adev = amdgpu_ttm_adev(tbo->bdev);
>> struct amdgpu_bo *bo = ttm_to_amdgpu_bo(tbo);
>> + struct amdgpu_bo_vm *vmbo;
>> + vmbo = to_amdgpu_bo_vm(bo);
>> /* in case amdgpu_device_recover_vram got NULL of bo->parent */
>> - if (!list_empty(&bo->shadow_list)) {
>> + if (!list_empty(&vmbo->shadow_list)) {
>> mutex_lock(&adev->shadow_list_lock);
>> - list_del_init(&bo->shadow_list);
>> + list_del_init(&vmbo->shadow_list);
>> mutex_unlock(&adev->shadow_list_lock);
>> }
>> @@ -583,7 +585,6 @@ int amdgpu_bo_create(struct amdgpu_device *adev,
>> if (bo == NULL)
>> return -ENOMEM;
>> drm_gem_private_object_init(adev_to_drm(adev), &bo->tbo.base,
>> size);
>> - INIT_LIST_HEAD(&bo->shadow_list);
>> bo->vm_bo = NULL;
>> bo->preferred_domains = bp->preferred_domain ?
>> bp->preferred_domain :
>> bp->domain;
>> @@ -713,6 +714,7 @@ int amdgpu_bo_create_vm(struct amdgpu_device *adev,
>> return r;
>> *vmbo_ptr = to_amdgpu_bo_vm(bo_ptr);
>> + INIT_LIST_HEAD(&(*vmbo_ptr)->shadow_list);
>> return r;
>> }
>> @@ -757,12 +759,12 @@ int amdgpu_bo_validate(struct amdgpu_bo *bo)
>> *
>> * Insert a BO to the shadow list.
>> */
>> -void amdgpu_bo_add_to_shadow_list(struct amdgpu_bo *bo)
>> +void amdgpu_bo_add_to_shadow_list(struct amdgpu_bo_vm *vmbo)
>> {
>> - struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
>> + struct amdgpu_device *adev = amdgpu_ttm_adev(vmbo->bo.tbo.bdev);
>> mutex_lock(&adev->shadow_list_lock);
>> - list_add_tail(&bo->shadow_list, &adev->shadow_list);
>> + list_add_tail(&vmbo->shadow_list, &adev->shadow_list);
>> mutex_unlock(&adev->shadow_list_lock);
>> }
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
>> index a8c702634e1b..18cb2f28e4de 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
>> @@ -109,9 +109,6 @@ struct amdgpu_bo {
>> #ifdef CONFIG_MMU_NOTIFIER
>> struct mmu_interval_notifier notifier;
>> #endif
>> -
>> - struct list_head shadow_list;
>> -
>> struct kgd_mem *kfd_bo;
>> };
>> @@ -127,6 +124,7 @@ struct amdgpu_bo_user {
>> struct amdgpu_bo_vm {
>> struct amdgpu_bo bo;
>> struct amdgpu_bo *shadow;
>> + struct list_head shadow_list;
>> struct amdgpu_vm_bo_base entries[];
>> };
>> @@ -333,7 +331,7 @@ u64 amdgpu_bo_gpu_offset_no_check(struct
>> amdgpu_bo *bo);
>> int amdgpu_bo_validate(struct amdgpu_bo *bo);
>> void amdgpu_bo_get_memory(struct amdgpu_bo *bo, uint64_t *vram_mem,
>> uint64_t *gtt_mem, uint64_t *cpu_mem);
>> -void amdgpu_bo_add_to_shadow_list(struct amdgpu_bo *bo);
>> +void amdgpu_bo_add_to_shadow_list(struct amdgpu_bo_vm *vmbo);
>> int amdgpu_bo_restore_shadow(struct amdgpu_bo *shadow,
>> struct dma_fence **fence);
>> uint32_t amdgpu_bo_get_preferred_pin_domain(struct amdgpu_device
>> *adev,
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> index 4c4c56581780..812c225538a7 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> @@ -936,7 +936,7 @@ static int amdgpu_vm_pt_create(struct
>> amdgpu_device *adev,
>> }
>> (*vmbo)->shadow->parent = amdgpu_bo_ref(bo);
>> - amdgpu_bo_add_to_shadow_list((*vmbo)->shadow);
>> + amdgpu_bo_add_to_shadow_list((*vmbo));
>
> You can drop the extra () pair here.
>
> Apart from that the series is Reviewed-by: Christian König
> <christian.koenig at amd.com>
Thanks, Christian. I will drop those braces and submit.
Nirmoy
>
> Thanks,
> Christian.
>
>> return 0;
>> }
>
More information about the amd-gfx
mailing list