aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0447-drm-amdgpu-cleanup-amdgpu_fence_ring_wait_seq.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0447-drm-amdgpu-cleanup-amdgpu_fence_ring_wait_seq.patch')
-rw-r--r--common/recipes-kernel/linux/files/0447-drm-amdgpu-cleanup-amdgpu_fence_ring_wait_seq.patch149
1 files changed, 0 insertions, 149 deletions
diff --git a/common/recipes-kernel/linux/files/0447-drm-amdgpu-cleanup-amdgpu_fence_ring_wait_seq.patch b/common/recipes-kernel/linux/files/0447-drm-amdgpu-cleanup-amdgpu_fence_ring_wait_seq.patch
deleted file mode 100644
index 596ad9ad..00000000
--- a/common/recipes-kernel/linux/files/0447-drm-amdgpu-cleanup-amdgpu_fence_ring_wait_seq.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-From 00d2a2b21dbd6010247d44cd0cd05e5bc40af8e6 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
-Date: Fri, 7 Aug 2015 16:15:36 +0200
-Subject: [PATCH 0447/1050] drm/amdgpu: cleanup amdgpu_fence_ring_wait_seq
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-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 | 84 ++++++-------------------------
- 1 file changed, 15 insertions(+), 69 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
-index 9841cc1..98500f1 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
-@@ -372,21 +372,15 @@ static bool amdgpu_fence_enable_signaling(struct fence *f)
- * amdgpu_ring_wait_seq_timeout - wait for seq of the specific ring to signal
- * @ring: ring to wait on for the seq number
- * @seq: seq number wait for
-- * @intr: if interruptible
-- * @timeout: jiffies before time out
- *
- * return value:
-- * 0: time out but seq not signaled, and gpu not hang
-- * X (X > 0): seq signaled and X means how many jiffies remains before time out
-- * -EDEADL: GPU hang before time out
-- * -ESYSRESTART: interrupted before seq signaled
-+ * 0: seq signaled, and gpu not hang
-+ * -EDEADL: GPU hang detected
- * -EINVAL: some paramter is not valid
- */
--static long amdgpu_fence_ring_wait_seq_timeout(struct amdgpu_ring *ring, uint64_t seq,
-- bool intr, long timeout)
-+static int amdgpu_fence_ring_wait_seq(struct amdgpu_ring *ring, uint64_t seq)
- {
- struct amdgpu_device *adev = ring->adev;
-- long r = 0;
- bool signaled = false;
-
- BUG_ON(!ring);
-@@ -394,50 +388,16 @@ static long amdgpu_fence_ring_wait_seq_timeout(struct amdgpu_ring *ring, uint64_
- return -EINVAL;
-
- if (atomic64_read(&ring->fence_drv.last_seq) >= seq)
-- return timeout;
--
-- while (1) {
-- if (intr) {
-- r = wait_event_interruptible_timeout(ring->fence_drv.fence_queue, (
-- (signaled = amdgpu_fence_seq_signaled(ring, seq))
-- || adev->needs_reset), AMDGPU_FENCE_JIFFIES_TIMEOUT);
--
-- if (r == -ERESTARTSYS) /* interrupted */
-- return r;
-- } else {
-- r = wait_event_timeout(ring->fence_drv.fence_queue, (
-- (signaled = amdgpu_fence_seq_signaled(ring, seq))
-- || adev->needs_reset), AMDGPU_FENCE_JIFFIES_TIMEOUT);
-- }
--
-- if (signaled) {
-- /* seq signaled */
-- if (timeout == MAX_SCHEDULE_TIMEOUT)
-- return timeout;
-- return (timeout - AMDGPU_FENCE_JIFFIES_TIMEOUT - r);
-- }
-- else if (adev->needs_reset) {
-- return -EDEADLK;
-- }
-+ return 0;
-
-- /* check if it's a lockup */
-- if (amdgpu_ring_is_lockup(ring)) {
-- uint64_t last_seq = atomic64_read(&ring->fence_drv.last_seq);
-- /* ring lookup */
-- dev_warn(adev->dev, "GPU lockup (waiting for "
-- "0x%016llx last fence id 0x%016llx on"
-- " ring %d)\n",
-- seq, last_seq, ring->idx);
-- wake_up_all(&ring->fence_drv.fence_queue);
-- return -EDEADLK;
-- }
-+ wait_event(ring->fence_drv.fence_queue, (
-+ (signaled = amdgpu_fence_seq_signaled(ring, seq))
-+ || adev->needs_reset));
-
-- if (timeout < MAX_SCHEDULE_TIMEOUT) {
-- timeout -= AMDGPU_FENCE_JIFFIES_TIMEOUT;
-- if (timeout < 1)
-- return 0;
-- }
-- }
-+ if (signaled)
-+ return 0;
-+ else
-+ return -EDEADLK;
- }
-
- /**
-@@ -452,16 +412,12 @@ static long amdgpu_fence_ring_wait_seq_timeout(struct amdgpu_ring *ring, uint64_
- */
- int amdgpu_fence_wait_next(struct amdgpu_ring *ring)
- {
-- long r;
--
- uint64_t seq = atomic64_read(&ring->fence_drv.last_seq) + 1ULL;
-+
- if (seq >= ring->fence_drv.sync_seq[ring->idx])
- return -ENOENT;
-- r = amdgpu_fence_ring_wait_seq_timeout(ring, seq, false, MAX_SCHEDULE_TIMEOUT);
-- if (r < 0)
-- return r;
-
-- return 0;
-+ return amdgpu_fence_ring_wait_seq(ring, seq);
- }
-
- /**
-@@ -476,22 +432,12 @@ int amdgpu_fence_wait_next(struct amdgpu_ring *ring)
- */
- int amdgpu_fence_wait_empty(struct amdgpu_ring *ring)
- {
-- long r;
--
- uint64_t seq = ring->fence_drv.sync_seq[ring->idx];
-+
- if (!seq)
- return 0;
-
-- r = amdgpu_fence_ring_wait_seq_timeout(ring, seq, false, MAX_SCHEDULE_TIMEOUT);
--
-- if (r < 0) {
-- if (r == -EDEADLK)
-- return -EDEADLK;
--
-- dev_err(ring->adev->dev, "error waiting for ring[%d] to become idle (%ld)\n",
-- ring->idx, r);
-- }
-- return 0;
-+ return amdgpu_fence_ring_wait_seq(ring, seq);
- }
-
- /**
---
-1.9.1
-