aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0408-drm-amdgpu-use-sched-fence-if-possible.patch
blob: 5a9abfec7ac9806b5733c7df25b188717bedd9b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
From 2389be2b66ea81b9af93ba6c1b3652045c27b42e Mon Sep 17 00:00:00 2001
From: Monk Liu <Monk.Liu@amd.com>
Date: Thu, 17 Mar 2016 13:57:09 +0800
Subject: [PATCH 0408/1110] drm/amdgpu: use sched fence if possible

when preemption feature lands, the SA bo should rely on sched
fence, because hw fence will be invalid after its job preempted
or skipped.

Signed-off-by: Monk Liu <Monk.Liu@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Kalyan Alle <kalyan.alle@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
index ddf1ed6..8a2d54a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
@@ -70,9 +70,12 @@ int amdgpu_job_alloc_with_ib(struct amdgpu_device *adev, unsigned size,
 void amdgpu_job_free(struct amdgpu_job *job)
 {
        unsigned i;
+       struct fence *f;
+       /* use sched fence if available */
+       f = (job->base.s_fence)? &job->base.s_fence->base : job->fence;
 
        for (i = 0; i < job->num_ibs; ++i)
-               amdgpu_sa_bo_free(job->adev, &job->ibs[i].sa_bo, job->fence);
+               amdgpu_sa_bo_free(job->adev, &job->ibs[i].sa_bo, f);
        fence_put(job->fence);
 
        amdgpu_bo_unref(&job->uf.bo);
-- 
2.7.4