aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1190-drm-amdgpu-Add-AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIE.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1190-drm-amdgpu-Add-AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIE.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1190-drm-amdgpu-Add-AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIE.patch96
1 files changed, 96 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1190-drm-amdgpu-Add-AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIE.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1190-drm-amdgpu-Add-AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIE.patch
new file mode 100644
index 00000000..79b52513
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1190-drm-amdgpu-Add-AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIE.patch
@@ -0,0 +1,96 @@
+From d88dcc25eab90cc70ad2586be6bbe036daff4c46 Mon Sep 17 00:00:00 2001
+From: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
+Date: Thu, 31 Jan 2019 15:44:22 -0500
+Subject: [PATCH 1190/2940] drm/amdgpu: Add
+ AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+New chunk for dependency on start of job's execution instead on
+the end. This is used for GPU deadlock prevention when
+userspace uses mid-IB fences to wait for mid-IB work on other rings.
+
+v2: Fix typo in AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES
+v3: Bump KMS version
+v4: put old fence AFTER acquiring the scheduled fence.
+
+Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
+Suggested-by: Christian Koenig <Christian.Koenig@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Chaudhary Amit Kumar <Chaudharyamit.Kumar@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 13 ++++++++++++-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 3 ++-
+ include/uapi/drm/amdgpu_drm.h | 1 +
+ 3 files changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+index b5258697a4f8..7a4508f1ab81 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+@@ -215,6 +215,7 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, union drm_amdgpu_cs
+ case AMDGPU_CHUNK_ID_DEPENDENCIES:
+ case AMDGPU_CHUNK_ID_SYNCOBJ_IN:
+ case AMDGPU_CHUNK_ID_SYNCOBJ_OUT:
++ case AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES:
+ break;
+
+ default:
+@@ -1093,6 +1094,15 @@ static int amdgpu_cs_process_fence_dep(struct amdgpu_cs_parser *p,
+
+ fence = amdgpu_ctx_get_fence(ctx, entity,
+ deps[i].handle);
++
++ if (chunk->chunk_id == AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES) {
++ struct drm_sched_fence *s_fence = to_drm_sched_fence(fence);
++ struct dma_fence *old = fence;
++
++ fence = dma_fence_get(&s_fence->scheduled);
++ dma_fence_put(old);
++ }
++
+ if (IS_ERR(fence)) {
+ r = PTR_ERR(fence);
+ amdgpu_ctx_put(ctx);
+@@ -1180,7 +1190,8 @@ static int amdgpu_cs_dependencies(struct amdgpu_device *adev,
+
+ chunk = &p->chunks[i];
+
+- if (chunk->chunk_id == AMDGPU_CHUNK_ID_DEPENDENCIES) {
++ if (chunk->chunk_id == AMDGPU_CHUNK_ID_DEPENDENCIES ||
++ chunk->chunk_id == AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES) {
+ r = amdgpu_cs_process_fence_dep(p, chunk);
+ if (r)
+ return r;
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+index 39a60b8076c4..c3eb1875e54e 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+@@ -71,9 +71,10 @@
+ * - 3.25.0 - Add support for sensor query info (stable pstate sclk/mclk).
+ * - 3.26.0 - GFX9: Process AMDGPU_IB_FLAG_TC_WB_NOT_INVALIDATE.
+ * - 3.27.0 - Add new chunk to to AMDGPU_CS to enable BO_LIST creation.
++ * - 3.28.0 - Add AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES
+ */
+ #define KMS_DRIVER_MAJOR 3
+-#define KMS_DRIVER_MINOR 27
++#define KMS_DRIVER_MINOR 28
+ #define KMS_DRIVER_PATCHLEVEL 0
+
+ #define AMDGPU_VERSION "18.50.1.418"
+diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
+index 8129a2beffeb..29ef0f434e3f 100644
+--- a/include/uapi/drm/amdgpu_drm.h
++++ b/include/uapi/drm/amdgpu_drm.h
+@@ -582,6 +582,7 @@ struct drm_amdgpu_gem_va {
+ #define AMDGPU_CHUNK_ID_SYNCOBJ_IN 0x04
+ #define AMDGPU_CHUNK_ID_SYNCOBJ_OUT 0x05
+ #define AMDGPU_CHUNK_ID_BO_HANDLES 0x06
++#define AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES 0x07
+
+ struct drm_amdgpu_cs_chunk {
+ __u32 chunk_id;
+--
+2.17.1
+