diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 10 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 39 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 26 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 19 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 14 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 10 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 11 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/si_dma.c | 19 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c | 30 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c | 30 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | 35 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c | 37 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 18 |
17 files changed, 18 insertions, 302 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 8367f92de09a..b7c60bb4457d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h | |||
@@ -1797,7 +1797,6 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring) | |||
1797 | #define amdgpu_ring_emit_fence(r, addr, seq, flags) (r)->funcs->emit_fence((r), (addr), (seq), (flags)) | 1797 | #define amdgpu_ring_emit_fence(r, addr, seq, flags) (r)->funcs->emit_fence((r), (addr), (seq), (flags)) |
1798 | #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)) | 1798 | #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)) |
1799 | #define amdgpu_ring_emit_hdp_flush(r) (r)->funcs->emit_hdp_flush((r)) | 1799 | #define amdgpu_ring_emit_hdp_flush(r) (r)->funcs->emit_hdp_flush((r)) |
1800 | #define amdgpu_ring_emit_hdp_invalidate(r) (r)->funcs->emit_hdp_invalidate((r)) | ||
1801 | #define amdgpu_ring_emit_switch_buffer(r) (r)->funcs->emit_switch_buffer((r)) | 1800 | #define amdgpu_ring_emit_switch_buffer(r) (r)->funcs->emit_switch_buffer((r)) |
1802 | #define amdgpu_ring_emit_cntxcntl(r, d) (r)->funcs->emit_cntxcntl((r), (d)) | 1801 | #define amdgpu_ring_emit_cntxcntl(r, d) (r)->funcs->emit_cntxcntl((r), (d)) |
1803 | #define amdgpu_ring_emit_rreg(r, d) (r)->funcs->emit_rreg((r), (d)) | 1802 | #define amdgpu_ring_emit_rreg(r, d) (r)->funcs->emit_rreg((r), (d)) |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c index e87c9952c901..8ea342dc6376 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | |||
@@ -225,12 +225,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs, | |||
225 | #ifdef CONFIG_X86_64 | 225 | #ifdef CONFIG_X86_64 |
226 | if (!(adev->flags & AMD_IS_APU)) | 226 | if (!(adev->flags & AMD_IS_APU)) |
227 | #endif | 227 | #endif |
228 | { | 228 | amdgpu_asic_invalidate_hdp(adev, ring); |
229 | if (ring->funcs->emit_hdp_invalidate) | ||
230 | amdgpu_ring_emit_hdp_invalidate(ring); | ||
231 | else | ||
232 | amdgpu_asic_invalidate_hdp(adev, ring); | ||
233 | } | ||
234 | 229 | ||
235 | r = amdgpu_fence_emit(ring, f); | 230 | r = amdgpu_fence_emit(ring, f); |
236 | if (r) { | 231 | if (r) { |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h index 12b9a06f4d21..70d05ec7bc07 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h | |||
@@ -128,7 +128,6 @@ struct amdgpu_ring_funcs { | |||
128 | void (*emit_vm_flush)(struct amdgpu_ring *ring, unsigned vmid, | 128 | void (*emit_vm_flush)(struct amdgpu_ring *ring, unsigned vmid, |
129 | unsigned pasid, uint64_t pd_addr); | 129 | unsigned pasid, uint64_t pd_addr); |
130 | void (*emit_hdp_flush)(struct amdgpu_ring *ring); | 130 | void (*emit_hdp_flush)(struct amdgpu_ring *ring); |
131 | void (*emit_hdp_invalidate)(struct amdgpu_ring *ring); | ||
132 | void (*emit_gds_switch)(struct amdgpu_ring *ring, uint32_t vmid, | 131 | void (*emit_gds_switch)(struct amdgpu_ring *ring, uint32_t vmid, |
133 | uint32_t gds_base, uint32_t gds_size, | 132 | uint32_t gds_base, uint32_t gds_size, |
134 | uint32_t gws_base, uint32_t gws_size, | 133 | uint32_t gws_base, uint32_t gws_size, |
diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c index 1d32dedb2534..5d18512cd090 100644 --- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c +++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c | |||
@@ -261,13 +261,6 @@ static void cik_sdma_ring_emit_hdp_flush(struct amdgpu_ring *ring) | |||
261 | amdgpu_ring_write(ring, (0xfff << 16) | 10); /* retry count, poll interval */ | 261 | amdgpu_ring_write(ring, (0xfff << 16) | 10); /* retry count, poll interval */ |
262 | } | 262 | } |
263 | 263 | ||
264 | static void cik_sdma_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
265 | { | ||
266 | amdgpu_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_SRBM_WRITE, 0, 0xf000)); | ||
267 | amdgpu_ring_write(ring, mmHDP_DEBUG0); | ||
268 | amdgpu_ring_write(ring, 1); | ||
269 | } | ||
270 | |||
271 | /** | 264 | /** |
272 | * cik_sdma_ring_emit_fence - emit a fence on the DMA ring | 265 | * cik_sdma_ring_emit_fence - emit a fence on the DMA ring |
273 | * | 266 | * |
@@ -1277,7 +1270,7 @@ static const struct amdgpu_ring_funcs cik_sdma_ring_funcs = { | |||
1277 | .set_wptr = cik_sdma_ring_set_wptr, | 1270 | .set_wptr = cik_sdma_ring_set_wptr, |
1278 | .emit_frame_size = | 1271 | .emit_frame_size = |
1279 | 6 + /* cik_sdma_ring_emit_hdp_flush */ | 1272 | 6 + /* cik_sdma_ring_emit_hdp_flush */ |
1280 | 3 + /* cik_sdma_ring_emit_hdp_invalidate */ | 1273 | 3 + /* hdp invalidate */ |
1281 | 6 + /* cik_sdma_ring_emit_pipeline_sync */ | 1274 | 6 + /* cik_sdma_ring_emit_pipeline_sync */ |
1282 | CIK_FLUSH_GPU_TLB_NUM_WREG * 3 + 6 + /* cik_sdma_ring_emit_vm_flush */ | 1275 | CIK_FLUSH_GPU_TLB_NUM_WREG * 3 + 6 + /* cik_sdma_ring_emit_vm_flush */ |
1283 | 9 + 9 + 9, /* cik_sdma_ring_emit_fence x3 for user fence, vm fence */ | 1276 | 9 + 9 + 9, /* cik_sdma_ring_emit_fence x3 for user fence, vm fence */ |
@@ -1287,7 +1280,6 @@ static const struct amdgpu_ring_funcs cik_sdma_ring_funcs = { | |||
1287 | .emit_pipeline_sync = cik_sdma_ring_emit_pipeline_sync, | 1280 | .emit_pipeline_sync = cik_sdma_ring_emit_pipeline_sync, |
1288 | .emit_vm_flush = cik_sdma_ring_emit_vm_flush, | 1281 | .emit_vm_flush = cik_sdma_ring_emit_vm_flush, |
1289 | .emit_hdp_flush = cik_sdma_ring_emit_hdp_flush, | 1282 | .emit_hdp_flush = cik_sdma_ring_emit_hdp_flush, |
1290 | .emit_hdp_invalidate = cik_sdma_ring_emit_hdp_invalidate, | ||
1291 | .test_ring = cik_sdma_ring_test_ring, | 1283 | .test_ring = cik_sdma_ring_test_ring, |
1292 | .test_ib = cik_sdma_ring_test_ib, | 1284 | .test_ib = cik_sdma_ring_test_ib, |
1293 | .insert_nop = cik_sdma_ring_insert_nop, | 1285 | .insert_nop = cik_sdma_ring_insert_nop, |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c index e6c3a2465ba4..3517fd9e11c9 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | |||
@@ -1809,17 +1809,6 @@ static int gfx_v6_0_ring_test_ring(struct amdgpu_ring *ring) | |||
1809 | return r; | 1809 | return r; |
1810 | } | 1810 | } |
1811 | 1811 | ||
1812 | static void gfx_v6_0_ring_emit_hdp_flush(struct amdgpu_ring *ring) | ||
1813 | { | ||
1814 | /* flush hdp cache */ | ||
1815 | amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3)); | ||
1816 | amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(1) | | ||
1817 | WRITE_DATA_DST_SEL(0))); | ||
1818 | amdgpu_ring_write(ring, mmHDP_MEM_COHERENCY_FLUSH_CNTL); | ||
1819 | amdgpu_ring_write(ring, 0); | ||
1820 | amdgpu_ring_write(ring, 0x1); | ||
1821 | } | ||
1822 | |||
1823 | static void gfx_v6_0_ring_emit_vgt_flush(struct amdgpu_ring *ring) | 1812 | static void gfx_v6_0_ring_emit_vgt_flush(struct amdgpu_ring *ring) |
1824 | { | 1813 | { |
1825 | amdgpu_ring_write(ring, PACKET3(PACKET3_EVENT_WRITE, 0)); | 1814 | amdgpu_ring_write(ring, PACKET3(PACKET3_EVENT_WRITE, 0)); |
@@ -1827,24 +1816,6 @@ static void gfx_v6_0_ring_emit_vgt_flush(struct amdgpu_ring *ring) | |||
1827 | EVENT_INDEX(0)); | 1816 | EVENT_INDEX(0)); |
1828 | } | 1817 | } |
1829 | 1818 | ||
1830 | /** | ||
1831 | * gfx_v6_0_ring_emit_hdp_invalidate - emit an hdp invalidate on the cp | ||
1832 | * | ||
1833 | * @adev: amdgpu_device pointer | ||
1834 | * @ridx: amdgpu ring index | ||
1835 | * | ||
1836 | * Emits an hdp invalidate on the cp. | ||
1837 | */ | ||
1838 | static void gfx_v6_0_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
1839 | { | ||
1840 | amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3)); | ||
1841 | amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(1) | | ||
1842 | WRITE_DATA_DST_SEL(0))); | ||
1843 | amdgpu_ring_write(ring, mmHDP_DEBUG0); | ||
1844 | amdgpu_ring_write(ring, 0); | ||
1845 | amdgpu_ring_write(ring, 0x1); | ||
1846 | } | ||
1847 | |||
1848 | static void gfx_v6_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, | 1819 | static void gfx_v6_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, |
1849 | u64 seq, unsigned flags) | 1820 | u64 seq, unsigned flags) |
1850 | { | 1821 | { |
@@ -3507,8 +3478,7 @@ static const struct amdgpu_ring_funcs gfx_v6_0_ring_funcs_gfx = { | |||
3507 | .get_wptr = gfx_v6_0_ring_get_wptr, | 3478 | .get_wptr = gfx_v6_0_ring_get_wptr, |
3508 | .set_wptr = gfx_v6_0_ring_set_wptr_gfx, | 3479 | .set_wptr = gfx_v6_0_ring_set_wptr_gfx, |
3509 | .emit_frame_size = | 3480 | .emit_frame_size = |
3510 | 5 + /* gfx_v6_0_ring_emit_hdp_flush */ | 3481 | 5 + 5 + /* hdp flush / invalidate */ |
3511 | 5 + /* gfx_v6_0_ring_emit_hdp_invalidate */ | ||
3512 | 14 + 14 + 14 + /* gfx_v6_0_ring_emit_fence x3 for user fence, vm fence */ | 3482 | 14 + 14 + 14 + /* gfx_v6_0_ring_emit_fence x3 for user fence, vm fence */ |
3513 | 7 + 4 + /* gfx_v6_0_ring_emit_pipeline_sync */ | 3483 | 7 + 4 + /* gfx_v6_0_ring_emit_pipeline_sync */ |
3514 | SI_FLUSH_GPU_TLB_NUM_WREG * 5 + 7 + 6 + /* gfx_v6_0_ring_emit_vm_flush */ | 3484 | SI_FLUSH_GPU_TLB_NUM_WREG * 5 + 7 + 6 + /* gfx_v6_0_ring_emit_vm_flush */ |
@@ -3518,8 +3488,6 @@ static const struct amdgpu_ring_funcs gfx_v6_0_ring_funcs_gfx = { | |||
3518 | .emit_fence = gfx_v6_0_ring_emit_fence, | 3488 | .emit_fence = gfx_v6_0_ring_emit_fence, |
3519 | .emit_pipeline_sync = gfx_v6_0_ring_emit_pipeline_sync, | 3489 | .emit_pipeline_sync = gfx_v6_0_ring_emit_pipeline_sync, |
3520 | .emit_vm_flush = gfx_v6_0_ring_emit_vm_flush, | 3490 | .emit_vm_flush = gfx_v6_0_ring_emit_vm_flush, |
3521 | .emit_hdp_flush = gfx_v6_0_ring_emit_hdp_flush, | ||
3522 | .emit_hdp_invalidate = gfx_v6_0_ring_emit_hdp_invalidate, | ||
3523 | .test_ring = gfx_v6_0_ring_test_ring, | 3491 | .test_ring = gfx_v6_0_ring_test_ring, |
3524 | .test_ib = gfx_v6_0_ring_test_ib, | 3492 | .test_ib = gfx_v6_0_ring_test_ib, |
3525 | .insert_nop = amdgpu_ring_insert_nop, | 3493 | .insert_nop = amdgpu_ring_insert_nop, |
@@ -3535,8 +3503,7 @@ static const struct amdgpu_ring_funcs gfx_v6_0_ring_funcs_compute = { | |||
3535 | .get_wptr = gfx_v6_0_ring_get_wptr, | 3503 | .get_wptr = gfx_v6_0_ring_get_wptr, |
3536 | .set_wptr = gfx_v6_0_ring_set_wptr_compute, | 3504 | .set_wptr = gfx_v6_0_ring_set_wptr_compute, |
3537 | .emit_frame_size = | 3505 | .emit_frame_size = |
3538 | 5 + /* gfx_v6_0_ring_emit_hdp_flush */ | 3506 | 5 + 5 + /* hdp flush / invalidate */ |
3539 | 5 + /* gfx_v6_0_ring_emit_hdp_invalidate */ | ||
3540 | 7 + /* gfx_v6_0_ring_emit_pipeline_sync */ | 3507 | 7 + /* gfx_v6_0_ring_emit_pipeline_sync */ |
3541 | SI_FLUSH_GPU_TLB_NUM_WREG * 5 + 7 + /* gfx_v6_0_ring_emit_vm_flush */ | 3508 | SI_FLUSH_GPU_TLB_NUM_WREG * 5 + 7 + /* gfx_v6_0_ring_emit_vm_flush */ |
3542 | 14 + 14 + 14, /* gfx_v6_0_ring_emit_fence x3 for user fence, vm fence */ | 3509 | 14 + 14 + 14, /* gfx_v6_0_ring_emit_fence x3 for user fence, vm fence */ |
@@ -3545,8 +3512,6 @@ static const struct amdgpu_ring_funcs gfx_v6_0_ring_funcs_compute = { | |||
3545 | .emit_fence = gfx_v6_0_ring_emit_fence, | 3512 | .emit_fence = gfx_v6_0_ring_emit_fence, |
3546 | .emit_pipeline_sync = gfx_v6_0_ring_emit_pipeline_sync, | 3513 | .emit_pipeline_sync = gfx_v6_0_ring_emit_pipeline_sync, |
3547 | .emit_vm_flush = gfx_v6_0_ring_emit_vm_flush, | 3514 | .emit_vm_flush = gfx_v6_0_ring_emit_vm_flush, |
3548 | .emit_hdp_flush = gfx_v6_0_ring_emit_hdp_flush, | ||
3549 | .emit_hdp_invalidate = gfx_v6_0_ring_emit_hdp_invalidate, | ||
3550 | .test_ring = gfx_v6_0_ring_test_ring, | 3515 | .test_ring = gfx_v6_0_ring_test_ring, |
3551 | .test_ib = gfx_v6_0_ring_test_ib, | 3516 | .test_ib = gfx_v6_0_ring_test_ib, |
3552 | .insert_nop = amdgpu_ring_insert_nop, | 3517 | .insert_nop = amdgpu_ring_insert_nop, |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c index 3c2b678436f2..764e068fc2dd 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | |||
@@ -2147,26 +2147,6 @@ static void gfx_v7_0_ring_emit_vgt_flush(struct amdgpu_ring *ring) | |||
2147 | EVENT_INDEX(0)); | 2147 | EVENT_INDEX(0)); |
2148 | } | 2148 | } |
2149 | 2149 | ||
2150 | |||
2151 | /** | ||
2152 | * gfx_v7_0_ring_emit_hdp_invalidate - emit an hdp invalidate on the cp | ||
2153 | * | ||
2154 | * @adev: amdgpu_device pointer | ||
2155 | * @ridx: amdgpu ring index | ||
2156 | * | ||
2157 | * Emits an hdp invalidate on the cp. | ||
2158 | */ | ||
2159 | static void gfx_v7_0_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
2160 | { | ||
2161 | amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3)); | ||
2162 | amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) | | ||
2163 | WRITE_DATA_DST_SEL(0) | | ||
2164 | WR_CONFIRM)); | ||
2165 | amdgpu_ring_write(ring, mmHDP_DEBUG0); | ||
2166 | amdgpu_ring_write(ring, 0); | ||
2167 | amdgpu_ring_write(ring, 1); | ||
2168 | } | ||
2169 | |||
2170 | /** | 2150 | /** |
2171 | * gfx_v7_0_ring_emit_fence_gfx - emit a fence on the gfx ring | 2151 | * gfx_v7_0_ring_emit_fence_gfx - emit a fence on the gfx ring |
2172 | * | 2152 | * |
@@ -5110,7 +5090,7 @@ static const struct amdgpu_ring_funcs gfx_v7_0_ring_funcs_gfx = { | |||
5110 | .emit_frame_size = | 5090 | .emit_frame_size = |
5111 | 20 + /* gfx_v7_0_ring_emit_gds_switch */ | 5091 | 20 + /* gfx_v7_0_ring_emit_gds_switch */ |
5112 | 7 + /* gfx_v7_0_ring_emit_hdp_flush */ | 5092 | 7 + /* gfx_v7_0_ring_emit_hdp_flush */ |
5113 | 5 + /* gfx_v7_0_ring_emit_hdp_invalidate */ | 5093 | 5 + /* hdp invalidate */ |
5114 | 12 + 12 + 12 + /* gfx_v7_0_ring_emit_fence_gfx x3 for user fence, vm fence */ | 5094 | 12 + 12 + 12 + /* gfx_v7_0_ring_emit_fence_gfx x3 for user fence, vm fence */ |
5115 | 7 + 4 + /* gfx_v7_0_ring_emit_pipeline_sync */ | 5095 | 7 + 4 + /* gfx_v7_0_ring_emit_pipeline_sync */ |
5116 | CIK_FLUSH_GPU_TLB_NUM_WREG * 5 + 7 + 6 + /* gfx_v7_0_ring_emit_vm_flush */ | 5096 | CIK_FLUSH_GPU_TLB_NUM_WREG * 5 + 7 + 6 + /* gfx_v7_0_ring_emit_vm_flush */ |
@@ -5122,7 +5102,6 @@ static const struct amdgpu_ring_funcs gfx_v7_0_ring_funcs_gfx = { | |||
5122 | .emit_vm_flush = gfx_v7_0_ring_emit_vm_flush, | 5102 | .emit_vm_flush = gfx_v7_0_ring_emit_vm_flush, |
5123 | .emit_gds_switch = gfx_v7_0_ring_emit_gds_switch, | 5103 | .emit_gds_switch = gfx_v7_0_ring_emit_gds_switch, |
5124 | .emit_hdp_flush = gfx_v7_0_ring_emit_hdp_flush, | 5104 | .emit_hdp_flush = gfx_v7_0_ring_emit_hdp_flush, |
5125 | .emit_hdp_invalidate = gfx_v7_0_ring_emit_hdp_invalidate, | ||
5126 | .test_ring = gfx_v7_0_ring_test_ring, | 5105 | .test_ring = gfx_v7_0_ring_test_ring, |
5127 | .test_ib = gfx_v7_0_ring_test_ib, | 5106 | .test_ib = gfx_v7_0_ring_test_ib, |
5128 | .insert_nop = amdgpu_ring_insert_nop, | 5107 | .insert_nop = amdgpu_ring_insert_nop, |
@@ -5142,7 +5121,7 @@ static const struct amdgpu_ring_funcs gfx_v7_0_ring_funcs_compute = { | |||
5142 | .emit_frame_size = | 5121 | .emit_frame_size = |
5143 | 20 + /* gfx_v7_0_ring_emit_gds_switch */ | 5122 | 20 + /* gfx_v7_0_ring_emit_gds_switch */ |
5144 | 7 + /* gfx_v7_0_ring_emit_hdp_flush */ | 5123 | 7 + /* gfx_v7_0_ring_emit_hdp_flush */ |
5145 | 5 + /* gfx_v7_0_ring_emit_hdp_invalidate */ | 5124 | 5 + /* hdp invalidate */ |
5146 | 7 + /* gfx_v7_0_ring_emit_pipeline_sync */ | 5125 | 7 + /* gfx_v7_0_ring_emit_pipeline_sync */ |
5147 | CIK_FLUSH_GPU_TLB_NUM_WREG * 5 + 7 + /* gfx_v7_0_ring_emit_vm_flush */ | 5126 | CIK_FLUSH_GPU_TLB_NUM_WREG * 5 + 7 + /* gfx_v7_0_ring_emit_vm_flush */ |
5148 | 7 + 7 + 7, /* gfx_v7_0_ring_emit_fence_compute x3 for user fence, vm fence */ | 5127 | 7 + 7 + 7, /* gfx_v7_0_ring_emit_fence_compute x3 for user fence, vm fence */ |
@@ -5153,7 +5132,6 @@ static const struct amdgpu_ring_funcs gfx_v7_0_ring_funcs_compute = { | |||
5153 | .emit_vm_flush = gfx_v7_0_ring_emit_vm_flush, | 5132 | .emit_vm_flush = gfx_v7_0_ring_emit_vm_flush, |
5154 | .emit_gds_switch = gfx_v7_0_ring_emit_gds_switch, | 5133 | .emit_gds_switch = gfx_v7_0_ring_emit_gds_switch, |
5155 | .emit_hdp_flush = gfx_v7_0_ring_emit_hdp_flush, | 5134 | .emit_hdp_flush = gfx_v7_0_ring_emit_hdp_flush, |
5156 | .emit_hdp_invalidate = gfx_v7_0_ring_emit_hdp_invalidate, | ||
5157 | .test_ring = gfx_v7_0_ring_test_ring, | 5135 | .test_ring = gfx_v7_0_ring_test_ring, |
5158 | .test_ib = gfx_v7_0_ring_test_ib, | 5136 | .test_ib = gfx_v7_0_ring_test_ib, |
5159 | .insert_nop = amdgpu_ring_insert_nop, | 5137 | .insert_nop = amdgpu_ring_insert_nop, |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index e4d209b5c879..5a2e4d5a5bd1 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | |||
@@ -6230,19 +6230,6 @@ static void gfx_v8_0_ring_emit_vgt_flush(struct amdgpu_ring *ring) | |||
6230 | EVENT_INDEX(0)); | 6230 | EVENT_INDEX(0)); |
6231 | } | 6231 | } |
6232 | 6232 | ||
6233 | |||
6234 | static void gfx_v8_0_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
6235 | { | ||
6236 | amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3)); | ||
6237 | amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) | | ||
6238 | WRITE_DATA_DST_SEL(0) | | ||
6239 | WR_CONFIRM)); | ||
6240 | amdgpu_ring_write(ring, mmHDP_DEBUG0); | ||
6241 | amdgpu_ring_write(ring, 0); | ||
6242 | amdgpu_ring_write(ring, 1); | ||
6243 | |||
6244 | } | ||
6245 | |||
6246 | static void gfx_v8_0_ring_emit_ib_gfx(struct amdgpu_ring *ring, | 6233 | static void gfx_v8_0_ring_emit_ib_gfx(struct amdgpu_ring *ring, |
6247 | struct amdgpu_ib *ib, | 6234 | struct amdgpu_ib *ib, |
6248 | unsigned vmid, bool ctx_switch) | 6235 | unsigned vmid, bool ctx_switch) |
@@ -6887,7 +6874,6 @@ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_gfx = { | |||
6887 | .emit_vm_flush = gfx_v8_0_ring_emit_vm_flush, | 6874 | .emit_vm_flush = gfx_v8_0_ring_emit_vm_flush, |
6888 | .emit_gds_switch = gfx_v8_0_ring_emit_gds_switch, | 6875 | .emit_gds_switch = gfx_v8_0_ring_emit_gds_switch, |
6889 | .emit_hdp_flush = gfx_v8_0_ring_emit_hdp_flush, | 6876 | .emit_hdp_flush = gfx_v8_0_ring_emit_hdp_flush, |
6890 | .emit_hdp_invalidate = gfx_v8_0_ring_emit_hdp_invalidate, | ||
6891 | .test_ring = gfx_v8_0_ring_test_ring, | 6877 | .test_ring = gfx_v8_0_ring_test_ring, |
6892 | .test_ib = gfx_v8_0_ring_test_ib, | 6878 | .test_ib = gfx_v8_0_ring_test_ib, |
6893 | .insert_nop = amdgpu_ring_insert_nop, | 6879 | .insert_nop = amdgpu_ring_insert_nop, |
@@ -6910,7 +6896,7 @@ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_compute = { | |||
6910 | .emit_frame_size = | 6896 | .emit_frame_size = |
6911 | 20 + /* gfx_v8_0_ring_emit_gds_switch */ | 6897 | 20 + /* gfx_v8_0_ring_emit_gds_switch */ |
6912 | 7 + /* gfx_v8_0_ring_emit_hdp_flush */ | 6898 | 7 + /* gfx_v8_0_ring_emit_hdp_flush */ |
6913 | 5 + /* gfx_v8_0_ring_emit_hdp_invalidate */ | 6899 | 5 + /* hdp_invalidate */ |
6914 | 7 + /* gfx_v8_0_ring_emit_pipeline_sync */ | 6900 | 7 + /* gfx_v8_0_ring_emit_pipeline_sync */ |
6915 | VI_FLUSH_GPU_TLB_NUM_WREG * 5 + 7 + /* gfx_v8_0_ring_emit_vm_flush */ | 6901 | VI_FLUSH_GPU_TLB_NUM_WREG * 5 + 7 + /* gfx_v8_0_ring_emit_vm_flush */ |
6916 | 7 + 7 + 7, /* gfx_v8_0_ring_emit_fence_compute x3 for user fence, vm fence */ | 6902 | 7 + 7 + 7, /* gfx_v8_0_ring_emit_fence_compute x3 for user fence, vm fence */ |
@@ -6921,7 +6907,6 @@ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_compute = { | |||
6921 | .emit_vm_flush = gfx_v8_0_ring_emit_vm_flush, | 6907 | .emit_vm_flush = gfx_v8_0_ring_emit_vm_flush, |
6922 | .emit_gds_switch = gfx_v8_0_ring_emit_gds_switch, | 6908 | .emit_gds_switch = gfx_v8_0_ring_emit_gds_switch, |
6923 | .emit_hdp_flush = gfx_v8_0_ring_emit_hdp_flush, | 6909 | .emit_hdp_flush = gfx_v8_0_ring_emit_hdp_flush, |
6924 | .emit_hdp_invalidate = gfx_v8_0_ring_emit_hdp_invalidate, | ||
6925 | .test_ring = gfx_v8_0_ring_test_ring, | 6910 | .test_ring = gfx_v8_0_ring_test_ring, |
6926 | .test_ib = gfx_v8_0_ring_test_ib, | 6911 | .test_ib = gfx_v8_0_ring_test_ib, |
6927 | .insert_nop = amdgpu_ring_insert_nop, | 6912 | .insert_nop = amdgpu_ring_insert_nop, |
@@ -6941,7 +6926,7 @@ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_kiq = { | |||
6941 | .emit_frame_size = | 6926 | .emit_frame_size = |
6942 | 20 + /* gfx_v8_0_ring_emit_gds_switch */ | 6927 | 20 + /* gfx_v8_0_ring_emit_gds_switch */ |
6943 | 7 + /* gfx_v8_0_ring_emit_hdp_flush */ | 6928 | 7 + /* gfx_v8_0_ring_emit_hdp_flush */ |
6944 | 5 + /* gfx_v8_0_ring_emit_hdp_invalidate */ | 6929 | 5 + /* hdp_invalidate */ |
6945 | 7 + /* gfx_v8_0_ring_emit_pipeline_sync */ | 6930 | 7 + /* gfx_v8_0_ring_emit_pipeline_sync */ |
6946 | 17 + /* gfx_v8_0_ring_emit_vm_flush */ | 6931 | 17 + /* gfx_v8_0_ring_emit_vm_flush */ |
6947 | 7 + 7 + 7, /* gfx_v8_0_ring_emit_fence_kiq x3 for user fence, vm fence */ | 6932 | 7 + 7 + 7, /* gfx_v8_0_ring_emit_fence_kiq x3 for user fence, vm fence */ |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c index afdf57206efa..cd2b24ce785b 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | |||
@@ -3585,14 +3585,6 @@ static void gfx_v9_0_ring_emit_hdp_flush(struct amdgpu_ring *ring) | |||
3585 | ref_and_mask, ref_and_mask, 0x20); | 3585 | ref_and_mask, ref_and_mask, 0x20); |
3586 | } | 3586 | } |
3587 | 3587 | ||
3588 | static void gfx_v9_0_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
3589 | { | ||
3590 | struct amdgpu_device *adev = ring->adev; | ||
3591 | |||
3592 | gfx_v9_0_write_data_to_reg(ring, 0, true, | ||
3593 | SOC15_REG_OFFSET(HDP, 0, mmHDP_READ_CACHE_INVALIDATE), 1); | ||
3594 | } | ||
3595 | |||
3596 | static void gfx_v9_0_ring_emit_ib_gfx(struct amdgpu_ring *ring, | 3588 | static void gfx_v9_0_ring_emit_ib_gfx(struct amdgpu_ring *ring, |
3597 | struct amdgpu_ib *ib, | 3589 | struct amdgpu_ib *ib, |
3598 | unsigned vmid, bool ctx_switch) | 3590 | unsigned vmid, bool ctx_switch) |
@@ -4319,7 +4311,6 @@ static const struct amdgpu_ring_funcs gfx_v9_0_ring_funcs_gfx = { | |||
4319 | .emit_vm_flush = gfx_v9_0_ring_emit_vm_flush, | 4311 | .emit_vm_flush = gfx_v9_0_ring_emit_vm_flush, |
4320 | .emit_gds_switch = gfx_v9_0_ring_emit_gds_switch, | 4312 | .emit_gds_switch = gfx_v9_0_ring_emit_gds_switch, |
4321 | .emit_hdp_flush = gfx_v9_0_ring_emit_hdp_flush, | 4313 | .emit_hdp_flush = gfx_v9_0_ring_emit_hdp_flush, |
4322 | .emit_hdp_invalidate = gfx_v9_0_ring_emit_hdp_invalidate, | ||
4323 | .test_ring = gfx_v9_0_ring_test_ring, | 4314 | .test_ring = gfx_v9_0_ring_test_ring, |
4324 | .test_ib = gfx_v9_0_ring_test_ib, | 4315 | .test_ib = gfx_v9_0_ring_test_ib, |
4325 | .insert_nop = amdgpu_ring_insert_nop, | 4316 | .insert_nop = amdgpu_ring_insert_nop, |
@@ -4344,7 +4335,7 @@ static const struct amdgpu_ring_funcs gfx_v9_0_ring_funcs_compute = { | |||
4344 | .emit_frame_size = | 4335 | .emit_frame_size = |
4345 | 20 + /* gfx_v9_0_ring_emit_gds_switch */ | 4336 | 20 + /* gfx_v9_0_ring_emit_gds_switch */ |
4346 | 7 + /* gfx_v9_0_ring_emit_hdp_flush */ | 4337 | 7 + /* gfx_v9_0_ring_emit_hdp_flush */ |
4347 | 5 + /* gfx_v9_0_ring_emit_hdp_invalidate */ | 4338 | 5 + /* hdp invalidate */ |
4348 | 7 + /* gfx_v9_0_ring_emit_pipeline_sync */ | 4339 | 7 + /* gfx_v9_0_ring_emit_pipeline_sync */ |
4349 | SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 + 9 + /* gfx_v9_0_ring_emit_vm_flush */ | 4340 | SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 + 9 + /* gfx_v9_0_ring_emit_vm_flush */ |
4350 | 8 + 8 + 8, /* gfx_v9_0_ring_emit_fence x3 for user fence, vm fence */ | 4341 | 8 + 8 + 8, /* gfx_v9_0_ring_emit_fence x3 for user fence, vm fence */ |
@@ -4355,7 +4346,6 @@ static const struct amdgpu_ring_funcs gfx_v9_0_ring_funcs_compute = { | |||
4355 | .emit_vm_flush = gfx_v9_0_ring_emit_vm_flush, | 4346 | .emit_vm_flush = gfx_v9_0_ring_emit_vm_flush, |
4356 | .emit_gds_switch = gfx_v9_0_ring_emit_gds_switch, | 4347 | .emit_gds_switch = gfx_v9_0_ring_emit_gds_switch, |
4357 | .emit_hdp_flush = gfx_v9_0_ring_emit_hdp_flush, | 4348 | .emit_hdp_flush = gfx_v9_0_ring_emit_hdp_flush, |
4358 | .emit_hdp_invalidate = gfx_v9_0_ring_emit_hdp_invalidate, | ||
4359 | .test_ring = gfx_v9_0_ring_test_ring, | 4349 | .test_ring = gfx_v9_0_ring_test_ring, |
4360 | .test_ib = gfx_v9_0_ring_test_ib, | 4350 | .test_ib = gfx_v9_0_ring_test_ib, |
4361 | .insert_nop = amdgpu_ring_insert_nop, | 4351 | .insert_nop = amdgpu_ring_insert_nop, |
@@ -4376,7 +4366,7 @@ static const struct amdgpu_ring_funcs gfx_v9_0_ring_funcs_kiq = { | |||
4376 | .emit_frame_size = | 4366 | .emit_frame_size = |
4377 | 20 + /* gfx_v9_0_ring_emit_gds_switch */ | 4367 | 20 + /* gfx_v9_0_ring_emit_gds_switch */ |
4378 | 7 + /* gfx_v9_0_ring_emit_hdp_flush */ | 4368 | 7 + /* gfx_v9_0_ring_emit_hdp_flush */ |
4379 | 5 + /* gfx_v9_0_ring_emit_hdp_invalidate */ | 4369 | 5 + /* hdp invalidate */ |
4380 | 7 + /* gfx_v9_0_ring_emit_pipeline_sync */ | 4370 | 7 + /* gfx_v9_0_ring_emit_pipeline_sync */ |
4381 | SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 + 9 + /* gfx_v9_0_ring_emit_vm_flush */ | 4371 | SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 + 9 + /* gfx_v9_0_ring_emit_vm_flush */ |
4382 | 8 + 8 + 8, /* gfx_v9_0_ring_emit_fence_kiq x3 for user fence, vm fence */ | 4372 | 8 + 8 + 8, /* gfx_v9_0_ring_emit_fence_kiq x3 for user fence, vm fence */ |
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c index 0aa336371816..6a7a82a8c65d 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | |||
@@ -289,13 +289,6 @@ static void sdma_v2_4_ring_emit_hdp_flush(struct amdgpu_ring *ring) | |||
289 | SDMA_PKT_POLL_REGMEM_DW5_INTERVAL(10)); /* retry count, poll interval */ | 289 | SDMA_PKT_POLL_REGMEM_DW5_INTERVAL(10)); /* retry count, poll interval */ |
290 | } | 290 | } |
291 | 291 | ||
292 | static void sdma_v2_4_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
293 | { | ||
294 | amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_SRBM_WRITE) | | ||
295 | SDMA_PKT_SRBM_WRITE_HEADER_BYTE_EN(0xf)); | ||
296 | amdgpu_ring_write(ring, mmHDP_DEBUG0); | ||
297 | amdgpu_ring_write(ring, 1); | ||
298 | } | ||
299 | /** | 292 | /** |
300 | * sdma_v2_4_ring_emit_fence - emit a fence on the DMA ring | 293 | * sdma_v2_4_ring_emit_fence - emit a fence on the DMA ring |
301 | * | 294 | * |
@@ -1200,7 +1193,7 @@ static const struct amdgpu_ring_funcs sdma_v2_4_ring_funcs = { | |||
1200 | .set_wptr = sdma_v2_4_ring_set_wptr, | 1193 | .set_wptr = sdma_v2_4_ring_set_wptr, |
1201 | .emit_frame_size = | 1194 | .emit_frame_size = |
1202 | 6 + /* sdma_v2_4_ring_emit_hdp_flush */ | 1195 | 6 + /* sdma_v2_4_ring_emit_hdp_flush */ |
1203 | 3 + /* sdma_v2_4_ring_emit_hdp_invalidate */ | 1196 | 3 + /* hdp invalidate */ |
1204 | 6 + /* sdma_v2_4_ring_emit_pipeline_sync */ | 1197 | 6 + /* sdma_v2_4_ring_emit_pipeline_sync */ |
1205 | VI_FLUSH_GPU_TLB_NUM_WREG * 3 + 6 + /* sdma_v2_4_ring_emit_vm_flush */ | 1198 | VI_FLUSH_GPU_TLB_NUM_WREG * 3 + 6 + /* sdma_v2_4_ring_emit_vm_flush */ |
1206 | 10 + 10 + 10, /* sdma_v2_4_ring_emit_fence x3 for user fence, vm fence */ | 1199 | 10 + 10 + 10, /* sdma_v2_4_ring_emit_fence x3 for user fence, vm fence */ |
@@ -1210,7 +1203,6 @@ static const struct amdgpu_ring_funcs sdma_v2_4_ring_funcs = { | |||
1210 | .emit_pipeline_sync = sdma_v2_4_ring_emit_pipeline_sync, | 1203 | .emit_pipeline_sync = sdma_v2_4_ring_emit_pipeline_sync, |
1211 | .emit_vm_flush = sdma_v2_4_ring_emit_vm_flush, | 1204 | .emit_vm_flush = sdma_v2_4_ring_emit_vm_flush, |
1212 | .emit_hdp_flush = sdma_v2_4_ring_emit_hdp_flush, | 1205 | .emit_hdp_flush = sdma_v2_4_ring_emit_hdp_flush, |
1213 | .emit_hdp_invalidate = sdma_v2_4_ring_emit_hdp_invalidate, | ||
1214 | .test_ring = sdma_v2_4_ring_test_ring, | 1206 | .test_ring = sdma_v2_4_ring_test_ring, |
1215 | .test_ib = sdma_v2_4_ring_test_ib, | 1207 | .test_ib = sdma_v2_4_ring_test_ib, |
1216 | .insert_nop = sdma_v2_4_ring_insert_nop, | 1208 | .insert_nop = sdma_v2_4_ring_insert_nop, |
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c index e417546e2048..88178d81bd5a 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | |||
@@ -460,14 +460,6 @@ static void sdma_v3_0_ring_emit_hdp_flush(struct amdgpu_ring *ring) | |||
460 | SDMA_PKT_POLL_REGMEM_DW5_INTERVAL(10)); /* retry count, poll interval */ | 460 | SDMA_PKT_POLL_REGMEM_DW5_INTERVAL(10)); /* retry count, poll interval */ |
461 | } | 461 | } |
462 | 462 | ||
463 | static void sdma_v3_0_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
464 | { | ||
465 | amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_SRBM_WRITE) | | ||
466 | SDMA_PKT_SRBM_WRITE_HEADER_BYTE_EN(0xf)); | ||
467 | amdgpu_ring_write(ring, mmHDP_DEBUG0); | ||
468 | amdgpu_ring_write(ring, 1); | ||
469 | } | ||
470 | |||
471 | /** | 463 | /** |
472 | * sdma_v3_0_ring_emit_fence - emit a fence on the DMA ring | 464 | * sdma_v3_0_ring_emit_fence - emit a fence on the DMA ring |
473 | * | 465 | * |
@@ -1634,7 +1626,7 @@ static const struct amdgpu_ring_funcs sdma_v3_0_ring_funcs = { | |||
1634 | .set_wptr = sdma_v3_0_ring_set_wptr, | 1626 | .set_wptr = sdma_v3_0_ring_set_wptr, |
1635 | .emit_frame_size = | 1627 | .emit_frame_size = |
1636 | 6 + /* sdma_v3_0_ring_emit_hdp_flush */ | 1628 | 6 + /* sdma_v3_0_ring_emit_hdp_flush */ |
1637 | 3 + /* sdma_v3_0_ring_emit_hdp_invalidate */ | 1629 | 3 + /* hdp invalidate */ |
1638 | 6 + /* sdma_v3_0_ring_emit_pipeline_sync */ | 1630 | 6 + /* sdma_v3_0_ring_emit_pipeline_sync */ |
1639 | 12 + /* sdma_v3_0_ring_emit_vm_flush */ | 1631 | 12 + /* sdma_v3_0_ring_emit_vm_flush */ |
1640 | 10 + 10 + 10, /* sdma_v3_0_ring_emit_fence x3 for user fence, vm fence */ | 1632 | 10 + 10 + 10, /* sdma_v3_0_ring_emit_fence x3 for user fence, vm fence */ |
@@ -1644,7 +1636,6 @@ static const struct amdgpu_ring_funcs sdma_v3_0_ring_funcs = { | |||
1644 | .emit_pipeline_sync = sdma_v3_0_ring_emit_pipeline_sync, | 1636 | .emit_pipeline_sync = sdma_v3_0_ring_emit_pipeline_sync, |
1645 | .emit_vm_flush = sdma_v3_0_ring_emit_vm_flush, | 1637 | .emit_vm_flush = sdma_v3_0_ring_emit_vm_flush, |
1646 | .emit_hdp_flush = sdma_v3_0_ring_emit_hdp_flush, | 1638 | .emit_hdp_flush = sdma_v3_0_ring_emit_hdp_flush, |
1647 | .emit_hdp_invalidate = sdma_v3_0_ring_emit_hdp_invalidate, | ||
1648 | .test_ring = sdma_v3_0_ring_test_ring, | 1639 | .test_ring = sdma_v3_0_ring_test_ring, |
1649 | .test_ib = sdma_v3_0_ring_test_ib, | 1640 | .test_ib = sdma_v3_0_ring_test_ib, |
1650 | .insert_nop = sdma_v3_0_ring_insert_nop, | 1641 | .insert_nop = sdma_v3_0_ring_insert_nop, |
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c index ee919477d7ed..e9b1b834fee1 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | |||
@@ -375,16 +375,6 @@ static void sdma_v4_0_ring_emit_hdp_flush(struct amdgpu_ring *ring) | |||
375 | SDMA_PKT_POLL_REGMEM_DW5_INTERVAL(10)); /* retry count, poll interval */ | 375 | SDMA_PKT_POLL_REGMEM_DW5_INTERVAL(10)); /* retry count, poll interval */ |
376 | } | 376 | } |
377 | 377 | ||
378 | static void sdma_v4_0_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
379 | { | ||
380 | struct amdgpu_device *adev = ring->adev; | ||
381 | |||
382 | amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_SRBM_WRITE) | | ||
383 | SDMA_PKT_SRBM_WRITE_HEADER_BYTE_EN(0xf)); | ||
384 | amdgpu_ring_write(ring, SOC15_REG_OFFSET(HDP, 0, mmHDP_READ_CACHE_INVALIDATE)); | ||
385 | amdgpu_ring_write(ring, 1); | ||
386 | } | ||
387 | |||
388 | /** | 378 | /** |
389 | * sdma_v4_0_ring_emit_fence - emit a fence on the DMA ring | 379 | * sdma_v4_0_ring_emit_fence - emit a fence on the DMA ring |
390 | * | 380 | * |
@@ -1583,7 +1573,7 @@ static const struct amdgpu_ring_funcs sdma_v4_0_ring_funcs = { | |||
1583 | .set_wptr = sdma_v4_0_ring_set_wptr, | 1573 | .set_wptr = sdma_v4_0_ring_set_wptr, |
1584 | .emit_frame_size = | 1574 | .emit_frame_size = |
1585 | 6 + /* sdma_v4_0_ring_emit_hdp_flush */ | 1575 | 6 + /* sdma_v4_0_ring_emit_hdp_flush */ |
1586 | 3 + /* sdma_v4_0_ring_emit_hdp_invalidate */ | 1576 | 3 + /* hdp invalidate */ |
1587 | 6 + /* sdma_v4_0_ring_emit_pipeline_sync */ | 1577 | 6 + /* sdma_v4_0_ring_emit_pipeline_sync */ |
1588 | SOC15_FLUSH_GPU_TLB_NUM_WREG * 3 + 6 + /* sdma_v4_0_ring_emit_vm_flush */ | 1578 | SOC15_FLUSH_GPU_TLB_NUM_WREG * 3 + 6 + /* sdma_v4_0_ring_emit_vm_flush */ |
1589 | 10 + 10 + 10, /* sdma_v4_0_ring_emit_fence x3 for user fence, vm fence */ | 1579 | 10 + 10 + 10, /* sdma_v4_0_ring_emit_fence x3 for user fence, vm fence */ |
@@ -1593,7 +1583,6 @@ static const struct amdgpu_ring_funcs sdma_v4_0_ring_funcs = { | |||
1593 | .emit_pipeline_sync = sdma_v4_0_ring_emit_pipeline_sync, | 1583 | .emit_pipeline_sync = sdma_v4_0_ring_emit_pipeline_sync, |
1594 | .emit_vm_flush = sdma_v4_0_ring_emit_vm_flush, | 1584 | .emit_vm_flush = sdma_v4_0_ring_emit_vm_flush, |
1595 | .emit_hdp_flush = sdma_v4_0_ring_emit_hdp_flush, | 1585 | .emit_hdp_flush = sdma_v4_0_ring_emit_hdp_flush, |
1596 | .emit_hdp_invalidate = sdma_v4_0_ring_emit_hdp_invalidate, | ||
1597 | .test_ring = sdma_v4_0_ring_test_ring, | 1586 | .test_ring = sdma_v4_0_ring_test_ring, |
1598 | .test_ib = sdma_v4_0_ring_test_ib, | 1587 | .test_ib = sdma_v4_0_ring_test_ib, |
1599 | .insert_nop = sdma_v4_0_ring_insert_nop, | 1588 | .insert_nop = sdma_v4_0_ring_insert_nop, |
diff --git a/drivers/gpu/drm/amd/amdgpu/si_dma.c b/drivers/gpu/drm/amd/amdgpu/si_dma.c index 8f9509f6f15b..e59521bacf0b 100644 --- a/drivers/gpu/drm/amd/amdgpu/si_dma.c +++ b/drivers/gpu/drm/amd/amdgpu/si_dma.c | |||
@@ -75,20 +75,6 @@ static void si_dma_ring_emit_ib(struct amdgpu_ring *ring, | |||
75 | 75 | ||
76 | } | 76 | } |
77 | 77 | ||
78 | static void si_dma_ring_emit_hdp_flush(struct amdgpu_ring *ring) | ||
79 | { | ||
80 | amdgpu_ring_write(ring, DMA_PACKET(DMA_PACKET_SRBM_WRITE, 0, 0, 0, 0)); | ||
81 | amdgpu_ring_write(ring, (0xf << 16) | (HDP_MEM_COHERENCY_FLUSH_CNTL)); | ||
82 | amdgpu_ring_write(ring, 1); | ||
83 | } | ||
84 | |||
85 | static void si_dma_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
86 | { | ||
87 | amdgpu_ring_write(ring, DMA_PACKET(DMA_PACKET_SRBM_WRITE, 0, 0, 0, 0)); | ||
88 | amdgpu_ring_write(ring, (0xf << 16) | (HDP_DEBUG0)); | ||
89 | amdgpu_ring_write(ring, 1); | ||
90 | } | ||
91 | |||
92 | /** | 78 | /** |
93 | * si_dma_ring_emit_fence - emit a fence on the DMA ring | 79 | * si_dma_ring_emit_fence - emit a fence on the DMA ring |
94 | * | 80 | * |
@@ -772,8 +758,7 @@ static const struct amdgpu_ring_funcs si_dma_ring_funcs = { | |||
772 | .get_wptr = si_dma_ring_get_wptr, | 758 | .get_wptr = si_dma_ring_get_wptr, |
773 | .set_wptr = si_dma_ring_set_wptr, | 759 | .set_wptr = si_dma_ring_set_wptr, |
774 | .emit_frame_size = | 760 | .emit_frame_size = |
775 | 3 + /* si_dma_ring_emit_hdp_flush */ | 761 | 3 + 3 + /* hdp flush / invalidate */ |
776 | 3 + /* si_dma_ring_emit_hdp_invalidate */ | ||
777 | 6 + /* si_dma_ring_emit_pipeline_sync */ | 762 | 6 + /* si_dma_ring_emit_pipeline_sync */ |
778 | SI_FLUSH_GPU_TLB_NUM_WREG * 3 + 6 + /* si_dma_ring_emit_vm_flush */ | 763 | SI_FLUSH_GPU_TLB_NUM_WREG * 3 + 6 + /* si_dma_ring_emit_vm_flush */ |
779 | 9 + 9 + 9, /* si_dma_ring_emit_fence x3 for user fence, vm fence */ | 764 | 9 + 9 + 9, /* si_dma_ring_emit_fence x3 for user fence, vm fence */ |
@@ -782,8 +767,6 @@ static const struct amdgpu_ring_funcs si_dma_ring_funcs = { | |||
782 | .emit_fence = si_dma_ring_emit_fence, | 767 | .emit_fence = si_dma_ring_emit_fence, |
783 | .emit_pipeline_sync = si_dma_ring_emit_pipeline_sync, | 768 | .emit_pipeline_sync = si_dma_ring_emit_pipeline_sync, |
784 | .emit_vm_flush = si_dma_ring_emit_vm_flush, | 769 | .emit_vm_flush = si_dma_ring_emit_vm_flush, |
785 | .emit_hdp_flush = si_dma_ring_emit_hdp_flush, | ||
786 | .emit_hdp_invalidate = si_dma_ring_emit_hdp_invalidate, | ||
787 | .test_ring = si_dma_ring_test_ring, | 770 | .test_ring = si_dma_ring_test_ring, |
788 | .test_ib = si_dma_ring_test_ib, | 771 | .test_ib = si_dma_ring_test_ib, |
789 | .insert_nop = amdgpu_ring_insert_nop, | 772 | .insert_nop = amdgpu_ring_insert_nop, |
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c index 8ab10c220910..948bb9437757 100644 --- a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c | |||
@@ -464,32 +464,6 @@ static void uvd_v4_2_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq | |||
464 | } | 464 | } |
465 | 465 | ||
466 | /** | 466 | /** |
467 | * uvd_v4_2_ring_emit_hdp_flush - emit an hdp flush | ||
468 | * | ||
469 | * @ring: amdgpu_ring pointer | ||
470 | * | ||
471 | * Emits an hdp flush. | ||
472 | */ | ||
473 | static void uvd_v4_2_ring_emit_hdp_flush(struct amdgpu_ring *ring) | ||
474 | { | ||
475 | amdgpu_ring_write(ring, PACKET0(mmHDP_MEM_COHERENCY_FLUSH_CNTL, 0)); | ||
476 | amdgpu_ring_write(ring, 0); | ||
477 | } | ||
478 | |||
479 | /** | ||
480 | * uvd_v4_2_ring_hdp_invalidate - emit an hdp invalidate | ||
481 | * | ||
482 | * @ring: amdgpu_ring pointer | ||
483 | * | ||
484 | * Emits an hdp invalidate. | ||
485 | */ | ||
486 | static void uvd_v4_2_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
487 | { | ||
488 | amdgpu_ring_write(ring, PACKET0(mmHDP_DEBUG0, 0)); | ||
489 | amdgpu_ring_write(ring, 1); | ||
490 | } | ||
491 | |||
492 | /** | ||
493 | * uvd_v4_2_ring_test_ring - register write test | 467 | * uvd_v4_2_ring_test_ring - register write test |
494 | * | 468 | * |
495 | * @ring: amdgpu_ring pointer | 469 | * @ring: amdgpu_ring pointer |
@@ -765,14 +739,10 @@ static const struct amdgpu_ring_funcs uvd_v4_2_ring_funcs = { | |||
765 | .set_wptr = uvd_v4_2_ring_set_wptr, | 739 | .set_wptr = uvd_v4_2_ring_set_wptr, |
766 | .parse_cs = amdgpu_uvd_ring_parse_cs, | 740 | .parse_cs = amdgpu_uvd_ring_parse_cs, |
767 | .emit_frame_size = | 741 | .emit_frame_size = |
768 | 2 + /* uvd_v4_2_ring_emit_hdp_flush */ | ||
769 | 2 + /* uvd_v4_2_ring_emit_hdp_invalidate */ | ||
770 | 14, /* uvd_v4_2_ring_emit_fence x1 no user fence */ | 742 | 14, /* uvd_v4_2_ring_emit_fence x1 no user fence */ |
771 | .emit_ib_size = 4, /* uvd_v4_2_ring_emit_ib */ | 743 | .emit_ib_size = 4, /* uvd_v4_2_ring_emit_ib */ |
772 | .emit_ib = uvd_v4_2_ring_emit_ib, | 744 | .emit_ib = uvd_v4_2_ring_emit_ib, |
773 | .emit_fence = uvd_v4_2_ring_emit_fence, | 745 | .emit_fence = uvd_v4_2_ring_emit_fence, |
774 | .emit_hdp_flush = uvd_v4_2_ring_emit_hdp_flush, | ||
775 | .emit_hdp_invalidate = uvd_v4_2_ring_emit_hdp_invalidate, | ||
776 | .test_ring = uvd_v4_2_ring_test_ring, | 746 | .test_ring = uvd_v4_2_ring_test_ring, |
777 | .test_ib = amdgpu_uvd_ring_test_ib, | 747 | .test_ib = amdgpu_uvd_ring_test_ib, |
778 | .insert_nop = amdgpu_ring_insert_nop, | 748 | .insert_nop = amdgpu_ring_insert_nop, |
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c index c1fe30cdba32..6445d55e7d5a 100644 --- a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c | |||
@@ -479,32 +479,6 @@ static void uvd_v5_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 seq | |||
479 | } | 479 | } |
480 | 480 | ||
481 | /** | 481 | /** |
482 | * uvd_v5_0_ring_emit_hdp_flush - emit an hdp flush | ||
483 | * | ||
484 | * @ring: amdgpu_ring pointer | ||
485 | * | ||
486 | * Emits an hdp flush. | ||
487 | */ | ||
488 | static void uvd_v5_0_ring_emit_hdp_flush(struct amdgpu_ring *ring) | ||
489 | { | ||
490 | amdgpu_ring_write(ring, PACKET0(mmHDP_MEM_COHERENCY_FLUSH_CNTL, 0)); | ||
491 | amdgpu_ring_write(ring, 0); | ||
492 | } | ||
493 | |||
494 | /** | ||
495 | * uvd_v5_0_ring_hdp_invalidate - emit an hdp invalidate | ||
496 | * | ||
497 | * @ring: amdgpu_ring pointer | ||
498 | * | ||
499 | * Emits an hdp invalidate. | ||
500 | */ | ||
501 | static void uvd_v5_0_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
502 | { | ||
503 | amdgpu_ring_write(ring, PACKET0(mmHDP_DEBUG0, 0)); | ||
504 | amdgpu_ring_write(ring, 1); | ||
505 | } | ||
506 | |||
507 | /** | ||
508 | * uvd_v5_0_ring_test_ring - register write test | 482 | * uvd_v5_0_ring_test_ring - register write test |
509 | * | 483 | * |
510 | * @ring: amdgpu_ring pointer | 484 | * @ring: amdgpu_ring pointer |
@@ -873,14 +847,10 @@ static const struct amdgpu_ring_funcs uvd_v5_0_ring_funcs = { | |||
873 | .set_wptr = uvd_v5_0_ring_set_wptr, | 847 | .set_wptr = uvd_v5_0_ring_set_wptr, |
874 | .parse_cs = amdgpu_uvd_ring_parse_cs, | 848 | .parse_cs = amdgpu_uvd_ring_parse_cs, |
875 | .emit_frame_size = | 849 | .emit_frame_size = |
876 | 2 + /* uvd_v5_0_ring_emit_hdp_flush */ | ||
877 | 2 + /* uvd_v5_0_ring_emit_hdp_invalidate */ | ||
878 | 14, /* uvd_v5_0_ring_emit_fence x1 no user fence */ | 850 | 14, /* uvd_v5_0_ring_emit_fence x1 no user fence */ |
879 | .emit_ib_size = 6, /* uvd_v5_0_ring_emit_ib */ | 851 | .emit_ib_size = 6, /* uvd_v5_0_ring_emit_ib */ |
880 | .emit_ib = uvd_v5_0_ring_emit_ib, | 852 | .emit_ib = uvd_v5_0_ring_emit_ib, |
881 | .emit_fence = uvd_v5_0_ring_emit_fence, | 853 | .emit_fence = uvd_v5_0_ring_emit_fence, |
882 | .emit_hdp_flush = uvd_v5_0_ring_emit_hdp_flush, | ||
883 | .emit_hdp_invalidate = uvd_v5_0_ring_emit_hdp_invalidate, | ||
884 | .test_ring = uvd_v5_0_ring_test_ring, | 854 | .test_ring = uvd_v5_0_ring_test_ring, |
885 | .test_ib = amdgpu_uvd_ring_test_ib, | 855 | .test_ib = amdgpu_uvd_ring_test_ib, |
886 | .insert_nop = amdgpu_ring_insert_nop, | 856 | .insert_nop = amdgpu_ring_insert_nop, |
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c index 5f499e663e2a..e7546d5b301c 100644 --- a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | |||
@@ -964,32 +964,6 @@ static void uvd_v6_0_enc_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, | |||
964 | } | 964 | } |
965 | 965 | ||
966 | /** | 966 | /** |
967 | * uvd_v6_0_ring_emit_hdp_flush - emit an hdp flush | ||
968 | * | ||
969 | * @ring: amdgpu_ring pointer | ||
970 | * | ||
971 | * Emits an hdp flush. | ||
972 | */ | ||
973 | static void uvd_v6_0_ring_emit_hdp_flush(struct amdgpu_ring *ring) | ||
974 | { | ||
975 | amdgpu_ring_write(ring, PACKET0(mmHDP_MEM_COHERENCY_FLUSH_CNTL, 0)); | ||
976 | amdgpu_ring_write(ring, 0); | ||
977 | } | ||
978 | |||
979 | /** | ||
980 | * uvd_v6_0_ring_hdp_invalidate - emit an hdp invalidate | ||
981 | * | ||
982 | * @ring: amdgpu_ring pointer | ||
983 | * | ||
984 | * Emits an hdp invalidate. | ||
985 | */ | ||
986 | static void uvd_v6_0_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
987 | { | ||
988 | amdgpu_ring_write(ring, PACKET0(mmHDP_DEBUG0, 0)); | ||
989 | amdgpu_ring_write(ring, 1); | ||
990 | } | ||
991 | |||
992 | /** | ||
993 | * uvd_v6_0_ring_test_ring - register write test | 967 | * uvd_v6_0_ring_test_ring - register write test |
994 | * | 968 | * |
995 | * @ring: amdgpu_ring pointer | 969 | * @ring: amdgpu_ring pointer |
@@ -1556,15 +1530,11 @@ static const struct amdgpu_ring_funcs uvd_v6_0_ring_phys_funcs = { | |||
1556 | .set_wptr = uvd_v6_0_ring_set_wptr, | 1530 | .set_wptr = uvd_v6_0_ring_set_wptr, |
1557 | .parse_cs = amdgpu_uvd_ring_parse_cs, | 1531 | .parse_cs = amdgpu_uvd_ring_parse_cs, |
1558 | .emit_frame_size = | 1532 | .emit_frame_size = |
1559 | 2 + /* uvd_v6_0_ring_emit_hdp_flush */ | ||
1560 | 2 + /* uvd_v6_0_ring_emit_hdp_invalidate */ | ||
1561 | 10 + /* uvd_v6_0_ring_emit_pipeline_sync */ | 1533 | 10 + /* uvd_v6_0_ring_emit_pipeline_sync */ |
1562 | 14, /* uvd_v6_0_ring_emit_fence x1 no user fence */ | 1534 | 14, /* uvd_v6_0_ring_emit_fence x1 no user fence */ |
1563 | .emit_ib_size = 8, /* uvd_v6_0_ring_emit_ib */ | 1535 | .emit_ib_size = 8, /* uvd_v6_0_ring_emit_ib */ |
1564 | .emit_ib = uvd_v6_0_ring_emit_ib, | 1536 | .emit_ib = uvd_v6_0_ring_emit_ib, |
1565 | .emit_fence = uvd_v6_0_ring_emit_fence, | 1537 | .emit_fence = uvd_v6_0_ring_emit_fence, |
1566 | .emit_hdp_flush = uvd_v6_0_ring_emit_hdp_flush, | ||
1567 | .emit_hdp_invalidate = uvd_v6_0_ring_emit_hdp_invalidate, | ||
1568 | .test_ring = uvd_v6_0_ring_test_ring, | 1538 | .test_ring = uvd_v6_0_ring_test_ring, |
1569 | .test_ib = amdgpu_uvd_ring_test_ib, | 1539 | .test_ib = amdgpu_uvd_ring_test_ib, |
1570 | .insert_nop = amdgpu_ring_insert_nop, | 1540 | .insert_nop = amdgpu_ring_insert_nop, |
@@ -1582,8 +1552,7 @@ static const struct amdgpu_ring_funcs uvd_v6_0_ring_vm_funcs = { | |||
1582 | .get_wptr = uvd_v6_0_ring_get_wptr, | 1552 | .get_wptr = uvd_v6_0_ring_get_wptr, |
1583 | .set_wptr = uvd_v6_0_ring_set_wptr, | 1553 | .set_wptr = uvd_v6_0_ring_set_wptr, |
1584 | .emit_frame_size = | 1554 | .emit_frame_size = |
1585 | 2 + /* uvd_v6_0_ring_emit_hdp_flush */ | 1555 | 6 + 6 + /* hdp flush / invalidate */ |
1586 | 2 + /* uvd_v6_0_ring_emit_hdp_invalidate */ | ||
1587 | 10 + /* uvd_v6_0_ring_emit_pipeline_sync */ | 1556 | 10 + /* uvd_v6_0_ring_emit_pipeline_sync */ |
1588 | 20 + /* uvd_v6_0_ring_emit_vm_flush */ | 1557 | 20 + /* uvd_v6_0_ring_emit_vm_flush */ |
1589 | 14 + 14, /* uvd_v6_0_ring_emit_fence x2 vm fence */ | 1558 | 14 + 14, /* uvd_v6_0_ring_emit_fence x2 vm fence */ |
@@ -1592,8 +1561,6 @@ static const struct amdgpu_ring_funcs uvd_v6_0_ring_vm_funcs = { | |||
1592 | .emit_fence = uvd_v6_0_ring_emit_fence, | 1561 | .emit_fence = uvd_v6_0_ring_emit_fence, |
1593 | .emit_vm_flush = uvd_v6_0_ring_emit_vm_flush, | 1562 | .emit_vm_flush = uvd_v6_0_ring_emit_vm_flush, |
1594 | .emit_pipeline_sync = uvd_v6_0_ring_emit_pipeline_sync, | 1563 | .emit_pipeline_sync = uvd_v6_0_ring_emit_pipeline_sync, |
1595 | .emit_hdp_flush = uvd_v6_0_ring_emit_hdp_flush, | ||
1596 | .emit_hdp_invalidate = uvd_v6_0_ring_emit_hdp_invalidate, | ||
1597 | .test_ring = uvd_v6_0_ring_test_ring, | 1564 | .test_ring = uvd_v6_0_ring_test_ring, |
1598 | .test_ib = amdgpu_uvd_ring_test_ib, | 1565 | .test_ib = amdgpu_uvd_ring_test_ib, |
1599 | .insert_nop = amdgpu_ring_insert_nop, | 1566 | .insert_nop = amdgpu_ring_insert_nop, |
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c index 241e73022cd7..d317c764cc91 100644 --- a/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c | |||
@@ -1136,37 +1136,6 @@ static void uvd_v7_0_enc_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, | |||
1136 | } | 1136 | } |
1137 | 1137 | ||
1138 | /** | 1138 | /** |
1139 | * uvd_v7_0_ring_emit_hdp_flush - emit an hdp flush | ||
1140 | * | ||
1141 | * @ring: amdgpu_ring pointer | ||
1142 | * | ||
1143 | * Emits an hdp flush. | ||
1144 | */ | ||
1145 | static void uvd_v7_0_ring_emit_hdp_flush(struct amdgpu_ring *ring) | ||
1146 | { | ||
1147 | struct amdgpu_device *adev = ring->adev; | ||
1148 | |||
1149 | amdgpu_ring_write(ring, PACKET0(SOC15_REG_OFFSET(NBIF, 0, | ||
1150 | mmHDP_MEM_COHERENCY_FLUSH_CNTL), 0)); | ||
1151 | amdgpu_ring_write(ring, 0); | ||
1152 | } | ||
1153 | |||
1154 | /** | ||
1155 | * uvd_v7_0_ring_hdp_invalidate - emit an hdp invalidate | ||
1156 | * | ||
1157 | * @ring: amdgpu_ring pointer | ||
1158 | * | ||
1159 | * Emits an hdp invalidate. | ||
1160 | */ | ||
1161 | static void uvd_v7_0_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
1162 | { | ||
1163 | struct amdgpu_device *adev = ring->adev; | ||
1164 | |||
1165 | amdgpu_ring_write(ring, PACKET0(SOC15_REG_OFFSET(HDP, 0, mmHDP_READ_CACHE_INVALIDATE), 0)); | ||
1166 | amdgpu_ring_write(ring, 1); | ||
1167 | } | ||
1168 | |||
1169 | /** | ||
1170 | * uvd_v7_0_ring_test_ring - register write test | 1139 | * uvd_v7_0_ring_test_ring - register write test |
1171 | * | 1140 | * |
1172 | * @ring: amdgpu_ring pointer | 1141 | * @ring: amdgpu_ring pointer |
@@ -1693,16 +1662,13 @@ static const struct amdgpu_ring_funcs uvd_v7_0_ring_vm_funcs = { | |||
1693 | .get_wptr = uvd_v7_0_ring_get_wptr, | 1662 | .get_wptr = uvd_v7_0_ring_get_wptr, |
1694 | .set_wptr = uvd_v7_0_ring_set_wptr, | 1663 | .set_wptr = uvd_v7_0_ring_set_wptr, |
1695 | .emit_frame_size = | 1664 | .emit_frame_size = |
1696 | 2 + /* uvd_v7_0_ring_emit_hdp_flush */ | 1665 | 6 + 6 + /* hdp flush / invalidate */ |
1697 | 2 + /* uvd_v7_0_ring_emit_hdp_invalidate */ | ||
1698 | SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 + 16 + /* uvd_v7_0_ring_emit_vm_flush */ | 1666 | SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 + 16 + /* uvd_v7_0_ring_emit_vm_flush */ |
1699 | 14 + 14, /* uvd_v7_0_ring_emit_fence x2 vm fence */ | 1667 | 14 + 14, /* uvd_v7_0_ring_emit_fence x2 vm fence */ |
1700 | .emit_ib_size = 8, /* uvd_v7_0_ring_emit_ib */ | 1668 | .emit_ib_size = 8, /* uvd_v7_0_ring_emit_ib */ |
1701 | .emit_ib = uvd_v7_0_ring_emit_ib, | 1669 | .emit_ib = uvd_v7_0_ring_emit_ib, |
1702 | .emit_fence = uvd_v7_0_ring_emit_fence, | 1670 | .emit_fence = uvd_v7_0_ring_emit_fence, |
1703 | .emit_vm_flush = uvd_v7_0_ring_emit_vm_flush, | 1671 | .emit_vm_flush = uvd_v7_0_ring_emit_vm_flush, |
1704 | .emit_hdp_flush = uvd_v7_0_ring_emit_hdp_flush, | ||
1705 | .emit_hdp_invalidate = uvd_v7_0_ring_emit_hdp_invalidate, | ||
1706 | .test_ring = uvd_v7_0_ring_test_ring, | 1672 | .test_ring = uvd_v7_0_ring_test_ring, |
1707 | .test_ib = amdgpu_uvd_ring_test_ib, | 1673 | .test_ib = amdgpu_uvd_ring_test_ib, |
1708 | .insert_nop = uvd_v7_0_ring_insert_nop, | 1674 | .insert_nop = uvd_v7_0_ring_insert_nop, |
@@ -1722,6 +1688,7 @@ static const struct amdgpu_ring_funcs uvd_v7_0_enc_ring_vm_funcs = { | |||
1722 | .get_wptr = uvd_v7_0_enc_ring_get_wptr, | 1688 | .get_wptr = uvd_v7_0_enc_ring_get_wptr, |
1723 | .set_wptr = uvd_v7_0_enc_ring_set_wptr, | 1689 | .set_wptr = uvd_v7_0_enc_ring_set_wptr, |
1724 | .emit_frame_size = | 1690 | .emit_frame_size = |
1691 | 3 + 3 + /* hdp flush / invalidate */ | ||
1725 | SOC15_FLUSH_GPU_TLB_NUM_WREG * 3 + 8 + /* uvd_v7_0_enc_ring_emit_vm_flush */ | 1692 | SOC15_FLUSH_GPU_TLB_NUM_WREG * 3 + 8 + /* uvd_v7_0_enc_ring_emit_vm_flush */ |
1726 | 5 + 5 + /* uvd_v7_0_enc_ring_emit_fence x2 vm fence */ | 1693 | 5 + 5 + /* uvd_v7_0_enc_ring_emit_fence x2 vm fence */ |
1727 | 1, /* uvd_v7_0_enc_ring_insert_end */ | 1694 | 1, /* uvd_v7_0_enc_ring_insert_end */ |
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c index 76cdef29b9d1..44c041a1fe68 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | |||
@@ -810,21 +810,6 @@ static void vcn_v1_0_dec_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 | |||
810 | } | 810 | } |
811 | 811 | ||
812 | /** | 812 | /** |
813 | * vcn_v1_0_dec_ring_hdp_invalidate - emit an hdp invalidate | ||
814 | * | ||
815 | * @ring: amdgpu_ring pointer | ||
816 | * | ||
817 | * Emits an hdp invalidate. | ||
818 | */ | ||
819 | static void vcn_v1_0_dec_ring_emit_hdp_invalidate(struct amdgpu_ring *ring) | ||
820 | { | ||
821 | struct amdgpu_device *adev = ring->adev; | ||
822 | |||
823 | amdgpu_ring_write(ring, PACKET0(SOC15_REG_OFFSET(HDP, 0, mmHDP_READ_CACHE_INVALIDATE), 0)); | ||
824 | amdgpu_ring_write(ring, 1); | ||
825 | } | ||
826 | |||
827 | /** | ||
828 | * vcn_v1_0_dec_ring_emit_ib - execute indirect buffer | 813 | * vcn_v1_0_dec_ring_emit_ib - execute indirect buffer |
829 | * | 814 | * |
830 | * @ring: amdgpu_ring pointer | 815 | * @ring: amdgpu_ring pointer |
@@ -1096,7 +1081,7 @@ static const struct amdgpu_ring_funcs vcn_v1_0_dec_ring_vm_funcs = { | |||
1096 | .get_wptr = vcn_v1_0_dec_ring_get_wptr, | 1081 | .get_wptr = vcn_v1_0_dec_ring_get_wptr, |
1097 | .set_wptr = vcn_v1_0_dec_ring_set_wptr, | 1082 | .set_wptr = vcn_v1_0_dec_ring_set_wptr, |
1098 | .emit_frame_size = | 1083 | .emit_frame_size = |
1099 | 2 + /* vcn_v1_0_dec_ring_emit_hdp_invalidate */ | 1084 | 6 + 6 + /* hdp invalidate / flush */ |
1100 | SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 + 16 + /* vcn_v1_0_dec_ring_emit_vm_flush */ | 1085 | SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 + 16 + /* vcn_v1_0_dec_ring_emit_vm_flush */ |
1101 | 14 + 14 + /* vcn_v1_0_dec_ring_emit_fence x2 vm fence */ | 1086 | 14 + 14 + /* vcn_v1_0_dec_ring_emit_fence x2 vm fence */ |
1102 | 6, | 1087 | 6, |
@@ -1104,7 +1089,6 @@ static const struct amdgpu_ring_funcs vcn_v1_0_dec_ring_vm_funcs = { | |||
1104 | .emit_ib = vcn_v1_0_dec_ring_emit_ib, | 1089 | .emit_ib = vcn_v1_0_dec_ring_emit_ib, |
1105 | .emit_fence = vcn_v1_0_dec_ring_emit_fence, | 1090 | .emit_fence = vcn_v1_0_dec_ring_emit_fence, |
1106 | .emit_vm_flush = vcn_v1_0_dec_ring_emit_vm_flush, | 1091 | .emit_vm_flush = vcn_v1_0_dec_ring_emit_vm_flush, |
1107 | .emit_hdp_invalidate = vcn_v1_0_dec_ring_emit_hdp_invalidate, | ||
1108 | .test_ring = amdgpu_vcn_dec_ring_test_ring, | 1092 | .test_ring = amdgpu_vcn_dec_ring_test_ring, |
1109 | .test_ib = amdgpu_vcn_dec_ring_test_ib, | 1093 | .test_ib = amdgpu_vcn_dec_ring_test_ib, |
1110 | .insert_nop = vcn_v1_0_ring_insert_nop, | 1094 | .insert_nop = vcn_v1_0_ring_insert_nop, |