diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0280-drm-amdgpu-rename-amdgpu_sched.c-to-amdgpu_job.c.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0280-drm-amdgpu-rename-amdgpu_sched.c-to-amdgpu_job.c.patch | 338 |
1 files changed, 0 insertions, 338 deletions
diff --git a/common/recipes-kernel/linux/files/0280-drm-amdgpu-rename-amdgpu_sched.c-to-amdgpu_job.c.patch b/common/recipes-kernel/linux/files/0280-drm-amdgpu-rename-amdgpu_sched.c-to-amdgpu_job.c.patch deleted file mode 100644 index e76006c8..00000000 --- a/common/recipes-kernel/linux/files/0280-drm-amdgpu-rename-amdgpu_sched.c-to-amdgpu_job.c.patch +++ /dev/null @@ -1,338 +0,0 @@ -From 5d80a5c6d33cb16be4e609c6302c09a5db7200c8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> -Date: Mon, 1 Feb 2016 12:31:01 +0100 -Subject: [PATCH 0280/1110] drm/amdgpu: rename amdgpu_sched.c to amdgpu_job.c -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -That's probably a better matching name. - -Signed-off-by: Christian König <christian.koenig@amd.com> -Reviewed-by: Alex Deucher <alexander.deucer@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> -Signed-off-by: Kalyan Alle <kalyan.alle@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 153 ++++++++++++++++++++++++++++++ - drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c | 151 ----------------------------- - 2 files changed, 153 insertions(+), 151 deletions(-) - create mode 100644 drivers/gpu/drm/amd/amdgpu/amdgpu_job.c - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c -new file mode 100644 -index 0000000..fe4f6be ---- /dev/null -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c -@@ -0,0 +1,153 @@ -+/* -+ * Copyright 2015 Advanced Micro Devices, Inc. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, including without limitation -+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, -+ * and/or sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included in -+ * all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ * -+ * -+ */ -+#include <linux/kthread.h> -+#include <linux/wait.h> -+#include <linux/sched.h> -+#include <drm/drmP.h> -+#include "amdgpu.h" -+#include "amdgpu_trace.h" -+ -+int amdgpu_job_alloc(struct amdgpu_device *adev, unsigned num_ibs, -+ struct amdgpu_job **job) -+{ -+ size_t size = sizeof(struct amdgpu_job); -+ -+ if (num_ibs == 0) -+ return -EINVAL; -+ -+ size += sizeof(struct amdgpu_ib) * num_ibs; -+ -+ *job = kzalloc(size, GFP_KERNEL); -+ if (!*job) -+ return -ENOMEM; -+ -+ (*job)->adev = adev; -+ (*job)->ibs = (void *)&(*job)[1]; -+ (*job)->num_ibs = num_ibs; -+ -+ return 0; -+} -+ -+int amdgpu_job_alloc_with_ib(struct amdgpu_device *adev, unsigned size, -+ struct amdgpu_job **job) -+{ -+ int r; -+ -+ r = amdgpu_job_alloc(adev, 1, job); -+ if (r) -+ return r; -+ -+ r = amdgpu_ib_get(adev, NULL, size, &(*job)->ibs[0]); -+ if (r) -+ kfree(*job); -+ -+ return r; -+} -+ -+void amdgpu_job_free(struct amdgpu_job *job) -+{ -+ unsigned i; -+ -+ for (i = 0; i < job->num_ibs; ++i) -+ amdgpu_ib_free(job->adev, &job->ibs[i]); -+ -+ amdgpu_bo_unref(&job->uf.bo); -+ kfree(job); -+} -+ -+int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring, -+ void *owner, struct fence **f) -+{ -+ struct amdgpu_device *adev = job->adev; -+ -+ job->ring = ring; -+ job->base.sched = &ring->sched; -+ job->base.s_entity = &adev->kernel_ctx.rings[ring->idx].entity; -+ job->base.s_fence = amd_sched_fence_create(job->base.s_entity, owner); -+ if (!job->base.s_fence) -+ return -ENOMEM; -+ -+ *f = fence_get(&job->base.s_fence->base); -+ -+ job->owner = owner; -+ amd_sched_entity_push_job(&job->base); -+ -+ return 0; -+} -+ -+static struct fence *amdgpu_job_dependency(struct amd_sched_job *sched_job) -+{ -+ struct amdgpu_job *job = to_amdgpu_job(sched_job); -+ struct amdgpu_sync *sync = &job->ibs->sync; -+ struct amdgpu_vm *vm = job->ibs->vm; -+ -+ struct fence *fence = amdgpu_sync_get_fence(sync); -+ -+ if (fence == NULL && vm && !job->ibs->grabbed_vmid) { -+ struct amdgpu_ring *ring = job->ring; -+ int r; -+ -+ r = amdgpu_vm_grab_id(vm, ring, sync, -+ &job->base.s_fence->base); -+ if (r) -+ DRM_ERROR("Error getting VM ID (%d)\n", r); -+ else -+ job->ibs->grabbed_vmid = true; -+ -+ fence = amdgpu_sync_get_fence(sync); -+ } -+ -+ return fence; -+} -+ -+static struct fence *amdgpu_job_run(struct amd_sched_job *sched_job) -+{ -+ struct fence *fence = NULL; -+ struct amdgpu_job *job; -+ int r; -+ -+ if (!sched_job) { -+ DRM_ERROR("job is null\n"); -+ return NULL; -+ } -+ job = to_amdgpu_job(sched_job); -+ trace_amdgpu_sched_run_job(job); -+ r = amdgpu_ib_schedule(job->ring, job->num_ibs, job->ibs, -+ job->owner, &fence); -+ if (r) { -+ DRM_ERROR("Error scheduling IBs (%d)\n", r); -+ goto err; -+ } -+ -+err: -+ amdgpu_job_free(job); -+ return fence; -+} -+ -+struct amd_sched_backend_ops amdgpu_sched_ops = { -+ .dependency = amdgpu_job_dependency, -+ .run_job = amdgpu_job_run, -+}; -+ -+ -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c -index e699b06..e69de29 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c -@@ -1,151 +0,0 @@ --/* -- * Copyright 2015 Advanced Micro Devices, Inc. -- * -- * Permission is hereby granted, free of charge, to any person obtaining a -- * copy of this software and associated documentation files (the "Software"), -- * to deal in the Software without restriction, including without limitation -- * the rights to use, copy, modify, merge, publish, distribute, sublicense, -- * and/or sell copies of the Software, and to permit persons to whom the -- * Software is furnished to do so, subject to the following conditions: -- * -- * The above copyright notice and this permission notice shall be included in -- * all copies or substantial portions of the Software. -- * -- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR -- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -- * OTHER DEALINGS IN THE SOFTWARE. -- * -- * -- */ --#include <linux/kthread.h> --#include <linux/wait.h> --#include <linux/sched.h> --#include <drm/drmP.h> --#include "amdgpu.h" --#include "amdgpu_trace.h" -- --int amdgpu_job_alloc(struct amdgpu_device *adev, unsigned num_ibs, -- struct amdgpu_job **job) --{ -- size_t size = sizeof(struct amdgpu_job); -- -- if (num_ibs == 0) -- return -EINVAL; -- -- size += sizeof(struct amdgpu_ib) * num_ibs; -- -- *job = kzalloc(size, GFP_KERNEL); -- if (!*job) -- return -ENOMEM; -- -- (*job)->adev = adev; -- (*job)->ibs = (void *)&(*job)[1]; -- (*job)->num_ibs = num_ibs; -- (*job)->free_job = NULL; -- -- return 0; --} -- --void amdgpu_job_free(struct amdgpu_job *job) --{ -- unsigned i; -- -- for (i = 0; i < job->num_ibs; ++i) -- amdgpu_ib_free(job->adev, &job->ibs[i]); -- -- amdgpu_bo_unref(&job->uf.bo); -- /* TODO: Free the job structure here as well */ --} -- --static struct fence *amdgpu_sched_dependency(struct amd_sched_job *sched_job) --{ -- struct amdgpu_job *job = to_amdgpu_job(sched_job); -- struct amdgpu_sync *sync = &job->ibs->sync; -- struct amdgpu_vm *vm = job->ibs->vm; -- -- struct fence *fence = amdgpu_sync_get_fence(sync); -- -- if (fence == NULL && vm && !job->ibs->grabbed_vmid) { -- struct amdgpu_ring *ring = job->ring; -- int r; -- -- r = amdgpu_vm_grab_id(vm, ring, sync, -- &job->base.s_fence->base); -- if (r) -- DRM_ERROR("Error getting VM ID (%d)\n", r); -- else -- job->ibs->grabbed_vmid = true; -- -- fence = amdgpu_sync_get_fence(sync); -- } -- -- return fence; --} -- --static struct fence *amdgpu_sched_run_job(struct amd_sched_job *sched_job) --{ -- struct amdgpu_fence *fence = NULL; -- struct amdgpu_job *job; -- int r; -- -- if (!sched_job) { -- DRM_ERROR("job is null\n"); -- return NULL; -- } -- job = to_amdgpu_job(sched_job); -- trace_amdgpu_sched_run_job(job); -- r = amdgpu_ib_schedule(job->ring, job->num_ibs, job->ibs, -- job->owner, &fence); -- if (r) { -- DRM_ERROR("Error scheduling IBs (%d)\n", r); -- goto err; -- } -- --err: -- if (job->free_job) -- job->free_job(job); -- -- kfree(job); -- return fence; --} -- --struct amd_sched_backend_ops amdgpu_sched_ops = { -- .dependency = amdgpu_sched_dependency, -- .run_job = amdgpu_sched_run_job, --}; -- --int amdgpu_sched_ib_submit_kernel_helper(struct amdgpu_device *adev, -- struct amdgpu_ring *ring, -- struct amdgpu_ib *ibs, -- unsigned num_ibs, -- int (*free_job)(struct amdgpu_job *), -- void *owner, -- struct fence **f) --{ -- struct amdgpu_job *job = -- kzalloc(sizeof(struct amdgpu_job), GFP_KERNEL); -- if (!job) -- return -ENOMEM; -- job->base.sched = &ring->sched; -- job->base.s_entity = &adev->kernel_ctx.rings[ring->idx].entity; -- job->base.s_fence = amd_sched_fence_create(job->base.s_entity, owner); -- if (!job->base.s_fence) { -- kfree(job); -- return -ENOMEM; -- } -- *f = fence_get(&job->base.s_fence->base); -- -- job->adev = adev; -- job->ring = ring; -- job->ibs = ibs; -- job->num_ibs = num_ibs; -- job->owner = owner; -- job->free_job = free_job; -- amd_sched_entity_push_job(&job->base); -- -- return 0; --} --- -2.7.4 - |