aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0275-drm-amdgpu-make-pad_ib-a-ring-function-v3.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0275-drm-amdgpu-make-pad_ib-a-ring-function-v3.patch')
-rw-r--r--common/recipes-kernel/linux/files/0275-drm-amdgpu-make-pad_ib-a-ring-function-v3.patch360
1 files changed, 360 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0275-drm-amdgpu-make-pad_ib-a-ring-function-v3.patch b/common/recipes-kernel/linux/files/0275-drm-amdgpu-make-pad_ib-a-ring-function-v3.patch
new file mode 100644
index 00000000..d5658c7d
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0275-drm-amdgpu-make-pad_ib-a-ring-function-v3.patch
@@ -0,0 +1,360 @@
+From 8a1e15e2e173cbce8f95c6d0703856136493fc4f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Sun, 31 Jan 2016 12:20:55 +0100
+Subject: [PATCH 0275/1110] drm/amdgpu: make pad_ib a ring function v3
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The padding depends on the firmware version and we need that for BO moves as
+well, not only for VM updates.
+
+v2: new approach of making pad_ib a ring function
+v3: fix typo in macro name
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucer@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Kalyan Alle <kalyan.alle@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu.h | 7 ++++---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 13 +++++++++++++
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 +-
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 +++---
+ drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 6 +++---
+ drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 2 ++
+ drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 2 ++
+ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 8 ++++----
+ drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 8 ++++----
+ drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c | 1 +
+ drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c | 1 +
+ drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | 1 +
+ drivers/gpu/drm/amd/amdgpu/vce_v2_0.c | 1 +
+ drivers/gpu/drm/amd/amdgpu/vce_v3_0.c | 1 +
+ 14 files changed, 41 insertions(+), 18 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+index dba07d8..49d3c33 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+@@ -250,8 +250,6 @@ struct amdgpu_vm_pte_funcs {
+ uint64_t pe,
+ uint64_t addr, unsigned count,
+ uint32_t incr, uint32_t flags);
+- /* pad the indirect buffer to the necessary number of dw */
+- void (*pad_ib)(struct amdgpu_ib *ib);
+ };
+
+ /* provided by the gmc block */
+@@ -301,6 +299,8 @@ struct amdgpu_ring_funcs {
+ int (*test_ib)(struct amdgpu_ring *ring);
+ /* insert NOP packets */
+ void (*insert_nop)(struct amdgpu_ring *ring, uint32_t count);
++ /* pad the indirect buffer to the necessary number of dw */
++ void (*pad_ib)(struct amdgpu_ring *ring, struct amdgpu_ib *ib);
+ };
+
+ /*
+@@ -1153,6 +1153,7 @@ void amdgpu_ib_pool_fini(struct amdgpu_device *adev);
+ int amdgpu_ib_ring_tests(struct amdgpu_device *adev);
+ int amdgpu_ring_alloc(struct amdgpu_ring *ring, unsigned ndw);
+ void amdgpu_ring_insert_nop(struct amdgpu_ring *ring, uint32_t count);
++void amdgpu_ring_generic_pad_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib);
+ void amdgpu_ring_commit(struct amdgpu_ring *ring);
+ void amdgpu_ring_undo(struct amdgpu_ring *ring);
+ unsigned amdgpu_ring_backup(struct amdgpu_ring *ring,
+@@ -2190,7 +2191,6 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring)
+ #define amdgpu_vm_copy_pte(adev, ib, pe, src, count) ((adev)->vm_manager.vm_pte_funcs->copy_pte((ib), (pe), (src), (count)))
+ #define amdgpu_vm_write_pte(adev, ib, pa, pe, addr, count, incr, flags) ((adev)->vm_manager.vm_pte_funcs->write_pte((ib), (pa), (pe), (addr), (count), (incr), (flags)))
+ #define amdgpu_vm_set_pte_pde(adev, ib, pe, addr, count, incr, flags) ((adev)->vm_manager.vm_pte_funcs->set_pte_pde((ib), (pe), (addr), (count), (incr), (flags)))
+-#define amdgpu_vm_pad_ib(adev, ib) ((adev)->vm_manager.vm_pte_funcs->pad_ib((ib)))
+ #define amdgpu_ring_parse_cs(r, p, ib) ((r)->funcs->parse_cs((p), (ib)))
+ #define amdgpu_ring_test_ring(r) (r)->funcs->test_ring((r))
+ #define amdgpu_ring_test_ib(r) (r)->funcs->test_ib((r))
+@@ -2202,6 +2202,7 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring)
+ #define amdgpu_ring_emit_fence(r, addr, seq, flags) (r)->funcs->emit_fence((r), (addr), (seq), (flags))
+ #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))
+ #define amdgpu_ring_emit_hdp_flush(r) (r)->funcs->emit_hdp_flush((r))
++#define amdgpu_ring_pad_ib(r, ib) ((r)->funcs->pad_ib((r), (ib)))
+ #define amdgpu_ih_get_wptr(adev) (adev)->irq.ih_funcs->get_wptr((adev))
+ #define amdgpu_ih_decode_iv(adev, iv) (adev)->irq.ih_funcs->decode_iv((adev), (iv))
+ #define amdgpu_ih_set_rptr(adev) (adev)->irq.ih_funcs->set_rptr((adev))
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
+index 1f0db99..56c07e3 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
+@@ -90,6 +90,19 @@ void amdgpu_ring_insert_nop(struct amdgpu_ring *ring, uint32_t count)
+ amdgpu_ring_write(ring, ring->nop);
+ }
+
++/** amdgpu_ring_generic_pad_ib - pad IB with NOP packets
++ *
++ * @ring: amdgpu_ring structure holding ring information
++ * @ib: IB to add NOP packets to
++ *
++ * This is the generic pad_ib function for rings except SDMA
++ */
++void amdgpu_ring_generic_pad_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib)
++{
++ while (ib->length_dw & ring->align_mask)
++ ib->ptr[ib->length_dw++] = ring->nop;
++}
++
+ /**
+ * amdgpu_ring_commit - tell the GPU to execute the new
+ * commands on the ring buffer
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+index a4f7182..4a32bdd 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+@@ -1058,7 +1058,7 @@ int amdgpu_copy_buffer(struct amdgpu_ring *ring,
+ byte_count -= cur_size_in_bytes;
+ }
+
+- amdgpu_vm_pad_ib(adev, ib);
++ amdgpu_ring_pad_ib(ring, ib);
+ WARN_ON(ib->length_dw > num_dw);
+ r = amdgpu_sched_ib_submit_kernel_helper(adev, ring, ib, 1,
+ &amdgpu_vm_free_job,
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+index 6512386..3487a11 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+@@ -369,7 +369,7 @@ static int amdgpu_vm_clear_bo(struct amdgpu_device *adev,
+ ib->length_dw = 0;
+
+ amdgpu_vm_update_pages(adev, NULL, 0, ib, addr, 0, entries, 0, 0);
+- amdgpu_vm_pad_ib(adev, ib);
++ amdgpu_ring_pad_ib(ring, ib);
+
+ WARN_ON(ib->length_dw > 64);
+ r = amdgpu_sched_ib_submit_kernel_helper(adev, ring, ib, 1,
+@@ -499,7 +499,7 @@ int amdgpu_vm_update_page_directory(struct amdgpu_device *adev,
+ count, incr, AMDGPU_PTE_VALID);
+
+ if (ib->length_dw != 0) {
+- amdgpu_vm_pad_ib(adev, ib);
++ amdgpu_ring_pad_ib(ring, ib);
+ amdgpu_sync_resv(adev, &ib->sync, pd->tbo.resv, AMDGPU_FENCE_OWNER_VM);
+ WARN_ON(ib->length_dw > ndw);
+ r = amdgpu_sched_ib_submit_kernel_helper(adev, ring, ib, 1,
+@@ -768,7 +768,7 @@ static int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev,
+ amdgpu_vm_update_ptes(adev, gtt, gtt_flags, vm, ib, start, last + 1,
+ addr, flags);
+
+- amdgpu_vm_pad_ib(adev, ib);
++ amdgpu_ring_pad_ib(ring, ib);
+ WARN_ON(ib->length_dw > ndw);
+ r = amdgpu_sched_ib_submit_kernel_helper(adev, ring, ib, 1,
+ &amdgpu_vm_free_job,
+diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
+index 0602279..0608326 100644
+--- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
++++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
+@@ -796,9 +796,9 @@ static void cik_sdma_vm_set_pte_pde(struct amdgpu_ib *ib,
+ * @ib: indirect buffer to fill with padding
+ *
+ */
+-static void cik_sdma_vm_pad_ib(struct amdgpu_ib *ib)
++static void cik_sdma_ring_pad_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib)
+ {
+- struct amdgpu_sdma_instance *sdma = amdgpu_get_sdma_instance(ib->ring);
++ struct amdgpu_sdma_instance *sdma = amdgpu_get_sdma_instance(ring);
+ u32 pad_count;
+ int i;
+
+@@ -1271,6 +1271,7 @@ static const struct amdgpu_ring_funcs cik_sdma_ring_funcs = {
+ .test_ring = cik_sdma_ring_test_ring,
+ .test_ib = cik_sdma_ring_test_ib,
+ .insert_nop = cik_sdma_ring_insert_nop,
++ .pad_ib = cik_sdma_ring_pad_ib,
+ };
+
+ static void cik_sdma_set_ring_funcs(struct amdgpu_device *adev)
+@@ -1367,7 +1368,6 @@ static const struct amdgpu_vm_pte_funcs cik_sdma_vm_pte_funcs = {
+ .copy_pte = cik_sdma_vm_copy_pte,
+ .write_pte = cik_sdma_vm_write_pte,
+ .set_pte_pde = cik_sdma_vm_set_pte_pde,
+- .pad_ib = cik_sdma_vm_pad_ib,
+ };
+
+ static void cik_sdma_set_vm_pte_funcs(struct amdgpu_device *adev)
+diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+index e4a78ff..148311e 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+@@ -5539,6 +5539,7 @@ static const struct amdgpu_ring_funcs gfx_v7_0_ring_funcs_gfx = {
+ .test_ring = gfx_v7_0_ring_test_ring,
+ .test_ib = gfx_v7_0_ring_test_ib,
+ .insert_nop = amdgpu_ring_insert_nop,
++ .pad_ib = amdgpu_ring_generic_pad_ib,
+ };
+
+ static const struct amdgpu_ring_funcs gfx_v7_0_ring_funcs_compute = {
+@@ -5554,6 +5555,7 @@ static const struct amdgpu_ring_funcs gfx_v7_0_ring_funcs_compute = {
+ .test_ring = gfx_v7_0_ring_test_ring,
+ .test_ib = gfx_v7_0_ring_test_ib,
+ .insert_nop = amdgpu_ring_insert_nop,
++ .pad_ib = amdgpu_ring_generic_pad_ib,
+ };
+
+ static void gfx_v7_0_set_ring_funcs(struct amdgpu_device *adev)
+diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+index ab1159e..2b69a15 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+@@ -5105,6 +5105,7 @@ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_gfx = {
+ .test_ring = gfx_v8_0_ring_test_ring,
+ .test_ib = gfx_v8_0_ring_test_ib,
+ .insert_nop = amdgpu_ring_insert_nop,
++ .pad_ib = amdgpu_ring_generic_pad_ib,
+ };
+
+ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_compute = {
+@@ -5120,6 +5121,7 @@ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_compute = {
+ .test_ring = gfx_v8_0_ring_test_ring,
+ .test_ib = gfx_v8_0_ring_test_ib,
+ .insert_nop = amdgpu_ring_insert_nop,
++ .pad_ib = amdgpu_ring_generic_pad_ib,
+ };
+
+ static void gfx_v8_0_set_ring_funcs(struct amdgpu_device *adev)
+diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+index 0843f81..fc53db9 100644
+--- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+@@ -849,14 +849,14 @@ static void sdma_v2_4_vm_set_pte_pde(struct amdgpu_ib *ib,
+ }
+
+ /**
+- * sdma_v2_4_vm_pad_ib - pad the IB to the required number of dw
++ * sdma_v2_4_ring_pad_ib - pad the IB to the required number of dw
+ *
+ * @ib: indirect buffer to fill with padding
+ *
+ */
+-static void sdma_v2_4_vm_pad_ib(struct amdgpu_ib *ib)
++static void sdma_v2_4_ring_pad_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib)
+ {
+- struct amdgpu_sdma_instance *sdma = amdgpu_get_sdma_instance(ib->ring);
++ struct amdgpu_sdma_instance *sdma = amdgpu_get_sdma_instance(ring);
+ u32 pad_count;
+ int i;
+
+@@ -1275,6 +1275,7 @@ static const struct amdgpu_ring_funcs sdma_v2_4_ring_funcs = {
+ .test_ring = sdma_v2_4_ring_test_ring,
+ .test_ib = sdma_v2_4_ring_test_ib,
+ .insert_nop = sdma_v2_4_ring_insert_nop,
++ .pad_ib = sdma_v2_4_ring_pad_ib,
+ };
+
+ static void sdma_v2_4_set_ring_funcs(struct amdgpu_device *adev)
+@@ -1372,7 +1373,6 @@ static const struct amdgpu_vm_pte_funcs sdma_v2_4_vm_pte_funcs = {
+ .copy_pte = sdma_v2_4_vm_copy_pte,
+ .write_pte = sdma_v2_4_vm_write_pte,
+ .set_pte_pde = sdma_v2_4_vm_set_pte_pde,
+- .pad_ib = sdma_v2_4_vm_pad_ib,
+ };
+
+ static void sdma_v2_4_set_vm_pte_funcs(struct amdgpu_device *adev)
+diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+index 7af4b57..999a169 100644
+--- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+@@ -999,14 +999,14 @@ static void sdma_v3_0_vm_set_pte_pde(struct amdgpu_ib *ib,
+ }
+
+ /**
+- * sdma_v3_0_vm_pad_ib - pad the IB to the required number of dw
++ * sdma_v3_0_ring_pad_ib - pad the IB to the required number of dw
+ *
+ * @ib: indirect buffer to fill with padding
+ *
+ */
+-static void sdma_v3_0_vm_pad_ib(struct amdgpu_ib *ib)
++static void sdma_v3_0_ring_pad_ib(struct amdgpu_ring *ring, struct amdgpu_ib *ib)
+ {
+- struct amdgpu_sdma_instance *sdma = amdgpu_get_sdma_instance(ib->ring);
++ struct amdgpu_sdma_instance *sdma = amdgpu_get_sdma_instance(ring);
+ u32 pad_count;
+ int i;
+
+@@ -1542,6 +1542,7 @@ static const struct amdgpu_ring_funcs sdma_v3_0_ring_funcs = {
+ .test_ring = sdma_v3_0_ring_test_ring,
+ .test_ib = sdma_v3_0_ring_test_ib,
+ .insert_nop = sdma_v3_0_ring_insert_nop,
++ .pad_ib = sdma_v3_0_ring_pad_ib,
+ };
+
+ static void sdma_v3_0_set_ring_funcs(struct amdgpu_device *adev)
+@@ -1639,7 +1640,6 @@ static const struct amdgpu_vm_pte_funcs sdma_v3_0_vm_pte_funcs = {
+ .copy_pte = sdma_v3_0_vm_copy_pte,
+ .write_pte = sdma_v3_0_vm_write_pte,
+ .set_pte_pde = sdma_v3_0_vm_set_pte_pde,
+- .pad_ib = sdma_v3_0_vm_pad_ib,
+ };
+
+ static void sdma_v3_0_set_vm_pte_funcs(struct amdgpu_device *adev)
+diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c
+index 5ef96d6..91080a5 100644
+--- a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c
++++ b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c
+@@ -864,6 +864,7 @@ static const struct amdgpu_ring_funcs uvd_v4_2_ring_funcs = {
+ .test_ring = uvd_v4_2_ring_test_ring,
+ .test_ib = uvd_v4_2_ring_test_ib,
+ .insert_nop = amdgpu_ring_insert_nop,
++ .pad_ib = amdgpu_ring_generic_pad_ib,
+ };
+
+ static void uvd_v4_2_set_ring_funcs(struct amdgpu_device *adev)
+diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c
+index 7d67772..1e8476a 100644
+--- a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c
+@@ -805,6 +805,7 @@ static const struct amdgpu_ring_funcs uvd_v5_0_ring_funcs = {
+ .test_ring = uvd_v5_0_ring_test_ring,
+ .test_ib = uvd_v5_0_ring_test_ib,
+ .insert_nop = amdgpu_ring_insert_nop,
++ .pad_ib = amdgpu_ring_generic_pad_ib,
+ };
+
+ static void uvd_v5_0_set_ring_funcs(struct amdgpu_device *adev)
+diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
+index 2ef8150..e55b040 100644
+--- a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
+@@ -1041,6 +1041,7 @@ static const struct amdgpu_ring_funcs uvd_v6_0_ring_funcs = {
+ .test_ring = uvd_v6_0_ring_test_ring,
+ .test_ib = uvd_v6_0_ring_test_ib,
+ .insert_nop = amdgpu_ring_insert_nop,
++ .pad_ib = amdgpu_ring_generic_pad_ib,
+ };
+
+ static void uvd_v6_0_set_ring_funcs(struct amdgpu_device *adev)
+diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c b/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c
+index a4bfee2..c7e885b 100644
+--- a/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c
+@@ -645,6 +645,7 @@ static const struct amdgpu_ring_funcs vce_v2_0_ring_funcs = {
+ .test_ring = amdgpu_vce_ring_test_ring,
+ .test_ib = amdgpu_vce_ring_test_ib,
+ .insert_nop = amdgpu_ring_insert_nop,
++ .pad_ib = amdgpu_ring_generic_pad_ib,
+ };
+
+ static void vce_v2_0_set_ring_funcs(struct amdgpu_device *adev)
+diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
+index c438c7e..ce468ee 100644
+--- a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
+@@ -765,6 +765,7 @@ static const struct amdgpu_ring_funcs vce_v3_0_ring_funcs = {
+ .test_ring = amdgpu_vce_ring_test_ring,
+ .test_ib = amdgpu_vce_ring_test_ib,
+ .insert_nop = amdgpu_ring_insert_nop,
++ .pad_ib = amdgpu_ring_generic_pad_ib,
+ };
+
+ static void vce_v3_0_set_ring_funcs(struct amdgpu_device *adev)
+--
+2.7.4
+