diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0446-drm-amdgpu-remove-duplicate-amdgpu_fence_process-imp.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0446-drm-amdgpu-remove-duplicate-amdgpu_fence_process-imp.patch | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/common/recipes-kernel/linux/files/0446-drm-amdgpu-remove-duplicate-amdgpu_fence_process-imp.patch b/common/recipes-kernel/linux/files/0446-drm-amdgpu-remove-duplicate-amdgpu_fence_process-imp.patch deleted file mode 100644 index 6f5493b8..00000000 --- a/common/recipes-kernel/linux/files/0446-drm-amdgpu-remove-duplicate-amdgpu_fence_process-imp.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 68ed3de43428def8ca0105bb53da8863ba456114 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> -Date: Fri, 7 Aug 2015 15:57:21 +0200 -Subject: [PATCH 0446/1050] drm/amdgpu: remove duplicate amdgpu_fence_process - implementation -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Looks like that somehow got missed while during porting the radeon changes. - -Signed-off-by: Christian König <christian.koenig@amd.com> -Reviewed-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 59 +------------------------------ - 1 file changed, 1 insertion(+), 58 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c -index 1097259..9841cc1 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c -@@ -294,65 +294,8 @@ static void amdgpu_fence_check_lockup(struct work_struct *work) - */ - void amdgpu_fence_process(struct amdgpu_ring *ring) - { -- uint64_t seq, last_seq, last_emitted; -- unsigned count_loop = 0; -- bool wake = false; -- unsigned long irqflags; -- -- /* Note there is a scenario here for an infinite loop but it's -- * very unlikely to happen. For it to happen, the current polling -- * process need to be interrupted by another process and another -- * process needs to update the last_seq btw the atomic read and -- * xchg of the current process. -- * -- * More over for this to go in infinite loop there need to be -- * continuously new fence signaled ie amdgpu_fence_read needs -- * to return a different value each time for both the currently -- * polling process and the other process that xchg the last_seq -- * btw atomic read and xchg of the current process. And the -- * value the other process set as last seq must be higher than -- * the seq value we just read. Which means that current process -- * need to be interrupted after amdgpu_fence_read and before -- * atomic xchg. -- * -- * To be even more safe we count the number of time we loop and -- * we bail after 10 loop just accepting the fact that we might -- * have temporarly set the last_seq not to the true real last -- * seq but to an older one. -- */ -- spin_lock_irqsave(&ring->fence_lock, irqflags); -- last_seq = atomic64_read(&ring->fence_drv.last_seq); -- do { -- last_emitted = ring->fence_drv.sync_seq[ring->idx]; -- seq = amdgpu_fence_read(ring); -- seq |= last_seq & 0xffffffff00000000LL; -- if (seq < last_seq) { -- seq &= 0xffffffff; -- seq |= last_emitted & 0xffffffff00000000LL; -- } -- -- if (seq <= last_seq || seq > last_emitted) { -- break; -- } -- /* If we loop over we don't want to return without -- * checking if a fence is signaled as it means that the -- * seq we just read is different from the previous on. -- */ -- wake = true; -- last_seq = seq; -- if ((count_loop++) > 10) { -- /* We looped over too many time leave with the -- * fact that we might have set an older fence -- * seq then the current real last seq as signaled -- * by the hw. -- */ -- break; -- } -- } while (atomic64_xchg(&ring->fence_drv.last_seq, seq) > seq); -- -- if (wake) -+ if (amdgpu_fence_activity(ring)) - wake_up_all(&ring->fence_drv.fence_queue); -- spin_unlock_irqrestore(&ring->fence_lock, irqflags); - } - - /** --- -1.9.1 - |