diff options
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0643-drm-amdgpu-move-ring_from_fence-to-common-code.patch')
-rw-r--r-- | meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0643-drm-amdgpu-move-ring_from_fence-to-common-code.patch | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0643-drm-amdgpu-move-ring_from_fence-to-common-code.patch b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0643-drm-amdgpu-move-ring_from_fence-to-common-code.patch new file mode 100644 index 00000000..13c00bad --- /dev/null +++ b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0643-drm-amdgpu-move-ring_from_fence-to-common-code.patch @@ -0,0 +1,116 @@ +From d220693b832396002fe10d3f019b6dd909f9ff7c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> +Date: Thu, 22 Oct 2015 11:29:33 +0200 +Subject: [PATCH 0643/1050] drm/amdgpu: move ring_from_fence to common code +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Going to need that elsewhere as well. + +Signed-off-by: Christian König <christian.koenig@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + + drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 24 ++++++++++++++++++++++++ + drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c | 23 ++--------------------- + 3 files changed, 27 insertions(+), 21 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +index 63cf48e..d23d211 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +@@ -1231,6 +1231,7 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring, + struct amdgpu_irq_src *irq_src, unsigned irq_type, + enum amdgpu_ring_type ring_type); + void amdgpu_ring_fini(struct amdgpu_ring *ring); ++struct amdgpu_ring *amdgpu_ring_from_fence(struct fence *f); + + /* + * CS. +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +index b2df348..78e9b0f 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +@@ -436,6 +436,30 @@ void amdgpu_ring_fini(struct amdgpu_ring *ring) + } + } + ++/** ++ * amdgpu_ring_from_fence - get ring from fence ++ * ++ * @f: fence structure ++ * ++ * Extract the ring a fence belongs to. Handles both scheduler as ++ * well as hardware fences. ++ */ ++struct amdgpu_ring *amdgpu_ring_from_fence(struct fence *f) ++{ ++ struct amdgpu_fence *a_fence; ++ struct amd_sched_fence *s_fence; ++ ++ s_fence = to_amd_sched_fence(f); ++ if (s_fence) ++ return container_of(s_fence->sched, struct amdgpu_ring, sched); ++ ++ a_fence = to_amdgpu_fence(f); ++ if (a_fence) ++ return a_fence->ring; ++ ++ return NULL; ++} ++ + /* + * Debugfs info + */ +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c +index 3f48759..0212b31 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c +@@ -139,25 +139,6 @@ int amdgpu_sa_bo_manager_suspend(struct amdgpu_device *adev, + return r; + } + +-static uint32_t amdgpu_sa_get_ring_from_fence(struct fence *f) +-{ +- struct amdgpu_fence *a_fence; +- struct amd_sched_fence *s_fence; +- +- s_fence = to_amd_sched_fence(f); +- if (s_fence) { +- struct amdgpu_ring *ring; +- +- ring = container_of(s_fence->sched, struct amdgpu_ring, sched); +- return ring->idx; +- } +- +- a_fence = to_amdgpu_fence(f); +- if (a_fence) +- return a_fence->ring->idx; +- return 0; +-} +- + static void amdgpu_sa_bo_remove_locked(struct amdgpu_sa_bo *sa_bo) + { + struct amdgpu_sa_manager *sa_manager = sa_bo->manager; +@@ -318,7 +299,7 @@ static bool amdgpu_sa_bo_next_hole(struct amdgpu_sa_manager *sa_manager, + } + + if (best_bo) { +- uint32_t idx = amdgpu_sa_get_ring_from_fence(best_bo->fence); ++ uint32_t idx = amdgpu_ring_from_fence(best_bo->fence)->idx; + ++tries[idx]; + sa_manager->hole = best_bo->olist.prev; + +@@ -412,7 +393,7 @@ void amdgpu_sa_bo_free(struct amdgpu_device *adev, struct amdgpu_sa_bo **sa_bo, + if (fence && !fence_is_signaled(fence)) { + uint32_t idx; + (*sa_bo)->fence = fence_get(fence); +- idx = amdgpu_sa_get_ring_from_fence(fence); ++ idx = amdgpu_ring_from_fence(fence)->idx; + list_add_tail(&(*sa_bo)->flist, &sa_manager->flist[idx]); + } else { + amdgpu_sa_bo_remove_locked(*sa_bo); +-- +1.9.1 + |