diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0694-drm-scheduler-add-counter-for-total-jobs-in-schedule.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0694-drm-scheduler-add-counter-for-total-jobs-in-schedule.patch | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0694-drm-scheduler-add-counter-for-total-jobs-in-schedule.patch b/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0694-drm-scheduler-add-counter-for-total-jobs-in-schedule.patch new file mode 100644 index 00000000..d2b67dae --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0694-drm-scheduler-add-counter-for-total-jobs-in-schedule.patch @@ -0,0 +1,70 @@ +From 03206cc437521dbfc5870e168e170c5c68bd9725 Mon Sep 17 00:00:00 2001 +From: Nayan Deshmukh <nayan26deshmukh@gmail.com> +Date: Wed, 1 Aug 2018 13:50:00 +0530 +Subject: [PATCH 0694/2940] drm/scheduler: add counter for total jobs in + scheduler +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +To keep track of the scheduler load. + +Signed-off-by: Nayan Deshmukh <nayan26deshmukh@gmail.com> +Reviewed-by: Christian König <christian.koenig@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/scheduler/gpu_scheduler.c | 3 +++ + include/drm/gpu_scheduler.h | 2 ++ + 2 files changed, 5 insertions(+) + +diff --git a/drivers/gpu/drm/scheduler/gpu_scheduler.c b/drivers/gpu/drm/scheduler/gpu_scheduler.c +index 051cd8650f06..a3e704486f7f 100644 +--- a/drivers/gpu/drm/scheduler/gpu_scheduler.c ++++ b/drivers/gpu/drm/scheduler/gpu_scheduler.c +@@ -557,6 +557,7 @@ void drm_sched_entity_push_job(struct drm_sched_job *sched_job, + + trace_drm_sched_job(sched_job, entity); + ++ atomic_inc(&entity->rq->sched->num_jobs); + WRITE_ONCE(entity->last_user, current->group_leader); + first = spsc_queue_push(&entity->job_queue, &sched_job->queue_node); + +@@ -848,6 +849,7 @@ static void drm_sched_process_job(struct dma_fence *f, struct dma_fence_cb *cb) + + dma_fence_get(&s_fence->finished); + atomic_dec(&sched->hw_rq_count); ++ atomic_dec(&sched->num_jobs); + drm_sched_fence_finished(s_fence); + + trace_drm_sched_process_job(s_fence); +@@ -965,6 +967,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched, + INIT_LIST_HEAD(&sched->ring_mirror_list); + spin_lock_init(&sched->job_list_lock); + atomic_set(&sched->hw_rq_count, 0); ++ atomic_set(&sched->num_jobs, 0); + atomic64_set(&sched->job_id_count, 0); + + /* Each scheduler will run on a seperate kernel thread */ +diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h +index 14c5ccbe8bba..551f92ce2164 100644 +--- a/include/drm/gpu_scheduler.h ++++ b/include/drm/gpu_scheduler.h +@@ -259,6 +259,7 @@ struct drm_sched_backend_ops { + * @job_list_lock: lock to protect the ring_mirror_list. + * @hang_limit: once the hangs by a job crosses this limit then it is marked + * guilty and it will be considered for scheduling further. ++ * @num_jobs: the number of jobs in queue in the scheduler + * + * One scheduler is implemented for each hardware ring. + */ +@@ -276,6 +277,7 @@ struct drm_gpu_scheduler { + struct list_head ring_mirror_list; + spinlock_t job_list_lock; + int hang_limit; ++ atomic_t num_jobs; + }; + + int drm_sched_init(struct drm_gpu_scheduler *sched, +-- +2.17.1 + |