diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0675-drm-amdgpu-fix-leaking-the-IBs-on-error.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0675-drm-amdgpu-fix-leaking-the-IBs-on-error.patch | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/common/recipes-kernel/linux/files/0675-drm-amdgpu-fix-leaking-the-IBs-on-error.patch b/common/recipes-kernel/linux/files/0675-drm-amdgpu-fix-leaking-the-IBs-on-error.patch deleted file mode 100644 index c55d34f3..00000000 --- a/common/recipes-kernel/linux/files/0675-drm-amdgpu-fix-leaking-the-IBs-on-error.patch +++ /dev/null @@ -1,73 +0,0 @@ -From e4a58a28b50f30e72292b6659d94410cbf7355ad Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> -Date: Thu, 5 Nov 2015 17:00:25 +0100 -Subject: [PATCH 0675/1565] drm/amdgpu: fix leaking the IBs on error -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Fixing a memory leak when the scheduler is enabled. - -Signed-off-by: Christian König <christian.koenig@amd.com> -Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com> -Reviewed-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 25 ++++++++++++------------- - 1 file changed, 12 insertions(+), 13 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c -index dfc4d02..ecc82df 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c -@@ -499,16 +499,12 @@ static void amdgpu_cs_parser_fini_late(struct amdgpu_cs_parser *parser) - for (i = 0; i < parser->nchunks; i++) - drm_free_large(parser->chunks[i].kdata); - kfree(parser->chunks); -- if (!amdgpu_enable_scheduler) -- { -- if (parser->ibs) -- for (i = 0; i < parser->num_ibs; i++) -- amdgpu_ib_free(parser->adev, &parser->ibs[i]); -- kfree(parser->ibs); -- if (parser->uf.bo) -- drm_gem_object_unreference_unlocked(&parser->uf.bo->gem_base); -- } -- -+ if (parser->ibs) -+ for (i = 0; i < parser->num_ibs; i++) -+ amdgpu_ib_free(parser->adev, &parser->ibs[i]); -+ kfree(parser->ibs); -+ if (parser->uf.bo) -+ drm_gem_object_unreference_unlocked(&parser->uf.bo->gem_base); - kfree(parser); - } - -@@ -888,11 +884,14 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) - job->base.owner = parser->filp; - mutex_init(&job->job_lock); - if (job->ibs[job->num_ibs - 1].user) { -- memcpy(&job->uf, &parser->uf, -- sizeof(struct amdgpu_user_fence)); -+ job->uf = parser->uf; - job->ibs[job->num_ibs - 1].user = &job->uf; -+ parser->uf.bo = NULL; - } - -+ parser->ibs = NULL; -+ parser->num_ibs = 0; -+ - job->free_job = amdgpu_cs_free_job; - mutex_lock(&job->job_lock); - r = amd_sched_entity_push_job(&job->base); -@@ -905,7 +904,7 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) - cs->out.handle = - amdgpu_ctx_add_fence(parser->ctx, ring, - &job->base.s_fence->base); -- parser->ibs[parser->num_ibs - 1].sequence = cs->out.handle; -+ job->ibs[job->num_ibs - 1].sequence = cs->out.handle; - - list_sort(NULL, &parser->validated, cmp_size_smaller_first); - ttm_eu_fence_buffer_objects(&parser->ticket, --- -1.9.1 - |