Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e688b728 authored by Christian König's avatar Christian König Committed by Alex Deucher
Browse files

drm/amdgpu: reorder scheduler functions



Keep run queue, entity and scheduler handling together.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarChunming Zhou <david1.zhou@amd.com>
parent f4956598
Loading
Loading
Loading
Loading
+28 −28
Original line number Diff line number Diff line
@@ -93,34 +93,6 @@ amd_sched_rq_select_entity(struct amd_sched_rq *rq)
	return NULL;
}

/**
 * Return ture if we can push more jobs to the hw.
 */
static bool amd_sched_ready(struct amd_gpu_scheduler *sched)
{
	return atomic_read(&sched->hw_rq_count) <
		sched->hw_submission_limit;
}

/**
 * Select next entity containing real IB submissions
*/
static struct amd_sched_entity *
amd_sched_select_context(struct amd_gpu_scheduler *sched)
{
	struct amd_sched_entity *tmp;

	if (!amd_sched_ready(sched))
		return NULL;

	/* Kernel run queue has higher priority than normal run queue*/
	tmp = amd_sched_rq_select_entity(&sched->kernel_rq);
	if (tmp == NULL)
		tmp = amd_sched_rq_select_entity(&sched->sched_rq);

	return tmp;
}

/**
 * Init a context entity used by scheduler when submit to HW ring.
 *
@@ -263,6 +235,34 @@ int amd_sched_push_job(struct amd_sched_job *sched_job)
	return 0;
}

/**
 * Return ture if we can push more jobs to the hw.
 */
static bool amd_sched_ready(struct amd_gpu_scheduler *sched)
{
	return atomic_read(&sched->hw_rq_count) <
		sched->hw_submission_limit;
}

/**
 * Select next entity containing real IB submissions
*/
static struct amd_sched_entity *
amd_sched_select_context(struct amd_gpu_scheduler *sched)
{
	struct amd_sched_entity *tmp;

	if (!amd_sched_ready(sched))
		return NULL;

	/* Kernel run queue has higher priority than normal run queue*/
	tmp = amd_sched_rq_select_entity(&sched->kernel_rq);
	if (tmp == NULL)
		tmp = amd_sched_rq_select_entity(&sched->sched_rq);

	return tmp;
}

static void amd_sched_process_job(struct fence *f, struct fence_cb *cb)
{
	struct amd_sched_job *sched_job =