Am 13.07.2018 um 15:40 schrieb Nayan Deshmukh:
I forgot to add these:
Not a problem at all. It is actually my job to do this while committing the patches.
BTW: I've pushed you patches to amd-staging-drm-next just a few minutes ago. Thanks for the help.
I'm preparing quite a cleanup for amdgpu which should make your live easier, but still no idea why the scheduler hangs when we try to load balance jobs.
Regards, Christian.
On Fri, Jul 13, 2018 at 3:21 PM Nayan Deshmukh nayan26deshmukh@gmail.com wrote:
This patch is in preparation for a better load balancing in scheduler. It allows us to associate entities with the run queues instead of binding them to a scheduler.
Signed-off-by: Nayan Deshmukh nayan26deshmukh@gmail.com
Reviewed-by: Christian König christian.koenig@amd.com Acked-by: Eric Anholt eric@anholt.net
drivers/gpu/drm/scheduler/gpu_scheduler.c | 6 ++++-- include/drm/gpu_scheduler.h | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/scheduler/gpu_scheduler.c b/drivers/gpu/drm/scheduler/gpu_scheduler.c index 7d2560699b84..429b1328653a 100644 --- a/drivers/gpu/drm/scheduler/gpu_scheduler.c +++ b/drivers/gpu/drm/scheduler/gpu_scheduler.c @@ -69,11 +69,13 @@ static void drm_sched_process_job(struct dma_fence *f, struct dma_fence_cb *cb);
- Initializes a scheduler runqueue.
*/ -static void drm_sched_rq_init(struct drm_sched_rq *rq) +static void drm_sched_rq_init(struct drm_gpu_scheduler *sched,
struct drm_sched_rq *rq)
{ spin_lock_init(&rq->lock); INIT_LIST_HEAD(&rq->entities); rq->current_entity = NULL;
rq->sched = sched;
}
/**
@@ -926,7 +928,7 @@ int drm_sched_init(struct drm_gpu_scheduler *sched, sched->timeout = timeout; sched->hang_limit = hang_limit; for (i = DRM_SCHED_PRIORITY_MIN; i < DRM_SCHED_PRIORITY_MAX; i++)
drm_sched_rq_init(&sched->sched_rq[i]);
drm_sched_rq_init(sched, &sched->sched_rq[i]); init_waitqueue_head(&sched->wake_up_worker); init_waitqueue_head(&sched->job_scheduled);
diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h index 4214ceb71c05..43e93d6077cf 100644 --- a/include/drm/gpu_scheduler.h +++ b/include/drm/gpu_scheduler.h @@ -93,6 +93,7 @@ struct drm_sched_entity {
- struct drm_sched_rq - queue of entities to be scheduled.
- @lock: to modify the entities list.
- @sched: the scheduler to which this rq belongs to.
- @entities: list of the entities to be scheduled.
- @current_entity: the entity which is to be scheduled.
@@ -102,6 +103,7 @@ struct drm_sched_entity { */ struct drm_sched_rq { spinlock_t lock;
};struct drm_gpu_scheduler *sched; struct list_head entities; struct drm_sched_entity *current_entity;
-- 2.14.3