aboutsummaryrefslogtreecommitdiffstats
path: root/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1523-drm-amdgpu-Ignore-kfd-eviction-fence-in-sync_resv.patch
diff options
context:
space:
mode:
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.patch132
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
-