Am 07.01.21 um 04:01 schrieb Felix Kuehling:
From: Alex Sierra <alex.sie...@amd.com>

[why]
To support svm bo eviction mechanism.

[how]
If the BO crated has AMDGPU_AMDKFD_CREATE_SVM_BO flag set,
enable_signal callback will be called inside amdgpu_evict_flags.
This also causes gutting of the BO by removing all placements,
so that TTM won't actually do an eviction. Instead it will discard
the memory held by the BO. This is needed for HMM migration to user
mode system memory pages.

I don't think that this will work. What exactly are you doing here?

As Daniel pointed out HMM and dma_fences are fundamentally incompatible.

Christian.


Signed-off-by: Alex Sierra <alex.sie...@amd.com>
Signed-off-by: Felix Kuehling <felix.kuehl...@amd.com>
---
  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 14 ++++++++++++++
  1 file changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index f423f42cb9b5..62d4da95d22d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -107,6 +107,20 @@ static void amdgpu_evict_flags(struct ttm_buffer_object 
*bo,
        }
abo = ttm_to_amdgpu_bo(bo);
+       if (abo->flags & AMDGPU_AMDKFD_CREATE_SVM_BO) {
+               struct dma_fence *fence;
+               struct dma_resv *resv = &bo->base._resv;
+
+               rcu_read_lock();
+               fence = rcu_dereference(resv->fence_excl);
+               if (fence && !fence->ops->signaled)
+                       dma_fence_enable_sw_signaling(fence);
+
+               placement->num_placement = 0;
+               placement->num_busy_placement = 0;
+               rcu_read_unlock();
+               return;
+       }
        switch (bo->mem.mem_type) {
        case AMDGPU_PL_GDS:
        case AMDGPU_PL_GWS:

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to