Re: [PATCH 2/2] drm/amdgpu: move shadow_list to amdgpu_bo_vm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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@xxxxxxx>
---
  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@xxxxxxx>


Thanks, Christian. I will drop those braces and submit.


Nirmoy


Thanks,
Christian.

        return 0;
  }

_______________________________________________
amd-gfx mailing list
amd-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/amd-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux