diff options
author | Chunming Zhou <david1.zhou@amd.com> | 2015-06-01 02:35:03 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-06-05 11:02:06 -0400 |
commit | 890ee23fc60193d7c2bca17e099569f1510b3053 (patch) | |
tree | d62da1cfdac0561c2a536fe1c3d0abe7162b3360 | |
parent | 9298e52f8b51d1e4acd68f502832f3a97f8cf892 (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.h | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 14 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | 4 |
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 | |||
395 | struct amdgpu_fence { | 398 | struct 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 | */ |
639 | void amdgpu_vce_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, | 639 | void 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); |
41 | void amdgpu_vce_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib); | 41 | void amdgpu_vce_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib); |
42 | void amdgpu_vce_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, | 42 | void amdgpu_vce_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, |
43 | bool write64bit); | 43 | unsigned flags); |
44 | int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring); | 44 | int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring); |
45 | int amdgpu_vce_ring_test_ib(struct amdgpu_ring *ring); | 45 | int 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 | */ |
261 | static void cik_sdma_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, | 261 | static 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 | */ |
2416 | static void gfx_v7_0_ring_emit_fence_gfx(struct amdgpu_ring *ring, u64 addr, | 2416 | static 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 | */ |
2455 | static void gfx_v7_0_ring_emit_fence_compute(struct amdgpu_ring *ring, | 2457 | static 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 | ||
3715 | static void gfx_v8_0_ring_emit_fence_gfx(struct amdgpu_ring *ring, u64 addr, | 3715 | static 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 | ||
3881 | static void gfx_v8_0_ring_emit_fence_compute(struct amdgpu_ring *ring, | 3884 | static 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 | */ |
294 | static void sdma_v2_4_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, | 294 | static 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 | */ |
349 | static void sdma_v3_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, | 349 | static 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 | */ |
419 | static void uvd_v4_2_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, | 419 | static 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 | */ |
463 | static void uvd_v5_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, | 463 | static 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 | */ |
459 | static void uvd_v6_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq, | 459 | static 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); |