aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChunming Zhou <david1.zhou@amd.com>2015-06-01 02:35:03 -0400
committerAlex Deucher <alexander.deucher@amd.com>2015-06-05 11:02:06 -0400
commit890ee23fc60193d7c2bca17e099569f1510b3053 (patch)
treed62da1cfdac0561c2a536fe1c3d0abe7162b3360
parent9298e52f8b51d1e4acd68f502832f3a97f8cf892 (diff)
drm/amdgpu: disable user fence interrupt (v2)
amdgpu submits both kernel and user fences, but just need one interrupt, disable user fence interrupt and don't effect user fence. v2: fix merge error Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu.h7
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c4
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c4
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/cik_sdma.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c13
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c14
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c5
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c5
-rw-r--r--drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c4
-rw-r--r--drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c4
-rw-r--r--drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c4
13 files changed, 46 insertions, 26 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index c33c1af36fa2..37aeed7b454d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -317,7 +317,7 @@ struct amdgpu_ring_funcs {
317 void (*emit_ib)(struct amdgpu_ring *ring, 317 void (*emit_ib)(struct amdgpu_ring *ring,
318 struct amdgpu_ib *ib); 318 struct amdgpu_ib *ib);
319 void (*emit_fence)(struct amdgpu_ring *ring, uint64_t addr, 319 void (*emit_fence)(struct amdgpu_ring *ring, uint64_t addr,
320 uint64_t seq, bool write64bit); 320 uint64_t seq, unsigned flags);
321 bool (*emit_semaphore)(struct amdgpu_ring *ring, 321 bool (*emit_semaphore)(struct amdgpu_ring *ring,
322 struct amdgpu_semaphore *semaphore, 322 struct amdgpu_semaphore *semaphore,
323 bool emit_wait); 323 bool emit_wait);
@@ -392,6 +392,9 @@ struct amdgpu_fence_driver {
392#define AMDGPU_FENCE_OWNER_VM ((void*)1ul) 392#define AMDGPU_FENCE_OWNER_VM ((void*)1ul)
393#define AMDGPU_FENCE_OWNER_MOVE ((void*)2ul) 393#define AMDGPU_FENCE_OWNER_MOVE ((void*)2ul)
394 394
395#define AMDGPU_FENCE_FLAG_64BIT (1 << 0)
396#define AMDGPU_FENCE_FLAG_INT (1 << 1)
397
395struct amdgpu_fence { 398struct amdgpu_fence {
396 struct fence base; 399 struct fence base;
397 400
@@ -2142,7 +2145,7 @@ static inline void amdgpu_ring_write(struct amdgpu_ring *ring, uint32_t v)
2142#define amdgpu_ring_set_wptr(r) (r)->funcs->set_wptr((r)) 2145#define amdgpu_ring_set_wptr(r) (r)->funcs->set_wptr((r))
2143#define amdgpu_ring_emit_ib(r, ib) (r)->funcs->emit_ib((r), (ib)) 2146#define amdgpu_ring_emit_ib(r, ib) (r)->funcs->emit_ib((r), (ib))
2144#define amdgpu_ring_emit_vm_flush(r, vmid, addr) (r)->funcs->emit_vm_flush((r), (vmid), (addr)) 2147#define amdgpu_ring_emit_vm_flush(r, vmid, addr) (r)->funcs->emit_vm_flush((r), (vmid), (addr))
2145#define amdgpu_ring_emit_fence(r, addr, seq, write64bit) (r)->funcs->emit_fence((r), (addr), (seq), (write64bit)) 2148#define amdgpu_ring_emit_fence(r, addr, seq, flags) (r)->funcs->emit_fence((r), (addr), (seq), (flags))
2146#define amdgpu_ring_emit_semaphore(r, semaphore, emit_wait) (r)->funcs->emit_semaphore((r), (semaphore), (emit_wait)) 2149#define amdgpu_ring_emit_semaphore(r, semaphore, emit_wait) (r)->funcs->emit_semaphore((r), (semaphore), (emit_wait))
2147#define amdgpu_ring_emit_gds_switch(r, v, db, ds, wb, ws, ab, as) (r)->funcs->emit_gds_switch((r), (v), (db), (ds), (wb), (ws), (ab), (as)) 2150#define amdgpu_ring_emit_gds_switch(r, v, db, ds, wb, ws, ab, as) (r)->funcs->emit_gds_switch((r), (v), (db), (ds), (wb), (ws), (ab), (as))
2148#define amdgpu_ring_emit_hdp_flush(r) (r)->funcs->emit_hdp_flush((r)) 2151#define amdgpu_ring_emit_hdp_flush(r) (r)->funcs->emit_hdp_flush((r))
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
index 48ca637c5029..5c9918d01bf9 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
@@ -128,7 +128,9 @@ int amdgpu_fence_emit(struct amdgpu_ring *ring, void *owner,
128 fence_init(&(*fence)->base, &amdgpu_fence_ops, 128 fence_init(&(*fence)->base, &amdgpu_fence_ops,
129 &adev->fence_queue.lock, adev->fence_context + ring->idx, 129 &adev->fence_queue.lock, adev->fence_context + ring->idx,
130 (*fence)->seq); 130 (*fence)->seq);
131 amdgpu_ring_emit_fence(ring, ring->fence_drv.gpu_addr, (*fence)->seq, false); 131 amdgpu_ring_emit_fence(ring, ring->fence_drv.gpu_addr,
132 (*fence)->seq,
133 AMDGPU_FENCE_FLAG_INT);
132 trace_amdgpu_fence_emit(ring->adev->ddev, ring->idx, (*fence)->seq); 134 trace_amdgpu_fence_emit(ring->adev->ddev, ring->idx, (*fence)->seq);
133 return 0; 135 return 0;
134} 136}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
index 560c5fd347be..52dff75aac6f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
@@ -216,7 +216,8 @@ int amdgpu_ib_schedule(struct amdgpu_device *adev, unsigned num_ibs,
216 if (ib->user) { 216 if (ib->user) {
217 uint64_t addr = amdgpu_bo_gpu_offset(ib->user->bo); 217 uint64_t addr = amdgpu_bo_gpu_offset(ib->user->bo);
218 addr += ib->user->offset; 218 addr += ib->user->offset;
219 amdgpu_ring_emit_fence(ring, addr, ib->fence->seq, true); 219 amdgpu_ring_emit_fence(ring, addr, ib->fence->seq,
220 AMDGPU_FENCE_FLAG_64BIT);
220 } 221 }
221 222
222 if (ib->vm) 223 if (ib->vm)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
index 62018b37273e..1127a504f118 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
@@ -637,9 +637,9 @@ void amdgpu_vce_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib)
637 * 637 *
638 */ 638 */
639void amdgpu_vce_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, 639void amdgpu_vce_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq,
640 bool write64bits) 640 unsigned flags)
641{ 641{
642 WARN_ON(write64bits); 642 WARN_ON(flags & AMDGPU_FENCE_FLAG_64BIT);
643 643
644 amdgpu_ring_write(ring, VCE_CMD_FENCE); 644 amdgpu_ring_write(ring, VCE_CMD_FENCE);
645 amdgpu_ring_write(ring, addr); 645 amdgpu_ring_write(ring, addr);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h
index 4294854912e7..b6a9d0956c60 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h
@@ -40,7 +40,7 @@ bool amdgpu_vce_ring_emit_semaphore(struct amdgpu_ring *ring,
40 bool emit_wait); 40 bool emit_wait);
41void amdgpu_vce_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib); 41void amdgpu_vce_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib);
42void amdgpu_vce_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, 42void amdgpu_vce_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq,
43 bool write64bit); 43 unsigned flags);
44int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring); 44int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring);
45int amdgpu_vce_ring_test_ib(struct amdgpu_ring *ring); 45int amdgpu_vce_ring_test_ib(struct amdgpu_ring *ring);
46 46
diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
index ef5e9f9b5ab2..fb931638a7e6 100644
--- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
+++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
@@ -259,8 +259,9 @@ static void cik_sdma_ring_emit_hdp_flush(struct amdgpu_ring *ring)
259 * an interrupt if needed (CIK). 259 * an interrupt if needed (CIK).
260 */ 260 */
261static void cik_sdma_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, 261static void cik_sdma_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq,
262 bool write64bit) 262 unsigned flags)
263{ 263{
264 bool write64bit = flags & AMDGPU_FENCE_FLAG_64BIT;
264 /* write the fence */ 265 /* write the fence */
265 amdgpu_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_FENCE, 0, 0)); 266 amdgpu_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_FENCE, 0, 0));
266 amdgpu_ring_write(ring, lower_32_bits(addr)); 267 amdgpu_ring_write(ring, lower_32_bits(addr));
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
index 5fefe402e085..afa703c0efeb 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
@@ -2414,8 +2414,10 @@ static void gfx_v7_0_ring_emit_hdp_flush(struct amdgpu_ring *ring)
2414 * GPU caches. 2414 * GPU caches.
2415 */ 2415 */
2416static void gfx_v7_0_ring_emit_fence_gfx(struct amdgpu_ring *ring, u64 addr, 2416static void gfx_v7_0_ring_emit_fence_gfx(struct amdgpu_ring *ring, u64 addr,
2417 u64 seq, bool write64bit) 2417 u64 seq, unsigned flags)
2418{ 2418{
2419 bool write64bit = flags & AMDGPU_FENCE_FLAG_64BIT;
2420 bool int_sel = flags & AMDGPU_FENCE_FLAG_INT;
2419 /* Workaround for cache flush problems. First send a dummy EOP 2421 /* Workaround for cache flush problems. First send a dummy EOP
2420 * event down the pipe with seq one below. 2422 * event down the pipe with seq one below.
2421 */ 2423 */
@@ -2438,7 +2440,7 @@ static void gfx_v7_0_ring_emit_fence_gfx(struct amdgpu_ring *ring, u64 addr,
2438 EVENT_INDEX(5))); 2440 EVENT_INDEX(5)));
2439 amdgpu_ring_write(ring, addr & 0xfffffffc); 2441 amdgpu_ring_write(ring, addr & 0xfffffffc);
2440 amdgpu_ring_write(ring, (upper_32_bits(addr) & 0xffff) | 2442 amdgpu_ring_write(ring, (upper_32_bits(addr) & 0xffff) |
2441 DATA_SEL(write64bit ? 2 : 1) | INT_SEL(2)); 2443 DATA_SEL(write64bit ? 2 : 1) | INT_SEL(int_sel ? 2 : 0));
2442 amdgpu_ring_write(ring, lower_32_bits(seq)); 2444 amdgpu_ring_write(ring, lower_32_bits(seq));
2443 amdgpu_ring_write(ring, upper_32_bits(seq)); 2445 amdgpu_ring_write(ring, upper_32_bits(seq));
2444} 2446}
@@ -2454,15 +2456,18 @@ static void gfx_v7_0_ring_emit_fence_gfx(struct amdgpu_ring *ring, u64 addr,
2454 */ 2456 */
2455static void gfx_v7_0_ring_emit_fence_compute(struct amdgpu_ring *ring, 2457static void gfx_v7_0_ring_emit_fence_compute(struct amdgpu_ring *ring,
2456 u64 addr, u64 seq, 2458 u64 addr, u64 seq,
2457 bool write64bits) 2459 unsigned flags)
2458{ 2460{
2461 bool write64bit = flags & AMDGPU_FENCE_FLAG_64BIT;
2462 bool int_sel = flags & AMDGPU_FENCE_FLAG_INT;
2463
2459 /* RELEASE_MEM - flush caches, send int */ 2464 /* RELEASE_MEM - flush caches, send int */
2460 amdgpu_ring_write(ring, PACKET3(PACKET3_RELEASE_MEM, 5)); 2465 amdgpu_ring_write(ring, PACKET3(PACKET3_RELEASE_MEM, 5));
2461 amdgpu_ring_write(ring, (EOP_TCL1_ACTION_EN | 2466 amdgpu_ring_write(ring, (EOP_TCL1_ACTION_EN |
2462 EOP_TC_ACTION_EN | 2467 EOP_TC_ACTION_EN |
2463 EVENT_TYPE(CACHE_FLUSH_AND_INV_TS_EVENT) | 2468 EVENT_TYPE(CACHE_FLUSH_AND_INV_TS_EVENT) |
2464 EVENT_INDEX(5))); 2469 EVENT_INDEX(5)));
2465 amdgpu_ring_write(ring, DATA_SEL(write64bits ? 2 : 1) | INT_SEL(2)); 2470 amdgpu_ring_write(ring, DATA_SEL(write64bit ? 2 : 1) | INT_SEL(int_sel ? 2 : 0));
2466 amdgpu_ring_write(ring, addr & 0xfffffffc); 2471 amdgpu_ring_write(ring, addr & 0xfffffffc);
2467 amdgpu_ring_write(ring, upper_32_bits(addr)); 2472 amdgpu_ring_write(ring, upper_32_bits(addr));
2468 amdgpu_ring_write(ring, lower_32_bits(seq)); 2473 amdgpu_ring_write(ring, lower_32_bits(seq));
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index 04b91523008c..6ae2d6be126a 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -3713,8 +3713,11 @@ static void gfx_v8_0_ring_emit_ib(struct amdgpu_ring *ring,
3713} 3713}
3714 3714
3715static void gfx_v8_0_ring_emit_fence_gfx(struct amdgpu_ring *ring, u64 addr, 3715static void gfx_v8_0_ring_emit_fence_gfx(struct amdgpu_ring *ring, u64 addr,
3716 u64 seq, bool write64bit) 3716 u64 seq, unsigned flags)
3717{ 3717{
3718 bool write64bit = flags & AMDGPU_FENCE_FLAG_64BIT;
3719 bool int_sel = flags & AMDGPU_FENCE_FLAG_INT;
3720
3718 /* EVENT_WRITE_EOP - flush caches, send int */ 3721 /* EVENT_WRITE_EOP - flush caches, send int */
3719 amdgpu_ring_write(ring, PACKET3(PACKET3_EVENT_WRITE_EOP, 4)); 3722 amdgpu_ring_write(ring, PACKET3(PACKET3_EVENT_WRITE_EOP, 4));
3720 amdgpu_ring_write(ring, (EOP_TCL1_ACTION_EN | 3723 amdgpu_ring_write(ring, (EOP_TCL1_ACTION_EN |
@@ -3723,7 +3726,7 @@ static void gfx_v8_0_ring_emit_fence_gfx(struct amdgpu_ring *ring, u64 addr,
3723 EVENT_INDEX(5))); 3726 EVENT_INDEX(5)));
3724 amdgpu_ring_write(ring, addr & 0xfffffffc); 3727 amdgpu_ring_write(ring, addr & 0xfffffffc);
3725 amdgpu_ring_write(ring, (upper_32_bits(addr) & 0xffff) | 3728 amdgpu_ring_write(ring, (upper_32_bits(addr) & 0xffff) |
3726 DATA_SEL(write64bit ? 2 : 1) | INT_SEL(2)); 3729 DATA_SEL(write64bit ? 2 : 1) | INT_SEL(int_sel ? 2 : 0));
3727 amdgpu_ring_write(ring, lower_32_bits(seq)); 3730 amdgpu_ring_write(ring, lower_32_bits(seq));
3728 amdgpu_ring_write(ring, upper_32_bits(seq)); 3731 amdgpu_ring_write(ring, upper_32_bits(seq));
3729} 3732}
@@ -3880,15 +3883,18 @@ static void gfx_v8_0_ring_set_wptr_compute(struct amdgpu_ring *ring)
3880 3883
3881static void gfx_v8_0_ring_emit_fence_compute(struct amdgpu_ring *ring, 3884static void gfx_v8_0_ring_emit_fence_compute(struct amdgpu_ring *ring,
3882 u64 addr, u64 seq, 3885 u64 addr, u64 seq,
3883 bool write64bits) 3886 unsigned flags)
3884{ 3887{
3888 bool write64bit = flags & AMDGPU_FENCE_FLAG_64BIT;
3889 bool int_sel = flags & AMDGPU_FENCE_FLAG_INT;
3890
3885 /* RELEASE_MEM - flush caches, send int */ 3891 /* RELEASE_MEM - flush caches, send int */
3886 amdgpu_ring_write(ring, PACKET3(PACKET3_RELEASE_MEM, 5)); 3892 amdgpu_ring_write(ring, PACKET3(PACKET3_RELEASE_MEM, 5));
3887 amdgpu_ring_write(ring, (EOP_TCL1_ACTION_EN | 3893 amdgpu_ring_write(ring, (EOP_TCL1_ACTION_EN |
3888 EOP_TC_ACTION_EN | 3894 EOP_TC_ACTION_EN |
3889 EVENT_TYPE(CACHE_FLUSH_AND_INV_TS_EVENT) | 3895 EVENT_TYPE(CACHE_FLUSH_AND_INV_TS_EVENT) |
3890 EVENT_INDEX(5))); 3896 EVENT_INDEX(5)));
3891 amdgpu_ring_write(ring, DATA_SEL(write64bits ? 2 : 1) | INT_SEL(2)); 3897 amdgpu_ring_write(ring, DATA_SEL(write64bit ? 2 : 1) | INT_SEL(int_sel ? 2 : 0));
3892 amdgpu_ring_write(ring, addr & 0xfffffffc); 3898 amdgpu_ring_write(ring, addr & 0xfffffffc);
3893 amdgpu_ring_write(ring, upper_32_bits(addr)); 3899 amdgpu_ring_write(ring, upper_32_bits(addr));
3894 amdgpu_ring_write(ring, lower_32_bits(seq)); 3900 amdgpu_ring_write(ring, lower_32_bits(seq));
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
index d09aa7eeb40e..d7895885fe0c 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
@@ -292,8 +292,9 @@ static void sdma_v2_4_ring_emit_hdp_flush(struct amdgpu_ring *ring)
292 * an interrupt if needed (VI). 292 * an interrupt if needed (VI).
293 */ 293 */
294static void sdma_v2_4_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, 294static void sdma_v2_4_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq,
295 bool write64bits) 295 unsigned flags)
296{ 296{
297 bool write64bit = flags & AMDGPU_FENCE_FLAG_64BIT;
297 /* write the fence */ 298 /* write the fence */
298 amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_FENCE)); 299 amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_FENCE));
299 amdgpu_ring_write(ring, lower_32_bits(addr)); 300 amdgpu_ring_write(ring, lower_32_bits(addr));
@@ -301,7 +302,7 @@ static void sdma_v2_4_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se
301 amdgpu_ring_write(ring, lower_32_bits(seq)); 302 amdgpu_ring_write(ring, lower_32_bits(seq));
302 303
303 /* optionally write high bits as well */ 304 /* optionally write high bits as well */
304 if (write64bits) { 305 if (write64bit) {
305 addr += 4; 306 addr += 4;
306 amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_FENCE)); 307 amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_FENCE));
307 amdgpu_ring_write(ring, lower_32_bits(addr)); 308 amdgpu_ring_write(ring, lower_32_bits(addr));
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
index 555c0e1e4c97..e3c1fde75363 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
@@ -347,8 +347,9 @@ static void sdma_v3_0_ring_emit_hdp_flush(struct amdgpu_ring *ring)
347 * an interrupt if needed (VI). 347 * an interrupt if needed (VI).
348 */ 348 */
349static void sdma_v3_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, 349static void sdma_v3_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq,
350 bool write64bits) 350 unsigned flags)
351{ 351{
352 bool write64bit = flags & AMDGPU_FENCE_FLAG_64BIT;
352 /* write the fence */ 353 /* write the fence */
353 amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_FENCE)); 354 amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_FENCE));
354 amdgpu_ring_write(ring, lower_32_bits(addr)); 355 amdgpu_ring_write(ring, lower_32_bits(addr));
@@ -356,7 +357,7 @@ static void sdma_v3_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se
356 amdgpu_ring_write(ring, lower_32_bits(seq)); 357 amdgpu_ring_write(ring, lower_32_bits(seq));
357 358
358 /* optionally write high bits as well */ 359 /* optionally write high bits as well */
359 if (write64bits) { 360 if (write64bit) {
360 addr += 4; 361 addr += 4;
361 amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_FENCE)); 362 amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_FENCE));
362 amdgpu_ring_write(ring, lower_32_bits(addr)); 363 amdgpu_ring_write(ring, lower_32_bits(addr));
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c
index 292932a73c81..4efd671d7a9b 100644
--- a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c
+++ b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c
@@ -417,9 +417,9 @@ static void uvd_v4_2_stop(struct amdgpu_device *adev)
417 * Write a fence and a trap command to the ring. 417 * Write a fence and a trap command to the ring.
418 */ 418 */
419static void uvd_v4_2_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, 419static void uvd_v4_2_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq,
420 bool write64bit) 420 unsigned flags)
421{ 421{
422 WARN_ON(write64bit); 422 WARN_ON(flags & AMDGPU_FENCE_FLAG_64BIT);
423 423
424 amdgpu_ring_write(ring, PACKET0(mmUVD_CONTEXT_ID, 0)); 424 amdgpu_ring_write(ring, PACKET0(mmUVD_CONTEXT_ID, 0));
425 amdgpu_ring_write(ring, seq); 425 amdgpu_ring_write(ring, seq);
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c
index 004c56496fc4..b756bd99c0fd 100644
--- a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c
@@ -461,9 +461,9 @@ static void uvd_v5_0_stop(struct amdgpu_device *adev)
461 * Write a fence and a trap command to the ring. 461 * Write a fence and a trap command to the ring.
462 */ 462 */
463static void uvd_v5_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, 463static void uvd_v5_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq,
464 bool write64bit) 464 unsigned flags)
465{ 465{
466 WARN_ON(write64bit); 466 WARN_ON(flags & AMDGPU_FENCE_FLAG_64BIT);
467 467
468 amdgpu_ring_write(ring, PACKET0(mmUVD_CONTEXT_ID, 0)); 468 amdgpu_ring_write(ring, PACKET0(mmUVD_CONTEXT_ID, 0));
469 amdgpu_ring_write(ring, seq); 469 amdgpu_ring_write(ring, seq);
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
index 8c790fb31e2f..49aa931b2cb4 100644
--- a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
@@ -457,9 +457,9 @@ static void uvd_v6_0_stop(struct amdgpu_device *adev)
457 * Write a fence and a trap command to the ring. 457 * Write a fence and a trap command to the ring.
458 */ 458 */
459static void uvd_v6_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, 459static void uvd_v6_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq,
460 bool write64bit) 460 unsigned flags)
461{ 461{
462 WARN_ON(write64bit); 462 WARN_ON(flags & AMDGPU_FENCE_FLAG_64BIT);
463 463
464 amdgpu_ring_write(ring, PACKET0(mmUVD_CONTEXT_ID, 0)); 464 amdgpu_ring_write(ring, PACKET0(mmUVD_CONTEXT_ID, 0));
465 amdgpu_ring_write(ring, seq); 465 amdgpu_ring_write(ring, seq);