diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1523-drm-amdgpu-Ignore-kfd-eviction-fence-in-sync_resv.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1523-drm-amdgpu-Ignore-kfd-eviction-fence-in-sync_resv.patch | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1523-drm-amdgpu-Ignore-kfd-eviction-fence-in-sync_resv.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1523-drm-amdgpu-Ignore-kfd-eviction-fence-in-sync_resv.patch deleted file mode 100644 index e4f2ab60..00000000 --- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1523-drm-amdgpu-Ignore-kfd-eviction-fence-in-sync_resv.patch +++ /dev/null @@ -1,132 +0,0 @@ -From b9c27ae38d45a3c9cbd1b841aa5fcc8b9c34e920 Mon Sep 17 00:00:00 2001 -From: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com> -Date: Wed, 20 Jul 2016 11:28:54 -0400 -Subject: [PATCH 1523/4131] drm/amdgpu: Ignore kfd eviction fence in sync_resv - -Change-Id: I61fcd385319ea9fa0bf9451124996c65e590184b -Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com> - - Conflicts: - drivers/gpu/drm/amd/amdgpu/amdgpu.h ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 1 + - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c | 2 +- - drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h | 1 + - drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c | 26 +++++++++++++++++++----- - 4 files changed, 24 insertions(+), 6 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h -index 2db28e5..ed753fc 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h -@@ -83,6 +83,7 @@ struct amdgpu_amdkfd_fence { - struct amdgpu_amdkfd_fence *amdgpu_amdkfd_fence_create(u64 context, - void *mm); - bool amd_kfd_fence_check_mm(struct fence *f, void *mm); -+struct amdgpu_amdkfd_fence *to_amdgpu_amdkfd_fence(struct fence *f); - - /* struct amdkfd_vm - - * For Memory Eviction KGD requires a mechanism to keep track of all KFD BOs -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c -index 7026781..ac167c8 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c -@@ -83,7 +83,7 @@ struct amdgpu_amdkfd_fence *amdgpu_amdkfd_fence_create(u64 context, - return fence; - } - --static struct amdgpu_amdkfd_fence *to_amdgpu_amdkfd_fence(struct fence *f) -+struct amdgpu_amdkfd_fence *to_amdgpu_amdkfd_fence(struct fence *f) - { - struct amdgpu_amdkfd_fence *fence; - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h -index 322d2529..af8e544 100755 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h -@@ -36,6 +36,7 @@ - /* some special values for the owner field */ - #define AMDGPU_FENCE_OWNER_UNDEFINED ((void*)0ul) - #define AMDGPU_FENCE_OWNER_VM ((void*)1ul) -+#define AMDGPU_FENCE_OWNER_KFD ((void *)2ul) - - #define AMDGPU_FENCE_FLAG_64BIT (1 << 0) - #define AMDGPU_FENCE_FLAG_INT (1 << 1) -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c -index 8492a26..bc79ef8 100755 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c -@@ -31,6 +31,7 @@ - #include <drm/drmP.h> - #include "amdgpu.h" - #include "amdgpu_trace.h" -+#include "amdgpu_amdkfd.h" - - struct amdgpu_sync_entry { - struct hlist_node node; -@@ -84,11 +85,20 @@ static bool amdgpu_sync_same_dev(struct amdgpu_device *adev, - */ - static void *amdgpu_sync_get_owner(struct dma_fence *f) - { -- struct amd_sched_fence *s_fence = to_amd_sched_fence(f); -+ struct amd_sched_fence *s_fence; -+ struct amdgpu_amdkfd_fence *kfd_fence; -+ -+ if (f == NULL) -+ return AMDGPU_FENCE_OWNER_UNDEFINED; - -+ s_fence = to_amd_sched_fence(f); - if (s_fence) - return s_fence->owner; - -+ kfd_fence = to_amdgpu_amdkfd_fence(f); -+ if (kfd_fence) -+ return AMDGPU_FENCE_OWNER_KFD; -+ - return AMDGPU_FENCE_OWNER_UNDEFINED; - } - -@@ -170,7 +180,8 @@ int amdgpu_sync_fence(struct amdgpu_device *adev, struct amdgpu_sync *sync, - * @sync: sync object to add fences from reservation object to - * @resv: reservation object with embedded fence - * @shared: true if we should only sync to the exclusive fence -- * Sync to the fence -+ * Sync to the fence except if it is KFD eviction fence and owner is -+ * AMDGPU_FENCE_OWNER_VM. - */ - int amdgpu_sync_resv(struct amdgpu_device *adev, - struct amdgpu_sync *sync, -@@ -186,9 +197,11 @@ int amdgpu_sync_resv(struct amdgpu_device *adev, - if (resv == NULL) - return -EINVAL; - -- /* always sync to the exclusive fence */ - f = reservation_object_get_excl(resv); -- r = amdgpu_sync_fence(adev, sync, f); -+ fence_owner = amdgpu_sync_get_owner(f); -+ if (fence_owner != AMDGPU_FENCE_OWNER_KFD || -+ owner != AMDGPU_FENCE_OWNER_VM) -+ r = amdgpu_sync_fence(adev, sync, f); - - flist = reservation_object_get_list(resv); - if (!flist || r) -@@ -197,12 +210,15 @@ int amdgpu_sync_resv(struct amdgpu_device *adev, - for (i = 0; i < flist->shared_count; ++i) { - f = rcu_dereference_protected(flist->shared[i], - reservation_object_held(resv)); -+ fence_owner = amdgpu_sync_get_owner(f); -+ if (fence_owner == AMDGPU_FENCE_OWNER_KFD && -+ owner == AMDGPU_FENCE_OWNER_VM) -+ continue; - - if (amdgpu_sync_same_dev(adev, f)) { - /* VM updates are only interesting - * for other VM updates and moves. - */ -- fence_owner = amdgpu_sync_get_owner(f); - if ((owner != AMDGPU_FENCE_OWNER_UNDEFINED) && - (fence_owner != AMDGPU_FENCE_OWNER_UNDEFINED) && - ((owner == AMDGPU_FENCE_OWNER_VM) != --- -2.7.4 - |