diff options
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.patch | 87 |
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 + |