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