aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2017-05-12 09:39:39 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-05-31 14:16:35 -0400
commitb116632557a565dfdc2b7e5f8d67661a3ac3f835 (patch)
tree4bc4d7be14ac2e5ac8090aa89de59e4f693410b2 /drivers/gpu/drm/amd
parente8835e0e43ecf0eba2e2810bee04ff39dabb8996 (diff)
drm/amdgpu: cleanup adjust_mc_addr handling v4
Rename adjust_mc_addr to get_vm_pde and check the address bits in one place. v2: handle vcn as well, keep setting the valid bit manually, add a BUG_ON() for GMC v6, v7 and v8 as well. v3: handle vcn_v1_0_enc_ring_emit_vm_flush as well. v4: fix the BUG_ON mask for GFX6-8 Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu.h5
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c26
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c6
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c7
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c9
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c9
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c10
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c6
-rw-r--r--drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c12
-rw-r--r--drivers/gpu/drm/amd/amdgpu/vce_v4_0.c6
-rw-r--r--drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c12
11 files changed, 55 insertions, 53 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index a3576dbefa0f..abf5a58edc82 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -308,8 +308,8 @@ struct amdgpu_gart_funcs {
308 /* set pte flags based per asic */ 308 /* set pte flags based per asic */
309 uint64_t (*get_vm_pte_flags)(struct amdgpu_device *adev, 309 uint64_t (*get_vm_pte_flags)(struct amdgpu_device *adev,
310 uint32_t flags); 310 uint32_t flags);
311 /* adjust mc addr in fb for APU case */ 311 /* get the pde for a given mc addr */
312 u64 (*adjust_mc_addr)(struct amdgpu_device *adev, u64 addr); 312 u64 (*get_vm_pde)(struct amdgpu_device *adev, u64 addr);
313 uint32_t (*get_invalidate_req)(unsigned int vm_id); 313 uint32_t (*get_invalidate_req)(unsigned int vm_id);
314}; 314};
315 315
@@ -1813,6 +1813,7 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring)
1813#define amdgpu_asic_get_config_memsize(adev) (adev)->asic_funcs->get_config_memsize((adev)) 1813#define amdgpu_asic_get_config_memsize(adev) (adev)->asic_funcs->get_config_memsize((adev))
1814#define amdgpu_gart_flush_gpu_tlb(adev, vmid) (adev)->gart.gart_funcs->flush_gpu_tlb((adev), (vmid)) 1814#define amdgpu_gart_flush_gpu_tlb(adev, vmid) (adev)->gart.gart_funcs->flush_gpu_tlb((adev), (vmid))
1815#define amdgpu_gart_set_pte_pde(adev, pt, idx, addr, flags) (adev)->gart.gart_funcs->set_pte_pde((adev), (pt), (idx), (addr), (flags)) 1815#define amdgpu_gart_set_pte_pde(adev, pt, idx, addr, flags) (adev)->gart.gart_funcs->set_pte_pde((adev), (pt), (idx), (addr), (flags))
1816#define amdgpu_gart_get_vm_pde(adev, addr) (adev)->gart.gart_funcs->get_vm_pde((adev), (addr))
1816#define amdgpu_vm_copy_pte(adev, ib, pe, src, count) ((adev)->vm_manager.vm_pte_funcs->copy_pte((ib), (pe), (src), (count))) 1817#define amdgpu_vm_copy_pte(adev, ib, pe, src, count) ((adev)->vm_manager.vm_pte_funcs->copy_pte((ib), (pe), (src), (count)))
1817#define amdgpu_vm_write_pte(adev, ib, pe, value, count, incr) ((adev)->vm_manager.vm_pte_funcs->write_pte((ib), (pe), (value), (count), (incr))) 1818#define amdgpu_vm_write_pte(adev, ib, pe, value, count, incr) ((adev)->vm_manager.vm_pte_funcs->write_pte((ib), (pe), (value), (count), (incr)))
1818#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))) 1819#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)))
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 3ecde81821ad..c11903257b94 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -682,16 +682,6 @@ static bool amdgpu_vm_ring_has_compute_vm_bug(struct amdgpu_ring *ring)
682 return false; 682 return false;
683} 683}
684 684
685static u64 amdgpu_vm_adjust_mc_addr(struct amdgpu_device *adev, u64 mc_addr)
686{
687 u64 addr = mc_addr;
688
689 if (adev->gart.gart_funcs->adjust_mc_addr)
690 addr = adev->gart.gart_funcs->adjust_mc_addr(adev, addr);
691
692 return addr;
693}
694
695bool amdgpu_vm_need_pipeline_sync(struct amdgpu_ring *ring, 685bool amdgpu_vm_need_pipeline_sync(struct amdgpu_ring *ring,
696 struct amdgpu_job *job) 686 struct amdgpu_job *job)
697{ 687{
@@ -1033,18 +1023,18 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev,
1033 (count == AMDGPU_VM_MAX_UPDATE_SIZE)) { 1023 (count == AMDGPU_VM_MAX_UPDATE_SIZE)) {
1034 1024
1035 if (count) { 1025 if (count) {
1036 uint64_t pt_addr = 1026 uint64_t entry;
1037 amdgpu_vm_adjust_mc_addr(adev, last_pt);
1038 1027
1028 entry = amdgpu_gart_get_vm_pde(adev, last_pt);
1039 if (shadow) 1029 if (shadow)
1040 amdgpu_vm_do_set_ptes(&params, 1030 amdgpu_vm_do_set_ptes(&params,
1041 last_shadow, 1031 last_shadow,
1042 pt_addr, count, 1032 entry, count,
1043 incr, 1033 incr,
1044 AMDGPU_PTE_VALID); 1034 AMDGPU_PTE_VALID);
1045 1035
1046 amdgpu_vm_do_set_ptes(&params, last_pde, 1036 amdgpu_vm_do_set_ptes(&params, last_pde,
1047 pt_addr, count, incr, 1037 entry, count, incr,
1048 AMDGPU_PTE_VALID); 1038 AMDGPU_PTE_VALID);
1049 } 1039 }
1050 1040
@@ -1058,13 +1048,15 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev,
1058 } 1048 }
1059 1049
1060 if (count) { 1050 if (count) {
1061 uint64_t pt_addr = amdgpu_vm_adjust_mc_addr(adev, last_pt); 1051 uint64_t entry;
1052
1053 entry = amdgpu_gart_get_vm_pde(adev, last_pt);
1062 1054
1063 if (vm->root.bo->shadow) 1055 if (vm->root.bo->shadow)
1064 amdgpu_vm_do_set_ptes(&params, last_shadow, pt_addr, 1056 amdgpu_vm_do_set_ptes(&params, last_shadow, entry,
1065 count, incr, AMDGPU_PTE_VALID); 1057 count, incr, AMDGPU_PTE_VALID);
1066 1058
1067 amdgpu_vm_do_set_ptes(&params, last_pde, pt_addr, 1059 amdgpu_vm_do_set_ptes(&params, last_pde, entry,
1068 count, incr, AMDGPU_PTE_VALID); 1060 count, incr, AMDGPU_PTE_VALID);
1069 } 1061 }
1070 1062
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
index ec891b3f4a82..f97fc0dafc36 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
@@ -3832,10 +3832,8 @@ static void gfx_v9_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
3832 uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id); 3832 uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id);
3833 unsigned eng = ring->vm_inv_eng; 3833 unsigned eng = ring->vm_inv_eng;
3834 3834
3835 pd_addr = ring->adev->gart.gart_funcs->adjust_mc_addr(ring->adev, pd_addr); 3835 pd_addr = amdgpu_gart_get_vm_pde(ring->adev, pd_addr);
3836 pd_addr = pd_addr | 0x1; /* valid bit */ 3836 pd_addr |= AMDGPU_PTE_VALID;
3837 /* now only use physical base address of PDE and valid */
3838 BUG_ON(pd_addr & 0xFFFF00000000003EULL);
3839 3837
3840 gfx_v9_0_write_data_to_reg(ring, usepfp, true, 3838 gfx_v9_0_write_data_to_reg(ring, usepfp, true,
3841 hub->ctx0_ptb_addr_lo32 + (2 * vm_id), 3839 hub->ctx0_ptb_addr_lo32 + (2 * vm_id),
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
index d07ec13b42a8..569828ced31d 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
@@ -395,6 +395,12 @@ static uint64_t gmc_v6_0_get_vm_pte_flags(struct amdgpu_device *adev,
395 return pte_flag; 395 return pte_flag;
396} 396}
397 397
398static uint64_t gmc_v6_0_get_vm_pde(struct amdgpu_device *adev, uint64_t addr)
399{
400 BUG_ON(addr & 0xFFFFFF0000000FFFULL);
401 return addr;
402}
403
398static void gmc_v6_0_set_fault_enable_default(struct amdgpu_device *adev, 404static void gmc_v6_0_set_fault_enable_default(struct amdgpu_device *adev,
399 bool value) 405 bool value)
400{ 406{
@@ -1121,6 +1127,7 @@ static const struct amdgpu_gart_funcs gmc_v6_0_gart_funcs = {
1121 .flush_gpu_tlb = gmc_v6_0_gart_flush_gpu_tlb, 1127 .flush_gpu_tlb = gmc_v6_0_gart_flush_gpu_tlb,
1122 .set_pte_pde = gmc_v6_0_gart_set_pte_pde, 1128 .set_pte_pde = gmc_v6_0_gart_set_pte_pde,
1123 .set_prt = gmc_v6_0_set_prt, 1129 .set_prt = gmc_v6_0_set_prt,
1130 .get_vm_pde = gmc_v6_0_get_vm_pde,
1124 .get_vm_pte_flags = gmc_v6_0_get_vm_pte_flags 1131 .get_vm_pte_flags = gmc_v6_0_get_vm_pte_flags
1125}; 1132};
1126 1133
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
index 967505bd2fc8..8b39d9a4f801 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
@@ -472,6 +472,12 @@ static uint64_t gmc_v7_0_get_vm_pte_flags(struct amdgpu_device *adev,
472 return pte_flag; 472 return pte_flag;
473} 473}
474 474
475static uint64_t gmc_v7_0_get_vm_pde(struct amdgpu_device *adev, uint64_t addr)
476{
477 BUG_ON(addr & 0xFFFFFF0000000FFFULL);
478 return addr;
479}
480
475/** 481/**
476 * gmc_v8_0_set_fault_enable_default - update VM fault handling 482 * gmc_v8_0_set_fault_enable_default - update VM fault handling
477 * 483 *
@@ -1293,7 +1299,8 @@ static const struct amdgpu_gart_funcs gmc_v7_0_gart_funcs = {
1293 .flush_gpu_tlb = gmc_v7_0_gart_flush_gpu_tlb, 1299 .flush_gpu_tlb = gmc_v7_0_gart_flush_gpu_tlb,
1294 .set_pte_pde = gmc_v7_0_gart_set_pte_pde, 1300 .set_pte_pde = gmc_v7_0_gart_set_pte_pde,
1295 .set_prt = gmc_v7_0_set_prt, 1301 .set_prt = gmc_v7_0_set_prt,
1296 .get_vm_pte_flags = gmc_v7_0_get_vm_pte_flags 1302 .get_vm_pte_flags = gmc_v7_0_get_vm_pte_flags,
1303 .get_vm_pde = gmc_v7_0_get_vm_pde
1297}; 1304};
1298 1305
1299static const struct amdgpu_irq_src_funcs gmc_v7_0_irq_funcs = { 1306static const struct amdgpu_irq_src_funcs gmc_v7_0_irq_funcs = {
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
index 3b5ea0f52d89..73a9653b4e60 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
@@ -656,6 +656,12 @@ static uint64_t gmc_v8_0_get_vm_pte_flags(struct amdgpu_device *adev,
656 return pte_flag; 656 return pte_flag;
657} 657}
658 658
659static uint64_t gmc_v8_0_get_vm_pde(struct amdgpu_device *adev, uint64_t addr)
660{
661 BUG_ON(addr & 0xFFFFFF0000000FFFULL);
662 return addr;
663}
664
659/** 665/**
660 * gmc_v8_0_set_fault_enable_default - update VM fault handling 666 * gmc_v8_0_set_fault_enable_default - update VM fault handling
661 * 667 *
@@ -1612,7 +1618,8 @@ static const struct amdgpu_gart_funcs gmc_v8_0_gart_funcs = {
1612 .flush_gpu_tlb = gmc_v8_0_gart_flush_gpu_tlb, 1618 .flush_gpu_tlb = gmc_v8_0_gart_flush_gpu_tlb,
1613 .set_pte_pde = gmc_v8_0_gart_set_pte_pde, 1619 .set_pte_pde = gmc_v8_0_gart_set_pte_pde,
1614 .set_prt = gmc_v8_0_set_prt, 1620 .set_prt = gmc_v8_0_set_prt,
1615 .get_vm_pte_flags = gmc_v8_0_get_vm_pte_flags 1621 .get_vm_pte_flags = gmc_v8_0_get_vm_pte_flags,
1622 .get_vm_pde = gmc_v8_0_get_vm_pde
1616}; 1623};
1617 1624
1618static const struct amdgpu_irq_src_funcs gmc_v8_0_irq_funcs = { 1625static const struct amdgpu_irq_src_funcs gmc_v8_0_irq_funcs = {
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
index 19e10276e585..047b1a7d20b5 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
@@ -358,17 +358,19 @@ static uint64_t gmc_v9_0_get_vm_pte_flags(struct amdgpu_device *adev,
358 return pte_flag; 358 return pte_flag;
359} 359}
360 360
361static u64 gmc_v9_0_adjust_mc_addr(struct amdgpu_device *adev, u64 mc_addr) 361static u64 gmc_v9_0_get_vm_pde(struct amdgpu_device *adev, u64 addr)
362{ 362{
363 return adev->vm_manager.vram_base_offset + mc_addr - adev->mc.vram_start; 363 addr = adev->vm_manager.vram_base_offset + addr - adev->mc.vram_start;
364 BUG_ON(addr & 0xFFFF00000000003FULL);
365 return addr;
364} 366}
365 367
366static const struct amdgpu_gart_funcs gmc_v9_0_gart_funcs = { 368static const struct amdgpu_gart_funcs gmc_v9_0_gart_funcs = {
367 .flush_gpu_tlb = gmc_v9_0_gart_flush_gpu_tlb, 369 .flush_gpu_tlb = gmc_v9_0_gart_flush_gpu_tlb,
368 .set_pte_pde = gmc_v9_0_gart_set_pte_pde, 370 .set_pte_pde = gmc_v9_0_gart_set_pte_pde,
369 .get_vm_pte_flags = gmc_v9_0_get_vm_pte_flags,
370 .adjust_mc_addr = gmc_v9_0_adjust_mc_addr,
371 .get_invalidate_req = gmc_v9_0_get_invalidate_req, 371 .get_invalidate_req = gmc_v9_0_get_invalidate_req,
372 .get_vm_pte_flags = gmc_v9_0_get_vm_pte_flags,
373 .get_vm_pde = gmc_v9_0_get_vm_pde
372}; 374};
373 375
374static void gmc_v9_0_set_gart_funcs(struct amdgpu_device *adev) 376static void gmc_v9_0_set_gart_funcs(struct amdgpu_device *adev)
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
index 9cad3b118899..4a65697ccc94 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
@@ -1124,10 +1124,8 @@ static void sdma_v4_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
1124 uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id); 1124 uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id);
1125 unsigned eng = ring->vm_inv_eng; 1125 unsigned eng = ring->vm_inv_eng;
1126 1126
1127 pd_addr = ring->adev->gart.gart_funcs->adjust_mc_addr(ring->adev, pd_addr); 1127 pd_addr = amdgpu_gart_get_vm_pde(ring->adev, pd_addr);
1128 pd_addr = pd_addr | 0x1; /* valid bit */ 1128 pd_addr |= AMDGPU_PTE_VALID;
1129 /* now only use physical base address of PDE and valid */
1130 BUG_ON(pd_addr & 0xFFFF00000000003EULL);
1131 1129
1132 amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_SRBM_WRITE) | 1130 amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_SRBM_WRITE) |
1133 SDMA_PKT_SRBM_WRITE_HEADER_BYTE_EN(0xf)); 1131 SDMA_PKT_SRBM_WRITE_HEADER_BYTE_EN(0xf));
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
index 74e3f23ac5e0..dd9ec81f116d 100644
--- a/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
@@ -1316,10 +1316,8 @@ static void uvd_v7_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
1316 uint32_t data0, data1, mask; 1316 uint32_t data0, data1, mask;
1317 unsigned eng = ring->vm_inv_eng; 1317 unsigned eng = ring->vm_inv_eng;
1318 1318
1319 pd_addr = ring->adev->gart.gart_funcs->adjust_mc_addr(ring->adev, pd_addr); 1319 pd_addr = amdgpu_gart_get_vm_pde(ring->adev, pd_addr);
1320 pd_addr = pd_addr | 0x1; /* valid bit */ 1320 pd_addr |= AMDGPU_PTE_VALID;
1321 /* now only use physical base address of PDE and valid */
1322 BUG_ON(pd_addr & 0xFFFF00000000003EULL);
1323 1321
1324 data0 = (hub->ctx0_ptb_addr_hi32 + vm_id * 2) << 2; 1322 data0 = (hub->ctx0_ptb_addr_hi32 + vm_id * 2) << 2;
1325 data1 = upper_32_bits(pd_addr); 1323 data1 = upper_32_bits(pd_addr);
@@ -1358,10 +1356,8 @@ static void uvd_v7_0_enc_ring_emit_vm_flush(struct amdgpu_ring *ring,
1358 uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id); 1356 uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id);
1359 unsigned eng = ring->vm_inv_eng; 1357 unsigned eng = ring->vm_inv_eng;
1360 1358
1361 pd_addr = ring->adev->gart.gart_funcs->adjust_mc_addr(ring->adev, pd_addr); 1359 pd_addr = amdgpu_gart_get_vm_pde(ring->adev, pd_addr);
1362 pd_addr = pd_addr | 0x1; /* valid bit */ 1360 pd_addr |= AMDGPU_PTE_VALID;
1363 /* now only use physical base address of PDE and valid */
1364 BUG_ON(pd_addr & 0xFFFF00000000003EULL);
1365 1361
1366 amdgpu_ring_write(ring, HEVC_ENC_CMD_REG_WRITE); 1362 amdgpu_ring_write(ring, HEVC_ENC_CMD_REG_WRITE);
1367 amdgpu_ring_write(ring, (hub->ctx0_ptb_addr_hi32 + vm_id * 2) << 2); 1363 amdgpu_ring_write(ring, (hub->ctx0_ptb_addr_hi32 + vm_id * 2) << 2);
diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v4_0.c b/drivers/gpu/drm/amd/amdgpu/vce_v4_0.c
index 0012835e85c6..0b7fcc1b6c00 100644
--- a/drivers/gpu/drm/amd/amdgpu/vce_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/vce_v4_0.c
@@ -926,10 +926,8 @@ static void vce_v4_0_emit_vm_flush(struct amdgpu_ring *ring,
926 uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id); 926 uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id);
927 unsigned eng = ring->vm_inv_eng; 927 unsigned eng = ring->vm_inv_eng;
928 928
929 pd_addr = ring->adev->gart.gart_funcs->adjust_mc_addr(ring->adev, pd_addr); 929 pd_addr = amdgpu_gart_get_vm_pde(ring->adev, pd_addr);
930 pd_addr = pd_addr | 0x1; /* valid bit */ 930 pd_addr |= AMDGPU_PTE_VALID;
931 /* now only use physical base address of PDE and valid */
932 BUG_ON(pd_addr & 0xFFFF00000000003EULL);
933 931
934 amdgpu_ring_write(ring, VCE_CMD_REG_WRITE); 932 amdgpu_ring_write(ring, VCE_CMD_REG_WRITE);
935 amdgpu_ring_write(ring, (hub->ctx0_ptb_addr_hi32 + vm_id * 2) << 2); 933 amdgpu_ring_write(ring, (hub->ctx0_ptb_addr_hi32 + vm_id * 2) << 2);
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
index e8c8c78e389a..ec33e8fa83c1 100644
--- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
@@ -882,10 +882,8 @@ static void vcn_v1_0_dec_ring_emit_vm_flush(struct amdgpu_ring *ring,
882 uint32_t data0, data1, mask; 882 uint32_t data0, data1, mask;
883 unsigned eng = ring->vm_inv_eng; 883 unsigned eng = ring->vm_inv_eng;
884 884
885 pd_addr = ring->adev->gart.gart_funcs->adjust_mc_addr(ring->adev, pd_addr); 885 pd_addr = amdgpu_gart_get_vm_pde(ring->adev, pd_addr);
886 pd_addr = pd_addr | 0x1; /* valid bit */ 886 pd_addr |= AMDGPU_PTE_VALID;
887 /* now only use physical base address of PDE and valid */
888 BUG_ON(pd_addr & 0xFFFF00000000003EULL);
889 887
890 data0 = (hub->ctx0_ptb_addr_hi32 + vm_id * 2) << 2; 888 data0 = (hub->ctx0_ptb_addr_hi32 + vm_id * 2) << 2;
891 data1 = upper_32_bits(pd_addr); 889 data1 = upper_32_bits(pd_addr);
@@ -1015,10 +1013,8 @@ static void vcn_v1_0_enc_ring_emit_vm_flush(struct amdgpu_ring *ring,
1015 uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id); 1013 uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id);
1016 unsigned eng = ring->vm_inv_eng; 1014 unsigned eng = ring->vm_inv_eng;
1017 1015
1018 pd_addr = ring->adev->gart.gart_funcs->adjust_mc_addr(ring->adev, pd_addr); 1016 pd_addr = amdgpu_gart_get_vm_pde(ring->adev, pd_addr);
1019 pd_addr = pd_addr | 0x1; /* valid bit */ 1017 pd_addr |= AMDGPU_PTE_VALID;
1020 /* now only use physical base address of PDE and valid */
1021 BUG_ON(pd_addr & 0xFFFF00000000003EULL);
1022 1018
1023 amdgpu_ring_write(ring, VCN_ENC_CMD_REG_WRITE); 1019 amdgpu_ring_write(ring, VCN_ENC_CMD_REG_WRITE);
1024 amdgpu_ring_write(ring, 1020 amdgpu_ring_write(ring,