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

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
...@@ -93,34 +93,6 @@ amd_sched_rq_select_entity(struct amd_sched_rq *rq) ...@@ -93,34 +93,6 @@ amd_sched_rq_select_entity(struct amd_sched_rq *rq)
return NULL; 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. * 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) ...@@ -263,6 +235,34 @@ int amd_sched_push_job(struct amd_sched_job *sched_job)
return 0; 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) static void amd_sched_process_job(struct fence *f, struct fence_cb *cb)
{ {
struct amd_sched_job *sched_job = struct amd_sched_job *sched_job =
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment