drm/scheduler: modify API to avoid redundancy
authorNayan Deshmukh <nayan26deshmukh@gmail.com>
Fri, 20 Jul 2018 12:21:05 +0000 (17:51 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 25 Jul 2018 20:06:19 +0000 (15:06 -0500)
entity has a scheduler field and we don't need the sched argument
in any of the functions where entity is provided.

Signed-off-by: Nayan Deshmukh <nayan26deshmukh@gmail.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
13 files changed:
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
drivers/gpu/drm/etnaviv/etnaviv_drv.c
drivers/gpu/drm/etnaviv/etnaviv_sched.c
drivers/gpu/drm/scheduler/gpu_scheduler.c
drivers/gpu/drm/v3d/v3d_drv.c
drivers/gpu/drm/v3d/v3d_gem.c
include/drm/gpu_scheduler.h

index c5d81d6a90e0454195dc5764acaa00411770c2dd..4d4575b3bba7a4a8a0d4aa685001b6059fccc572 100644 (file)
@@ -1232,7 +1232,7 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
        job = p->job;
        p->job = NULL;
 
-       r = drm_sched_job_init(&job->base, &ring->sched, entity, p->filp);
+       r = drm_sched_job_init(&job->base, entity, p->filp);
        if (r) {
                amdgpu_job_free(job);
                amdgpu_mn_unlock(p->mn);
index 83e3b320a793831c50bbf3ac277252c7751979e4..df69657610460a81104a343fff489a3c1695856e 100644 (file)
@@ -104,8 +104,7 @@ static int amdgpu_ctx_init(struct amdgpu_device *adev,
 
 failed:
        for (j = 0; j < i; j++)
-               drm_sched_entity_destroy(&adev->rings[j]->sched,
-                                     &ctx->rings[j].entity);
+               drm_sched_entity_destroy(&ctx->rings[j].entity);
        kfree(ctx->fences);
        ctx->fences = NULL;
        return r;
@@ -178,8 +177,7 @@ static void amdgpu_ctx_do_release(struct kref *ref)
                if (ctx->adev->rings[i] == &ctx->adev->gfx.kiq.ring)
                        continue;
 
-               drm_sched_entity_destroy(&ctx->adev->rings[i]->sched,
-                       &ctx->rings[i].entity);
+               drm_sched_entity_destroy(&ctx->rings[i].entity);
        }
 
        amdgpu_ctx_fini(ref);
@@ -466,8 +464,8 @@ void amdgpu_ctx_mgr_entity_flush(struct amdgpu_ctx_mgr *mgr)
                        if (ctx->adev->rings[i] == &ctx->adev->gfx.kiq.ring)
                                continue;
 
-                       max_wait = drm_sched_entity_flush(&ctx->adev->rings[i]->sched,
-                                         &ctx->rings[i].entity, max_wait);
+                       max_wait = drm_sched_entity_flush(&ctx->rings[i].entity,
+                                                         max_wait);
                }
        }
        mutex_unlock(&mgr->lock);
@@ -492,8 +490,7 @@ void amdgpu_ctx_mgr_entity_fini(struct amdgpu_ctx_mgr *mgr)
                                continue;
 
                        if (kref_read(&ctx->refcount) == 1)
-                               drm_sched_entity_fini(&ctx->adev->rings[i]->sched,
-                                       &ctx->rings[i].entity);
+                               drm_sched_entity_fini(&ctx->rings[i].entity);
                        else
                                DRM_ERROR("ctx %p is still alive\n", ctx);
                }
index 5a2c26a85984560a75d5ac01f2768b0a0984884e..631481a730e0b574beeb77b7f9416fa81eb97976 100644 (file)
@@ -133,7 +133,7 @@ int amdgpu_job_submit(struct amdgpu_job *job, struct drm_sched_entity *entity,
        if (!f)
                return -EINVAL;
 
-       r = drm_sched_job_init(&job->base, entity->sched, entity, owner);
+       r = drm_sched_job_init(&job->base, entity, owner);
        if (r)
                return r;
 
index 6039f8e213580d416b5f4aa685d41d26eeae1119..8c4358e36c871f168cbd81f22b49eb1742013158 100644 (file)
@@ -1925,8 +1925,7 @@ void amdgpu_ttm_set_buffer_funcs_status(struct amdgpu_device *adev, bool enable)
                        return;
                }
        } else {
-               drm_sched_entity_destroy(adev->mman.entity.sched,
-                                        &adev->mman.entity);
+               drm_sched_entity_destroy(&adev->mman.entity);
                dma_fence_put(man->move);
                man->move = NULL;
        }
index e1e4810b9d9e4088c02bb23ed016c55355ec6664..fca86d71fafce9dcfbeb304e76930bb3c93eb52a 100644 (file)
@@ -305,8 +305,7 @@ int amdgpu_uvd_sw_fini(struct amdgpu_device *adev)
 {
        int i, j;
 
-       drm_sched_entity_destroy(&adev->uvd.inst->ring.sched,
-                                &adev->uvd.entity);
+       drm_sched_entity_destroy(&adev->uvd.entity);
 
        for (j = 0; j < adev->uvd.num_uvd_inst; ++j) {
                kfree(adev->uvd.inst[j].saved_bo);
index 86182c966ed6f85b78cdbc5ad8986de87130affd..b6ab4f5350c8098836c5f6758f2ef2387efea596 100644 (file)
@@ -221,7 +221,7 @@ int amdgpu_vce_sw_fini(struct amdgpu_device *adev)
        if (adev->vce.vcpu_bo == NULL)
                return 0;
 
-       drm_sched_entity_destroy(&adev->vce.ring[0].sched, &adev->vce.entity);
+       drm_sched_entity_destroy(&adev->vce.entity);
 
        amdgpu_bo_free_kernel(&adev->vce.vcpu_bo, &adev->vce.gpu_addr,
                (void **)&adev->vce.cpu_addr);
index 098dd1ba751a244a098e5ea4a90e44a0acd85bfb..74b4a28a41d6a7a2550cdc3ffab9a57b9ed3901a 100644 (file)
@@ -2642,7 +2642,7 @@ error_free_root:
        vm->root.base.bo = NULL;
 
 error_free_sched_entity:
-       drm_sched_entity_destroy(&ring->sched, &vm->entity);
+       drm_sched_entity_destroy(&vm->entity);
 
        return r;
 }
@@ -2779,7 +2779,7 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)
                spin_unlock_irqrestore(&adev->vm_manager.pasid_lock, flags);
        }
 
-       drm_sched_entity_destroy(vm->entity.sched, &vm->entity);
+       drm_sched_entity_destroy(&vm->entity);
 
        if (!RB_EMPTY_ROOT(&vm->va.rb_root)) {
                dev_err(adev->dev, "still active bo inside vm\n");
index 36414ba56b226bca034fae42160f308b38b7180a..207532c05eb86578d2f5ad94c0454e832d1a7c34 100644 (file)
@@ -78,8 +78,7 @@ static void etnaviv_postclose(struct drm_device *dev, struct drm_file *file)
                                gpu->lastctx = NULL;
                        mutex_unlock(&gpu->lock);
 
-                       drm_sched_entity_destroy(&gpu->sched,
-                                               &ctx->sched_entity[i]);
+                       drm_sched_entity_destroy(&ctx->sched_entity[i]);
                }
        }
 
index a74eb57af15bc65ba2ff4a2ed3906da29afe959b..590e44b0d96396090755f8bf5602fd38e2aeac3e 100644 (file)
@@ -118,8 +118,8 @@ int etnaviv_sched_push_job(struct drm_sched_entity *sched_entity,
 {
        int ret;
 
-       ret = drm_sched_job_init(&submit->sched_job, &submit->gpu->sched,
-                                sched_entity, submit->cmdbuf.ctx);
+       ret = drm_sched_job_init(&submit->sched_job, sched_entity,
+                                submit->cmdbuf.ctx);
        if (ret)
                return ret;
 
index dac71e3b4514c8a9c22dec752df35dd674af21b0..a3b55c5420256bd8f4937c2a2cc2c2d61373e728 100644 (file)
@@ -273,11 +273,12 @@ static void drm_sched_entity_kill_jobs_cb(struct dma_fence *f,
  *
  * Returns the remaining time in jiffies left from the input timeout
  */
-long drm_sched_entity_flush(struct drm_gpu_scheduler *sched,
-                          struct drm_sched_entity *entity, long timeout)
+long drm_sched_entity_flush(struct drm_sched_entity *entity, long timeout)
 {
+       struct drm_gpu_scheduler *sched;
        long ret = timeout;
 
+       sched = entity->sched;
        if (!drm_sched_entity_is_initialized(sched, entity))
                return ret;
        /**
@@ -312,10 +313,11 @@ EXPORT_SYMBOL(drm_sched_entity_flush);
  * entity and signals all jobs with an error code if the process was killed.
  *
  */
-void drm_sched_entity_fini(struct drm_gpu_scheduler *sched,
-                          struct drm_sched_entity *entity)
+void drm_sched_entity_fini(struct drm_sched_entity *entity)
 {
+       struct drm_gpu_scheduler *sched;
 
+       sched = entity->sched;
        drm_sched_entity_set_rq(entity, NULL);
 
        /* Consumption of existing IBs wasn't completed. Forcefully
@@ -373,11 +375,10 @@ EXPORT_SYMBOL(drm_sched_entity_fini);
  *
  * Calls drm_sched_entity_do_release() and drm_sched_entity_cleanup()
  */
-void drm_sched_entity_destroy(struct drm_gpu_scheduler *sched,
-                               struct drm_sched_entity *entity)
+void drm_sched_entity_destroy(struct drm_sched_entity *entity)
 {
-       drm_sched_entity_flush(sched, entity, MAX_WAIT_SCHED_ENTITY_Q_EMPTY);
-       drm_sched_entity_fini(sched, entity);
+       drm_sched_entity_flush(entity, MAX_WAIT_SCHED_ENTITY_Q_EMPTY);
+       drm_sched_entity_fini(entity);
 }
 EXPORT_SYMBOL(drm_sched_entity_destroy);
 
@@ -740,10 +741,11 @@ EXPORT_SYMBOL(drm_sched_job_recovery);
  * Returns 0 for success, negative error code otherwise.
  */
 int drm_sched_job_init(struct drm_sched_job *job,
-                      struct drm_gpu_scheduler *sched,
                       struct drm_sched_entity *entity,
                       void *owner)
 {
+       struct drm_gpu_scheduler *sched = entity->sched;
+
        job->sched = sched;
        job->entity = entity;
        job->s_priority = entity->rq - sched->sched_rq;
index 1dceba2b42fd6975d293af6da7dbc0872752bc54..2a85fa68ffea51042b4c08dd8dc3497153590197 100644 (file)
@@ -145,13 +145,11 @@ v3d_open(struct drm_device *dev, struct drm_file *file)
 static void
 v3d_postclose(struct drm_device *dev, struct drm_file *file)
 {
-       struct v3d_dev *v3d = to_v3d_dev(dev);
        struct v3d_file_priv *v3d_priv = file->driver_priv;
        enum v3d_queue q;
 
        for (q = 0; q < V3D_MAX_QUEUES; q++) {
-               drm_sched_entity_destroy(&v3d->queue[q].sched,
-                                     &v3d_priv->sched_entity[q]);
+               drm_sched_entity_destroy(&v3d_priv->sched_entity[q]);
        }
 
        kfree(v3d_priv);
index e1fcbb4cd0aebc7afcc7d840971bad6f1d900128..5ce24098a5fdaa363e69bdde24e98322b152e2c1 100644 (file)
@@ -553,7 +553,6 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
        mutex_lock(&v3d->sched_lock);
        if (exec->bin.start != exec->bin.end) {
                ret = drm_sched_job_init(&exec->bin.base,
-                                        &v3d->queue[V3D_BIN].sched,
                                         &v3d_priv->sched_entity[V3D_BIN],
                                         v3d_priv);
                if (ret)
@@ -568,7 +567,6 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
        }
 
        ret = drm_sched_job_init(&exec->render.base,
-                                &v3d->queue[V3D_RENDER].sched,
                                 &v3d_priv->sched_entity[V3D_RENDER],
                                 v3d_priv);
        if (ret)
index 2205e89722f6b32e851b035a38d64e14ebc53c95..728346abcc81d480b3133d49a6c7ed278d1d3aa0 100644 (file)
@@ -286,12 +286,9 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,
                          struct drm_sched_rq **rq_list,
                          unsigned int num_rq_list,
                          atomic_t *guilty);
-long drm_sched_entity_flush(struct drm_gpu_scheduler *sched,
-                          struct drm_sched_entity *entity, long timeout);
-void drm_sched_entity_fini(struct drm_gpu_scheduler *sched,
-                          struct drm_sched_entity *entity);
-void drm_sched_entity_destroy(struct drm_gpu_scheduler *sched,
-                          struct drm_sched_entity *entity);
+long drm_sched_entity_flush(struct drm_sched_entity *entity, long timeout);
+void drm_sched_entity_fini(struct drm_sched_entity *entity);
+void drm_sched_entity_destroy(struct drm_sched_entity *entity);
 void drm_sched_entity_push_job(struct drm_sched_job *sched_job,
                               struct drm_sched_entity *entity);
 void drm_sched_entity_set_rq(struct drm_sched_entity *entity,
@@ -302,7 +299,6 @@ struct drm_sched_fence *drm_sched_fence_create(
 void drm_sched_fence_scheduled(struct drm_sched_fence *fence);
 void drm_sched_fence_finished(struct drm_sched_fence *fence);
 int drm_sched_job_init(struct drm_sched_job *job,
-                      struct drm_gpu_scheduler *sched,
                       struct drm_sched_entity *entity,
                       void *owner);
 void drm_sched_hw_job_reset(struct drm_gpu_scheduler *sched,