diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0308-drm-amdgpu-nuke-the-kernel-context.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0308-drm-amdgpu-nuke-the-kernel-context.patch | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0308-drm-amdgpu-nuke-the-kernel-context.patch b/common/recipes-kernel/linux/files/0308-drm-amdgpu-nuke-the-kernel-context.patch new file mode 100644 index 00000000..357de07e --- /dev/null +++ b/common/recipes-kernel/linux/files/0308-drm-amdgpu-nuke-the-kernel-context.patch @@ -0,0 +1,139 @@ +From f966a597c252ae36b89a07d7b0460449bcb680c7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> +Date: Thu, 11 Feb 2016 09:56:44 +0100 +Subject: [PATCH 0308/1110] drm/amdgpu: nuke the kernel context +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Not used any more. + +Signed-off-by: Christian König <christian.koenig@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Signed-off-by: Kalyan Alle <kalyan.alle@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 7 ------- + drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 18 +++++++----------- + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 ------ + drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 5 ----- + 4 files changed, 7 insertions(+), 29 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +index 84ee4fe..e33c5a6 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +@@ -983,10 +983,6 @@ struct amdgpu_ctx_mgr { + struct idr ctx_handles; + }; + +-int amdgpu_ctx_init(struct amdgpu_device *adev, enum amd_sched_priority pri, +- struct amdgpu_ctx *ctx); +-void amdgpu_ctx_fini(struct amdgpu_ctx *ctx); +- + struct amdgpu_ctx *amdgpu_ctx_get(struct amdgpu_fpriv *fpriv, uint32_t id); + int amdgpu_ctx_put(struct amdgpu_ctx *ctx); + +@@ -2050,9 +2046,6 @@ struct amdgpu_device { + /* amdkfd interface */ + struct kfd_dev *kfd; + +- /* kernel conext for IB submission */ +- struct amdgpu_ctx kernel_ctx; +- + struct amdgpu_virtualization virtualization; + }; + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +index f1f4b45..3b99282 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +@@ -25,8 +25,7 @@ + #include <drm/drmP.h> + #include "amdgpu.h" + +-int amdgpu_ctx_init(struct amdgpu_device *adev, enum amd_sched_priority pri, +- struct amdgpu_ctx *ctx) ++static int amdgpu_ctx_init(struct amdgpu_device *adev, struct amdgpu_ctx *ctx) + { + unsigned i, j; + int r; +@@ -47,14 +46,11 @@ int amdgpu_ctx_init(struct amdgpu_device *adev, enum amd_sched_priority pri, + } + /* create context entity for each ring */ + for (i = 0; i < adev->num_rings; i++) { ++ struct amdgpu_ring *ring = adev->rings[i]; + struct amd_sched_rq *rq; +- if (pri >= AMD_SCHED_MAX_PRIORITY) { +- kfree(ctx->fences); +- return -EINVAL; +- } +- rq = &adev->rings[i]->sched.sched_rq[pri]; +- r = amd_sched_entity_init(&adev->rings[i]->sched, +- &ctx->rings[i].entity, ++ ++ rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL]; ++ r = amd_sched_entity_init(&ring->sched, &ctx->rings[i].entity, + rq, amdgpu_sched_jobs); + if (r) + break; +@@ -70,7 +66,7 @@ int amdgpu_ctx_init(struct amdgpu_device *adev, enum amd_sched_priority pri, + return 0; + } + +-void amdgpu_ctx_fini(struct amdgpu_ctx *ctx) ++static void amdgpu_ctx_fini(struct amdgpu_ctx *ctx) + { + struct amdgpu_device *adev = ctx->adev; + unsigned i, j; +@@ -108,7 +104,7 @@ static int amdgpu_ctx_alloc(struct amdgpu_device *adev, + return r; + } + *id = (uint32_t)r; +- r = amdgpu_ctx_init(adev, AMD_SCHED_PRIORITY_NORMAL, ctx); ++ r = amdgpu_ctx_init(adev, ctx); + if (r) { + idr_remove(&mgr->ctx_handles, *id); + *id = 0; +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +index e70c4e9..736d560 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +@@ -1551,11 +1551,6 @@ int amdgpu_device_init(struct amdgpu_device *adev, + return r; + } + +- r = amdgpu_ctx_init(adev, AMD_SCHED_PRIORITY_KERNEL, &adev->kernel_ctx); +- if (r) { +- dev_err(adev->dev, "failed to create kernel context (%d).\n", r); +- return r; +- } + r = amdgpu_ib_ring_tests(adev); + if (r) + DRM_ERROR("ib ring test failed (%d).\n", r); +@@ -1619,7 +1614,6 @@ void amdgpu_device_fini(struct amdgpu_device *adev) + adev->shutdown = true; + /* evict vram memory */ + amdgpu_bo_evict_vram(adev); +- amdgpu_ctx_fini(&adev->kernel_ctx); + amdgpu_ib_pool_fini(adev); + amdgpu_fence_driver_fini(adev); + amdgpu_fbdev_fini(adev); +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +index a16c43f..10ff227 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +@@ -83,11 +83,6 @@ int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring, + struct amd_sched_entity *entity, void *owner, + struct fence **f) + { +- struct amdgpu_device *adev = job->adev; +- +- if (!entity) +- entity = &adev->kernel_ctx.rings[ring->idx].entity; +- + job->ring = ring; + job->base.sched = &ring->sched; + job->base.s_entity = entity; +-- +2.7.4 + |