diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0267-drm-amdgpu-separate-pushing-CS-to-scheduler.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0267-drm-amdgpu-separate-pushing-CS-to-scheduler.patch | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/common/recipes-kernel/linux/files/0267-drm-amdgpu-separate-pushing-CS-to-scheduler.patch b/common/recipes-kernel/linux/files/0267-drm-amdgpu-separate-pushing-CS-to-scheduler.patch deleted file mode 100644 index 74eca800..00000000 --- a/common/recipes-kernel/linux/files/0267-drm-amdgpu-separate-pushing-CS-to-scheduler.patch +++ /dev/null @@ -1,134 +0,0 @@ -From 1187d5c01ed4b93581713158f4c2aac0f8fc0611 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> -Date: Sun, 31 Jan 2016 11:30:55 +0100 -Subject: [PATCH 0267/1110] drm/amdgpu: separate pushing CS to scheduler -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Move that out of the main IOCTL function. - -Signed-off-by: Christian König <christian.koenig@amd.com> -Reviewed-by: Alex Deucher <alexander.deucher@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 96 ++++++++++++++++++---------------- - 1 file changed, 50 insertions(+), 46 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c -index ddc8339..a344b16 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c -@@ -809,6 +809,54 @@ static int amdgpu_cs_free_job(struct amdgpu_job *job) - return 0; - } - -+static int amdgpu_cs_submit(struct amdgpu_cs_parser *p, -+ union drm_amdgpu_cs *cs) -+{ -+ struct amdgpu_ring * ring = p->ibs->ring; -+ struct amd_sched_fence *fence; -+ struct amdgpu_job *job; -+ -+ job = kzalloc(sizeof(struct amdgpu_job), GFP_KERNEL); -+ if (!job) -+ return -ENOMEM; -+ -+ job->base.sched = &ring->sched; -+ job->base.s_entity = &p->ctx->rings[ring->idx].entity; -+ job->adev = p->adev; -+ job->owner = p->filp; -+ job->free_job = amdgpu_cs_free_job; -+ -+ job->ibs = p->ibs; -+ job->num_ibs = p->num_ibs; -+ p->ibs = NULL; -+ p->num_ibs = 0; -+ -+ if (job->ibs[job->num_ibs - 1].user) { -+ job->uf = p->uf; -+ job->ibs[job->num_ibs - 1].user = &job->uf; -+ p->uf.bo = NULL; -+ } -+ -+ fence = amd_sched_fence_create(job->base.s_entity, p->filp); -+ if (!fence) { -+ amdgpu_cs_free_job(job); -+ kfree(job); -+ return -ENOMEM; -+ } -+ -+ job->base.s_fence = fence; -+ p->fence = fence_get(&fence->base); -+ -+ cs->out.handle = amdgpu_ctx_add_fence(p->ctx, ring, -+ &fence->base); -+ job->ibs[job->num_ibs - 1].sequence = cs->out.handle; -+ -+ trace_amdgpu_cs_ioctl(job); -+ amd_sched_entity_push_job(&job->base); -+ -+ return 0; -+} -+ - int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) - { - struct amdgpu_device *adev = dev->dev_private; -@@ -856,52 +904,8 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) - if (r) - goto out; - -- if (parser.num_ibs) { -- struct amdgpu_ring * ring = parser.ibs->ring; -- struct amd_sched_fence *fence; -- struct amdgpu_job *job; -- -- job = kzalloc(sizeof(struct amdgpu_job), GFP_KERNEL); -- if (!job) { -- r = -ENOMEM; -- goto out; -- } -- -- job->base.sched = &ring->sched; -- job->base.s_entity = &parser.ctx->rings[ring->idx].entity; -- job->adev = parser.adev; -- job->owner = parser.filp; -- job->free_job = amdgpu_cs_free_job; -- -- job->ibs = parser.ibs; -- job->num_ibs = parser.num_ibs; -- parser.ibs = NULL; -- parser.num_ibs = 0; -- -- if (job->ibs[job->num_ibs - 1].user) { -- job->uf = parser.uf; -- job->ibs[job->num_ibs - 1].user = &job->uf; -- parser.uf.bo = NULL; -- } -- -- fence = amd_sched_fence_create(job->base.s_entity, -- parser.filp); -- if (!fence) { -- r = -ENOMEM; -- amdgpu_cs_free_job(job); -- kfree(job); -- goto out; -- } -- job->base.s_fence = fence; -- parser.fence = fence_get(&fence->base); -- -- cs->out.handle = amdgpu_ctx_add_fence(parser.ctx, ring, -- &fence->base); -- job->ibs[job->num_ibs - 1].sequence = cs->out.handle; -- -- trace_amdgpu_cs_ioctl(job); -- amd_sched_entity_push_job(&job->base); -- } -+ if (parser.num_ibs) -+ r = amdgpu_cs_submit(&parser, cs); - - out: - amdgpu_cs_parser_fini(&parser, r, reserved_buffers); --- -2.7.4 - |