Commit 9a94f5a5 authored by Christian König's avatar Christian König Committed by Alex Deucher

drm/amdgpu: move adjust adjust_mc_addr into the GFX9 vm_flush functions

That GFX9 needs a PDE in the registers is entirely GFX9 specific.
Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarChunming Zhou <david1.zhou@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 60bfcd31
...@@ -759,11 +759,10 @@ int amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job) ...@@ -759,11 +759,10 @@ int amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job)
patch_offset = amdgpu_ring_init_cond_exec(ring); patch_offset = amdgpu_ring_init_cond_exec(ring);
if (ring->funcs->emit_vm_flush && vm_flush_needed) { if (ring->funcs->emit_vm_flush && vm_flush_needed) {
u64 pd_addr = amdgpu_vm_adjust_mc_addr(adev, job->vm_pd_addr);
struct dma_fence *fence; struct dma_fence *fence;
trace_amdgpu_vm_flush(ring, job->vm_id, pd_addr); trace_amdgpu_vm_flush(ring, job->vm_id, job->vm_pd_addr);
amdgpu_ring_emit_vm_flush(ring, job->vm_id, pd_addr); amdgpu_ring_emit_vm_flush(ring, job->vm_id, job->vm_pd_addr);
r = amdgpu_fence_emit(ring, &fence); r = amdgpu_fence_emit(ring, &fence);
if (r) if (r)
......
...@@ -3771,6 +3771,7 @@ static void gfx_v9_0_ring_emit_vm_flush(struct amdgpu_ring *ring, ...@@ -3771,6 +3771,7 @@ static void gfx_v9_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id); uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id);
unsigned eng = ring->vm_inv_eng; unsigned eng = ring->vm_inv_eng;
pd_addr = ring->adev->gart.gart_funcs->adjust_mc_addr(ring->adev, pd_addr);
pd_addr = pd_addr | 0x1; /* valid bit */ pd_addr = pd_addr | 0x1; /* valid bit */
/* now only use physical base address of PDE and valid */ /* now only use physical base address of PDE and valid */
BUG_ON(pd_addr & 0xFFFF00000000003EULL); BUG_ON(pd_addr & 0xFFFF00000000003EULL);
......
...@@ -1143,6 +1143,7 @@ static void sdma_v4_0_ring_emit_vm_flush(struct amdgpu_ring *ring, ...@@ -1143,6 +1143,7 @@ static void sdma_v4_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id); uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id);
unsigned eng = ring->vm_inv_eng; unsigned eng = ring->vm_inv_eng;
pd_addr = ring->adev->gart.gart_funcs->adjust_mc_addr(ring->adev, pd_addr);
pd_addr = pd_addr | 0x1; /* valid bit */ pd_addr = pd_addr | 0x1; /* valid bit */
/* now only use physical base address of PDE and valid */ /* now only use physical base address of PDE and valid */
BUG_ON(pd_addr & 0xFFFF00000000003EULL); BUG_ON(pd_addr & 0xFFFF00000000003EULL);
......
...@@ -1316,6 +1316,7 @@ static void uvd_v7_0_ring_emit_vm_flush(struct amdgpu_ring *ring, ...@@ -1316,6 +1316,7 @@ static void uvd_v7_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
uint32_t data0, data1, mask; uint32_t data0, data1, mask;
unsigned eng = ring->vm_inv_eng; unsigned eng = ring->vm_inv_eng;
pd_addr = ring->adev->gart.gart_funcs->adjust_mc_addr(ring->adev, pd_addr);
pd_addr = pd_addr | 0x1; /* valid bit */ pd_addr = pd_addr | 0x1; /* valid bit */
/* now only use physical base address of PDE and valid */ /* now only use physical base address of PDE and valid */
BUG_ON(pd_addr & 0xFFFF00000000003EULL); BUG_ON(pd_addr & 0xFFFF00000000003EULL);
...@@ -1357,6 +1358,7 @@ static void uvd_v7_0_enc_ring_emit_vm_flush(struct amdgpu_ring *ring, ...@@ -1357,6 +1358,7 @@ static void uvd_v7_0_enc_ring_emit_vm_flush(struct amdgpu_ring *ring,
uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id); uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id);
unsigned eng = ring->vm_inv_eng; unsigned eng = ring->vm_inv_eng;
pd_addr = ring->adev->gart.gart_funcs->adjust_mc_addr(ring->adev, pd_addr);
pd_addr = pd_addr | 0x1; /* valid bit */ pd_addr = pd_addr | 0x1; /* valid bit */
/* now only use physical base address of PDE and valid */ /* now only use physical base address of PDE and valid */
BUG_ON(pd_addr & 0xFFFF00000000003EULL); BUG_ON(pd_addr & 0xFFFF00000000003EULL);
......
...@@ -926,6 +926,7 @@ static void vce_v4_0_emit_vm_flush(struct amdgpu_ring *ring, ...@@ -926,6 +926,7 @@ static void vce_v4_0_emit_vm_flush(struct amdgpu_ring *ring,
uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id); uint32_t req = ring->adev->gart.gart_funcs->get_invalidate_req(vm_id);
unsigned eng = ring->vm_inv_eng; unsigned eng = ring->vm_inv_eng;
pd_addr = ring->adev->gart.gart_funcs->adjust_mc_addr(ring->adev, pd_addr);
pd_addr = pd_addr | 0x1; /* valid bit */ pd_addr = pd_addr | 0x1; /* valid bit */
/* now only use physical base address of PDE and valid */ /* now only use physical base address of PDE and valid */
BUG_ON(pd_addr & 0xFFFF00000000003EULL); BUG_ON(pd_addr & 0xFFFF00000000003EULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment