aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2051-drm-amdgpu-add-hang_limit-for-sched-v2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2051-drm-amdgpu-add-hang_limit-for-sched-v2.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2051-drm-amdgpu-add-hang_limit-for-sched-v2.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2051-drm-amdgpu-add-hang_limit-for-sched-v2.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2051-drm-amdgpu-add-hang_limit-for-sched-v2.patch
new file mode 100644
index 00000000..9b1dd48e
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2051-drm-amdgpu-add-hang_limit-for-sched-v2.patch
@@ -0,0 +1,78 @@
+From a3a4a32288b733c30135a5c46d9366ab114f0e2f Mon Sep 17 00:00:00 2001
+From: Monk Liu <Monk.Liu@amd.com>
+Date: Tue, 17 Oct 2017 13:40:54 +0800
+Subject: [PATCH 2051/4131] drm/amdgpu:add hang_limit for sched(v2)
+
+since gpu_scheduler source domain cannot access amdgpu variable
+so need create the hang_limit membewr for sched, and it can
+refer it for the upcoming GPU RESET patches
+
+v2:
+make hang_limit a parameter of sched_init()
+
+Change-Id: I977ae2717e55a8b87c59e58a288bffc3b458b653
+Signed-off-by: Monk Liu <Monk.Liu@amd.com>
+Reviewed-by: Chunming Zhou <David1.Zhou@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 2 +-
+ drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | 6 +++++-
+ drivers/gpu/drm/amd/scheduler/gpu_scheduler.h | 3 ++-
+ 3 files changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
+index 2167dac..f43319c 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
+@@ -446,7 +446,7 @@ int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,
+ timeout = MAX_SCHEDULE_TIMEOUT;
+ }
+ r = amd_sched_init(&ring->sched, &amdgpu_sched_ops,
+- num_hw_submission,
++ num_hw_submission, amdgpu_job_hang_limit,
+ timeout, ring->name);
+ if (r) {
+ DRM_ERROR("Failed to create scheduler on ring %s.\n",
+diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
+index 18b2049..1182ab9 100644
+--- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
++++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
+@@ -676,13 +676,17 @@ static int amd_sched_main(void *param)
+ */
+ int amd_sched_init(struct amd_gpu_scheduler *sched,
+ const struct amd_sched_backend_ops *ops,
+- unsigned hw_submission, long timeout, const char *name)
++ unsigned hw_submission,
++ unsigned hang_limit,
++ long timeout,
++ const char *name)
+ {
+ int i;
+ sched->ops = ops;
+ sched->hw_submission_limit = hw_submission;
+ sched->name = name;
+ sched->timeout = timeout;
++ sched->hang_limit = hang_limit;
+ for (i = AMD_SCHED_PRIORITY_MIN; i < AMD_SCHED_PRIORITY_MAX; i++)
+ amd_sched_rq_init(&sched->sched_rq[i]);
+
+diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
+index caa0c15..a667a78 100644
+--- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
++++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
+@@ -143,11 +143,12 @@ struct amd_gpu_scheduler {
+ struct task_struct *thread;
+ struct list_head ring_mirror_list;
+ spinlock_t job_list_lock;
++ int hang_limit;
+ };
+
+ int amd_sched_init(struct amd_gpu_scheduler *sched,
+ const struct amd_sched_backend_ops *ops,
+- uint32_t hw_submission, long timeout, const char *name);
++ uint32_t hw_submission, unsigned hang_limit, long timeout, const char *name);
+ void amd_sched_fini(struct amd_gpu_scheduler *sched);
+
+ int amd_sched_entity_init(struct amd_gpu_scheduler *sched,
+--
+2.7.4
+