drm/scheduler: rework entity creation
Entity currently keeps a copy of run_queue list and modify it in drm_sched_entity_set_priority(). Entities shouldn't modify run_queue list. Use drm_gpu_scheduler list instead of drm_sched_rq list in drm_sched_entity struct. In this way we can select a runqueue based on entity/ctx's priority for a drm scheduler. Signed-off-by: Nirmoy Das <nirmoy.das@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -140,7 +140,7 @@ v3d_open(struct drm_device *dev, struct drm_file *file)
|
||||
{
|
||||
struct v3d_dev *v3d = to_v3d_dev(dev);
|
||||
struct v3d_file_priv *v3d_priv;
|
||||
struct drm_sched_rq *rq;
|
||||
struct drm_gpu_scheduler *sched;
|
||||
int i;
|
||||
|
||||
v3d_priv = kzalloc(sizeof(*v3d_priv), GFP_KERNEL);
|
||||
@@ -150,8 +150,10 @@ v3d_open(struct drm_device *dev, struct drm_file *file)
|
||||
v3d_priv->v3d = v3d;
|
||||
|
||||
for (i = 0; i < V3D_MAX_QUEUES; i++) {
|
||||
rq = &v3d->queue[i].sched.sched_rq[DRM_SCHED_PRIORITY_NORMAL];
|
||||
drm_sched_entity_init(&v3d_priv->sched_entity[i], &rq, 1, NULL);
|
||||
sched = &v3d->queue[i].sched;
|
||||
drm_sched_entity_init(&v3d_priv->sched_entity[i],
|
||||
DRM_SCHED_PRIORITY_NORMAL, &sched,
|
||||
1, NULL);
|
||||
}
|
||||
|
||||
file->driver_priv = v3d_priv;
|
||||
|
Reference in New Issue
Block a user