[PATCH 29/35] drm/amdgpu: svm bo enable_signal call condition
Christian König
ckoenig.leichtzumerken at gmail.com
Thu Jan 7 10:56:10 UTC 2021
Am 07.01.21 um 04:01 schrieb Felix Kuehling:
> From: Alex Sierra <alex.sierra at 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.sierra at amd.com>
> Signed-off-by: Felix Kuehling <Felix.Kuehling at 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:
More information about the amd-gfx
mailing list