summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/scheduler
diff options
context:
space:
mode:
authorNayan Deshmukh <nayan26deshmukh@gmail.com>2018-08-01 13:49:59 +0530
committerAlex Deucher <alexander.deucher@amd.com>2018-08-27 11:09:44 -0500
commitac0a6cf1c6ef91e4af2a9d56eeaee8fca61d6ad7 (patch)
treedd6cea5feddbbe845e685783096e80142fb08866 /drivers/gpu/drm/scheduler
parentc36628d8989a7a0d1cc4fe2ae93c6cd99a865f68 (diff)
drm/scheduler: add a list of run queues to the entity
These are the potential run queues on which the jobs from this entity can be scheduled. We will use this to do load balancing. 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>
Diffstat (limited to 'drivers/gpu/drm/scheduler')
-rw-r--r--drivers/gpu/drm/scheduler/gpu_scheduler.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/scheduler/gpu_scheduler.c b/drivers/gpu/drm/scheduler/gpu_scheduler.c
index 4fc211e19d6e..afffb9a60cdb 100644
--- a/drivers/gpu/drm/scheduler/gpu_scheduler.c
+++ b/drivers/gpu/drm/scheduler/gpu_scheduler.c
@@ -179,6 +179,8 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,
unsigned int num_rq_list,
atomic_t *guilty)
{
+ int i;
+
if (!(entity && rq_list && num_rq_list > 0 && rq_list[0]))
return -EINVAL;
@@ -186,6 +188,11 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,
INIT_LIST_HEAD(&entity->list);
entity->rq = rq_list[0];
entity->guilty = guilty;
+ entity->num_rq_list = num_rq_list;
+ entity->rq_list = kcalloc(num_rq_list, sizeof(struct drm_sched_rq *),
+ GFP_KERNEL);
+ for (i = 0; i < num_rq_list; ++i)
+ entity->rq_list[i] = rq_list[i];
entity->last_scheduled = NULL;
spin_lock_init(&entity->rq_lock);
@@ -348,6 +355,7 @@ void drm_sched_entity_fini(struct drm_sched_entity *entity)
dma_fence_put(entity->last_scheduled);
entity->last_scheduled = NULL;
+ kfree(entity->rq_list);
}
EXPORT_SYMBOL(drm_sched_entity_fini);