aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0406-drm-amdgpu-use-scheduler-for-UVD-ib-test.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0406-drm-amdgpu-use-scheduler-for-UVD-ib-test.patch')
-rw-r--r--common/recipes-kernel/linux/files/0406-drm-amdgpu-use-scheduler-for-UVD-ib-test.patch110
1 files changed, 0 insertions, 110 deletions
diff --git a/common/recipes-kernel/linux/files/0406-drm-amdgpu-use-scheduler-for-UVD-ib-test.patch b/common/recipes-kernel/linux/files/0406-drm-amdgpu-use-scheduler-for-UVD-ib-test.patch
deleted file mode 100644
index 092ce3d9..00000000
--- a/common/recipes-kernel/linux/files/0406-drm-amdgpu-use-scheduler-for-UVD-ib-test.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From 7b5ec431770ac581aa23d460f670cfb97c14280d Mon Sep 17 00:00:00 2001
-From: Chunming Zhou <david1.zhou@amd.com>
-Date: Fri, 3 Jul 2015 14:08:18 +0800
-Subject: [PATCH 0406/1050] drm/amdgpu: use scheduler for UVD ib test
-
-Signed-off-by: Chunming Zhou <david1.zhou@amd.com>
-Reviewed-by: Christian K?nig <christian.koenig@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 61 +++++++++++++++++++++++----------
- 1 file changed, 42 insertions(+), 19 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
-index f643535..c1be7db 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
-@@ -809,6 +809,14 @@ int amdgpu_uvd_ring_parse_cs(struct amdgpu_cs_parser *parser, uint32_t ib_idx)
- return 0;
- }
-
-+static int amdgpu_uvd_free_job(
-+ struct amdgpu_cs_parser *sched_job)
-+{
-+ amdgpu_ib_free(sched_job->adev, sched_job->ibs);
-+ kfree(sched_job->ibs);
-+ return 0;
-+}
-+
- static int amdgpu_uvd_send_msg(struct amdgpu_ring *ring,
- struct amdgpu_bo *bo,
- struct amdgpu_fence **fence)
-@@ -816,7 +824,8 @@ static int amdgpu_uvd_send_msg(struct amdgpu_ring *ring,
- struct ttm_validate_buffer tv;
- struct ww_acquire_ctx ticket;
- struct list_head head;
-- struct amdgpu_ib ib;
-+ struct amdgpu_ib *ib = NULL;
-+ struct amdgpu_device *adev = ring->adev;
- uint64_t addr;
- int i, r;
-
-@@ -838,34 +847,48 @@ static int amdgpu_uvd_send_msg(struct amdgpu_ring *ring,
- r = ttm_bo_validate(&bo->tbo, &bo->placement, true, false);
- if (r)
- goto err;
--
-- r = amdgpu_ib_get(ring, NULL, 64, &ib);
-- if (r)
-+ ib = kzalloc(sizeof(struct amdgpu_ib), GFP_KERNEL);
-+ if (!ib) {
-+ r = -ENOMEM;
- goto err;
-+ }
-+ r = amdgpu_ib_get(ring, NULL, 64, ib);
-+ if (r)
-+ goto err1;
-
- addr = amdgpu_bo_gpu_offset(bo);
-- ib.ptr[0] = PACKET0(mmUVD_GPCOM_VCPU_DATA0, 0);
-- ib.ptr[1] = addr;
-- ib.ptr[2] = PACKET0(mmUVD_GPCOM_VCPU_DATA1, 0);
-- ib.ptr[3] = addr >> 32;
-- ib.ptr[4] = PACKET0(mmUVD_GPCOM_VCPU_CMD, 0);
-- ib.ptr[5] = 0;
-+ ib->ptr[0] = PACKET0(mmUVD_GPCOM_VCPU_DATA0, 0);
-+ ib->ptr[1] = addr;
-+ ib->ptr[2] = PACKET0(mmUVD_GPCOM_VCPU_DATA1, 0);
-+ ib->ptr[3] = addr >> 32;
-+ ib->ptr[4] = PACKET0(mmUVD_GPCOM_VCPU_CMD, 0);
-+ ib->ptr[5] = 0;
- for (i = 6; i < 16; ++i)
-- ib.ptr[i] = PACKET2(0);
-- ib.length_dw = 16;
-+ ib->ptr[i] = PACKET2(0);
-+ ib->length_dw = 16;
-
-- r = amdgpu_ib_schedule(ring->adev, 1, &ib, AMDGPU_FENCE_OWNER_UNDEFINED);
-+ r = amdgpu_sched_ib_submit_kernel_helper(adev, ring, ib, 1,
-+ &amdgpu_uvd_free_job,
-+ AMDGPU_FENCE_OWNER_UNDEFINED);
- if (r)
-- goto err;
-- ttm_eu_fence_buffer_objects(&ticket, &head, &ib.fence->base);
-+ goto err2;
-
-- if (fence)
-- *fence = amdgpu_fence_ref(ib.fence);
-+ ttm_eu_fence_buffer_objects(&ticket, &head, &ib->fence->base);
-
-- amdgpu_ib_free(ring->adev, &ib);
-+ if (fence)
-+ *fence = amdgpu_fence_ref(ib->fence);
- amdgpu_bo_unref(&bo);
-- return 0;
-
-+ if (amdgpu_enable_scheduler)
-+ return 0;
-+
-+ amdgpu_ib_free(ring->adev, ib);
-+ kfree(ib);
-+ return 0;
-+err2:
-+ amdgpu_ib_free(ring->adev, ib);
-+err1:
-+ kfree(ib);
- err:
- ttm_eu_backoff_reservation(&ticket, &head);
- return r;
---
-1.9.1
-