aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2130-drm-amdgpu-Sync-KFD-fence-only-for-move-evict.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2130-drm-amdgpu-Sync-KFD-fence-only-for-move-evict.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2130-drm-amdgpu-Sync-KFD-fence-only-for-move-evict.patch56
1 files changed, 56 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2130-drm-amdgpu-Sync-KFD-fence-only-for-move-evict.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2130-drm-amdgpu-Sync-KFD-fence-only-for-move-evict.patch
new file mode 100644
index 00000000..91edd4a7
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2130-drm-amdgpu-Sync-KFD-fence-only-for-move-evict.patch
@@ -0,0 +1,56 @@
+From 56136184a0419b80d202083066b959821f0fefc8 Mon Sep 17 00:00:00 2001
+From: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
+Date: Thu, 19 Oct 2017 11:53:03 -0400
+Subject: [PATCH 2130/4131] drm/amdgpu: Sync KFD fence only for move/evict
+
+A single KFD eviction fence is attached to all the BOs of a process
+including BOs imported. This fence ensures that all BOs belonging to
+that process stays resident when the process queues are active.
+
+Don't add this eviction fence to any sync object unless it is a move or
+evict job. These jobs are identified by the fence owner
+AMDGPU_FENCE_OWNER_UNDEFINED
+
+v2: Always sync to exclusive fence
+v3: avoid unncessary diverge from amd-staging-drm-next
+
+Change-Id: I8752d1cf6b2a1c4f2a57292b7c2cd308d5b6f9b7
+Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
+index 3985025..a20d4ba 100755
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
+@@ -197,11 +197,12 @@ int amdgpu_sync_resv(struct amdgpu_device *adev,
+ if (resv == NULL)
+ return -EINVAL;
+
+- f = reservation_object_get_excl(resv);
+- 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);
++ /* always sync to the exclusive fence */
++ f = reservation_object_get_excl(resv);
++ r = amdgpu_sync_fence(adev, sync, f);
++
++ if (explicit_sync)
++ return r;
+
+ flist = reservation_object_get_list(resv);
+ if (!flist || r)
+@@ -212,7 +213,7 @@ int amdgpu_sync_resv(struct amdgpu_device *adev,
+ reservation_object_held(resv));
+ fence_owner = amdgpu_sync_get_owner(f);
+ if (fence_owner == AMDGPU_FENCE_OWNER_KFD &&
+- owner == AMDGPU_FENCE_OWNER_VM)
++ owner != AMDGPU_FENCE_OWNER_UNDEFINED)
+ continue;
+
+ if (amdgpu_sync_same_dev(adev, f)) {
+--
+2.7.4
+