diff options
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.patch | 96 |
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 + |