aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0398-drm-amdgpu-add-number-of-hardware-submissions-to-amd.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0398-drm-amdgpu-add-number-of-hardware-submissions-to-amd.patch')
-rw-r--r--common/recipes-kernel/linux/files/0398-drm-amdgpu-add-number-of-hardware-submissions-to-amd.patch87
1 files changed, 87 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0398-drm-amdgpu-add-number-of-hardware-submissions-to-amd.patch b/common/recipes-kernel/linux/files/0398-drm-amdgpu-add-number-of-hardware-submissions-to-amd.patch
new file mode 100644
index 00000000..d6fcba9c
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0398-drm-amdgpu-add-number-of-hardware-submissions-to-amd.patch
@@ -0,0 +1,87 @@
+From abc34e0409c28dd32419f25329279ef320274ca3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Tue, 15 Mar 2016 14:52:26 +0100
+Subject: [PATCH 0398/1110] drm/amdgpu: add number of hardware submissions to
+ amdgpu_fence_driver_init_ring
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Make this a parameter instead of using the global variable directly.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Acked-by: Alex Deucher <alexander.deucher@amd.com>
+Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu.h | 3 ++-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 10 ++++++++--
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 3 ++-
+ 3 files changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+index 19f8c46..bd556b4 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+@@ -374,7 +374,8 @@ int amdgpu_fence_driver_init(struct amdgpu_device *adev);
+ void amdgpu_fence_driver_fini(struct amdgpu_device *adev);
+ void amdgpu_fence_driver_force_completion(struct amdgpu_device *adev);
+
+-int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring);
++int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,
++ unsigned num_hw_submission);
+ int amdgpu_fence_driver_start_ring(struct amdgpu_ring *ring,
+ struct amdgpu_irq_src *irq_src,
+ unsigned irq_type);
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
+index ec73ab1..4654113 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
+@@ -355,15 +355,21 @@ int amdgpu_fence_driver_start_ring(struct amdgpu_ring *ring,
+ * for the requested ring.
+ *
+ * @ring: ring to init the fence driver on
++ * @num_hw_submission: number of entries on the hardware queue
+ *
+ * Init the fence driver for the requested ring (all asics).
+ * Helper function for amdgpu_fence_driver_init().
+ */
+-int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring)
++int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,
++ unsigned num_hw_submission)
+ {
+ long timeout;
+ int r;
+
++ /* Check that num_hw_submission is a power of two */
++ if ((num_hw_submission & (num_hw_submission - 1)) != 0)
++ return -EINVAL;
++
+ ring->fence_drv.cpu_addr = NULL;
+ ring->fence_drv.gpu_addr = 0;
+ ring->fence_drv.sync_seq = 0;
+@@ -387,7 +393,7 @@ int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring)
+ timeout = MAX_SCHEDULE_TIMEOUT;
+ }
+ r = amd_sched_init(&ring->sched, &amdgpu_sched_ops,
+- amdgpu_sched_hw_submission,
++ num_hw_submission,
+ timeout, ring->name);
+ if (r) {
+ DRM_ERROR("Failed to create scheduler on ring %s.\n",
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
+index cc3c7ad..972eed2 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
+@@ -236,7 +236,8 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring,
+ ring->adev = adev;
+ ring->idx = adev->num_rings++;
+ adev->rings[ring->idx] = ring;
+- r = amdgpu_fence_driver_init_ring(ring);
++ r = amdgpu_fence_driver_init_ring(ring,
++ amdgpu_sched_hw_submission);
+ if (r)
+ return r;
+ }
+--
+2.7.4
+