diff options
author | Christian König <christian.koenig@amd.com> | 2017-05-12 09:39:39 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-05-31 14:16:35 -0400 |
commit | b116632557a565dfdc2b7e5f8d67661a3ac3f835 (patch) | |
tree | 4bc4d7be14ac2e5ac8090aa89de59e4f693410b2 /drivers/gpu/drm/amd | |
parent | e8835e0e43ecf0eba2e2810bee04ff39dabb8996 (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.h | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 26 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 10 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vce_v4_0.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 12 |
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 | ||
685 | static 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 | |||
695 | bool amdgpu_vm_need_pipeline_sync(struct amdgpu_ring *ring, | 685 | bool 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(¶ms, | 1030 | amdgpu_vm_do_set_ptes(¶ms, |
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(¶ms, last_pde, | 1036 | amdgpu_vm_do_set_ptes(¶ms, 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(¶ms, last_shadow, pt_addr, | 1056 | amdgpu_vm_do_set_ptes(¶ms, last_shadow, entry, |
1065 | count, incr, AMDGPU_PTE_VALID); | 1057 | count, incr, AMDGPU_PTE_VALID); |
1066 | 1058 | ||
1067 | amdgpu_vm_do_set_ptes(¶ms, last_pde, pt_addr, | 1059 | amdgpu_vm_do_set_ptes(¶ms, 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 | ||
398 | static 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 | |||
398 | static void gmc_v6_0_set_fault_enable_default(struct amdgpu_device *adev, | 404 | static 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 | ||
475 | static 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 | ||
1299 | static const struct amdgpu_irq_src_funcs gmc_v7_0_irq_funcs = { | 1306 | static 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 | ||
659 | static 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 | ||
1618 | static const struct amdgpu_irq_src_funcs gmc_v8_0_irq_funcs = { | 1625 | static 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 | ||
361 | static u64 gmc_v9_0_adjust_mc_addr(struct amdgpu_device *adev, u64 mc_addr) | 361 | static 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 | ||
366 | static const struct amdgpu_gart_funcs gmc_v9_0_gart_funcs = { | 368 | static 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 | ||
374 | static void gmc_v9_0_set_gart_funcs(struct amdgpu_device *adev) | 376 | static 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, |