drm/amdgpu: separate PASID mapping from VM flush v2
authorChristian König <christian.koenig@amd.com>
Sun, 4 Feb 2018 09:32:35 +0000 (10:32 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 19 Feb 2018 19:20:18 +0000 (14:20 -0500)
Stuffing the PASID mapping into the VM flush isn't flexible enough since
the PASID mapping changes not as often as we need a VM flush.

v2: add missing use of gmc_v7_0_emit_pasid_mapping

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>
22 files changed:
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
drivers/gpu/drm/amd/amdgpu/cik_sdma.c
drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
drivers/gpu/drm/amd/amdgpu/si_dma.c
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
drivers/gpu/drm/amd/amdgpu/vce_v4_0.c
drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c

index 44cf4b9a57034f10a435a08c417cfd6309fbdf12..c6123e58658919447dea68a6e435b4cf551a35d9 100644 (file)
@@ -1774,7 +1774,8 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring)
 #define amdgpu_asic_flush_hdp(adev, r) (adev)->asic_funcs->flush_hdp((adev), (r))
 #define amdgpu_asic_invalidate_hdp(adev, r) (adev)->asic_funcs->invalidate_hdp((adev), (r))
 #define amdgpu_gmc_flush_gpu_tlb(adev, vmid) (adev)->gmc.gmc_funcs->flush_gpu_tlb((adev), (vmid))
-#define amdgpu_gmc_emit_flush_gpu_tlb(r, vmid, pasid, addr) (r)->adev->gmc.gmc_funcs->emit_flush_gpu_tlb((r), (vmid), (pasid), (addr))
+#define amdgpu_gmc_emit_flush_gpu_tlb(r, vmid, addr) (r)->adev->gmc.gmc_funcs->emit_flush_gpu_tlb((r), (vmid), (addr))
+#define amdgpu_gmc_emit_pasid_mapping(r, vmid, pasid) (r)->adev->gmc.gmc_funcs->emit_pasid_mapping((r), (vmid), (pasid))
 #define amdgpu_gmc_set_pte_pde(adev, pt, idx, addr, flags) (adev)->gmc.gmc_funcs->set_pte_pde((adev), (pt), (idx), (addr), (flags))
 #define amdgpu_gmc_get_vm_pde(adev, level, dst, flags) (adev)->gmc.gmc_funcs->get_vm_pde((adev), (level), (dst), (flags))
 #define amdgpu_gmc_get_pte_flags(adev, flags) (adev)->gmc.gmc_funcs->get_vm_pte_flags((adev),(flags))
@@ -1789,7 +1790,7 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring)
 #define amdgpu_ring_set_wptr(r) (r)->funcs->set_wptr((r))
 #define amdgpu_ring_emit_ib(r, ib, vmid, c) (r)->funcs->emit_ib((r), (ib), (vmid), (c))
 #define amdgpu_ring_emit_pipeline_sync(r) (r)->funcs->emit_pipeline_sync((r))
-#define amdgpu_ring_emit_vm_flush(r, vmid, pasid, addr) (r)->funcs->emit_vm_flush((r), (vmid), (pasid), (addr))
+#define amdgpu_ring_emit_vm_flush(r, vmid, addr) (r)->funcs->emit_vm_flush((r), (vmid), (addr))
 #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))
index b3d1bd2f51cf0a2286f8da70adda0a96f8415421..893c2490b7836bc5220ff1f8636a132b12df7922 100644 (file)
@@ -54,7 +54,10 @@ struct amdgpu_gmc_funcs {
                              uint32_t vmid);
        /* flush the vm tlb via ring */
        uint64_t (*emit_flush_gpu_tlb)(struct amdgpu_ring *ring, unsigned vmid,
-                                      unsigned pasid, uint64_t pd_addr);
+                                      uint64_t pd_addr);
+       /* Change the VMID -> PASID mapping */
+       void (*emit_pasid_mapping)(struct amdgpu_ring *ring, unsigned vmid,
+                                  unsigned pasid);
        /* write pte/pde updates using the cpu */
        int (*set_pte_pde)(struct amdgpu_device *adev,
                           void *cpu_pt_addr, /* cpu addr of page table */
index 0759768556517f7bfd99c182eb82186737222e41..1d0d250cbfdfa5cb4b7ab24e6e3998d17bb1ca17 100644 (file)
@@ -126,7 +126,7 @@ struct amdgpu_ring_funcs {
                           uint64_t seq, unsigned flags);
        void (*emit_pipeline_sync)(struct amdgpu_ring *ring);
        void (*emit_vm_flush)(struct amdgpu_ring *ring, unsigned vmid,
-                             unsigned pasid, uint64_t pd_addr);
+                             uint64_t pd_addr);
        void (*emit_hdp_flush)(struct amdgpu_ring *ring);
        void (*emit_gds_switch)(struct amdgpu_ring *ring, uint32_t vmid,
                                uint32_t gds_base, uint32_t gds_size,
index 0572d6072baafdbfecb965e37f2a8c761a67c52c..afa16a862eaabb128472770dc5886e63bcda5894 100644 (file)
@@ -612,8 +612,11 @@ int amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job, bool need_
                struct dma_fence *fence;
 
                trace_amdgpu_vm_flush(ring, job->vmid, job->vm_pd_addr);
-               amdgpu_ring_emit_vm_flush(ring, job->vmid, job->pasid,
-                                         job->vm_pd_addr);
+               amdgpu_ring_emit_vm_flush(ring, job->vmid, job->vm_pd_addr);
+               if (adev->gmc.gmc_funcs->emit_pasid_mapping &&
+                   ring->funcs->emit_wreg)
+                       amdgpu_gmc_emit_pasid_mapping(ring, job->vmid,
+                                                     job->pasid);
 
                r = amdgpu_fence_emit(ring, &fence);
                if (r)
index d78bf183488b998cf1072caeb0f59a93efcb80f8..69568cd1bb9943cf45abb683734fb2beeab282ee 100644 (file)
@@ -873,13 +873,12 @@ static void cik_sdma_ring_emit_pipeline_sync(struct amdgpu_ring *ring)
  * using sDMA (CIK).
  */
 static void cik_sdma_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                       unsigned vmid, unsigned pasid,
-                                       uint64_t pd_addr)
+                                       unsigned vmid, uint64_t pd_addr)
 {
        u32 extra_bits = (SDMA_POLL_REG_MEM_EXTRA_OP(0) |
                          SDMA_POLL_REG_MEM_EXTRA_FUNC(0)); /* always */
 
-       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        amdgpu_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_POLL_REG_MEM, 0, extra_bits));
        amdgpu_ring_write(ring, mmVM_INVALIDATE_REQUEST << 2);
index 3517fd9e11c97ab2e09ccefe1b9b9079d6050d01..0fff5b8cd318a6f46b9a59b9f07c0d38b482b8fa 100644 (file)
@@ -2326,12 +2326,11 @@ static void gfx_v6_0_ring_emit_pipeline_sync(struct amdgpu_ring *ring)
 }
 
 static void gfx_v6_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                       unsigned vmid, unsigned pasid,
-                                       uint64_t pd_addr)
+                                       unsigned vmid, uint64_t pd_addr)
 {
        int usepfp = (ring->funcs->type == AMDGPU_RING_TYPE_GFX);
 
-       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        /* wait for the invalidate to complete */
        amdgpu_ring_write(ring, PACKET3(PACKET3_WAIT_REG_MEM, 5));
index 764e068fc2dd3d2649a6d452001e1d16147ac3e3..972d421caada9d03ada7d874254c3e17f7873be8 100644 (file)
@@ -3219,12 +3219,11 @@ static void gfx_v7_0_ring_emit_pipeline_sync(struct amdgpu_ring *ring)
  * using the CP (CIK).
  */
 static void gfx_v7_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                       unsigned vmid, unsigned pasid,
-                                       uint64_t pd_addr)
+                                       unsigned vmid, uint64_t pd_addr)
 {
        int usepfp = (ring->funcs->type == AMDGPU_RING_TYPE_GFX);
 
-       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        /* wait for the invalidate to complete */
        amdgpu_ring_write(ring, PACKET3(PACKET3_WAIT_REG_MEM, 5));
index 8a65b5327a024ac9a4d0a2461e46e089d94d73e6..27943e57681c5b8ffac85e21d86e456b2dd3c6d1 100644 (file)
@@ -6311,12 +6311,11 @@ static void gfx_v8_0_ring_emit_pipeline_sync(struct amdgpu_ring *ring)
 }
 
 static void gfx_v8_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                       unsigned vmid, unsigned pasid,
-                                       uint64_t pd_addr)
+                                       unsigned vmid, uint64_t pd_addr)
 {
        int usepfp = (ring->funcs->type == AMDGPU_RING_TYPE_GFX);
 
-       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        /* wait for the invalidate to complete */
        amdgpu_ring_write(ring, PACKET3(PACKET3_WAIT_REG_MEM, 5));
index f7363f821cff30c89d2c2826361b8579fb9434f2..848008ef46b888ce3df7fe1a883c0d899ee32d06 100644 (file)
@@ -3676,10 +3676,9 @@ static void gfx_v9_0_ring_emit_pipeline_sync(struct amdgpu_ring *ring)
 }
 
 static void gfx_v9_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                       unsigned vmid, unsigned pasid,
-                                       uint64_t pd_addr)
+                                       unsigned vmid, uint64_t pd_addr)
 {
-       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        /* compute doesn't have PFP */
        if (ring->funcs->type == AMDGPU_RING_TYPE_GFX) {
index 1945fe84218814675be5eabfe0dc2f763614716d..2c0ed9dd0c9113c600579222fa3244b3d088cfed 100644 (file)
@@ -363,8 +363,7 @@ static void gmc_v6_0_flush_gpu_tlb(struct amdgpu_device *adev, uint32_t vmid)
 }
 
 static uint64_t gmc_v6_0_emit_flush_gpu_tlb(struct amdgpu_ring *ring,
-                                           unsigned vmid, unsigned pasid,
-                                           uint64_t pd_addr)
+                                           unsigned vmid, uint64_t pd_addr)
 {
        uint32_t reg;
 
index 761def04f93f701ce11dd4cf64302a8036429320..4edd17059868c7ac6938e9b5e20dbb97e6a519d4 100644 (file)
@@ -436,8 +436,7 @@ static void gmc_v7_0_flush_gpu_tlb(struct amdgpu_device *adev, uint32_t vmid)
 }
 
 static uint64_t gmc_v7_0_emit_flush_gpu_tlb(struct amdgpu_ring *ring,
-                                           unsigned vmid, unsigned pasid,
-                                           uint64_t pd_addr)
+                                           unsigned vmid, uint64_t pd_addr)
 {
        uint32_t reg;
 
@@ -447,14 +446,18 @@ static uint64_t gmc_v7_0_emit_flush_gpu_tlb(struct amdgpu_ring *ring,
                reg = mmVM_CONTEXT8_PAGE_TABLE_BASE_ADDR + vmid - 8;
        amdgpu_ring_emit_wreg(ring, reg, pd_addr >> 12);
 
-       amdgpu_ring_emit_wreg(ring, mmIH_VMID_0_LUT + vmid, pasid);
-
        /* bits 0-15 are the VM contexts0-15 */
        amdgpu_ring_emit_wreg(ring, mmVM_INVALIDATE_REQUEST, 1 << vmid);
 
        return pd_addr;
 }
 
+static void gmc_v7_0_emit_pasid_mapping(struct amdgpu_ring *ring, unsigned vmid,
+                                       unsigned pasid)
+{
+       amdgpu_ring_emit_wreg(ring, mmIH_VMID_0_LUT + vmid, pasid);
+}
+
 /**
  * gmc_v7_0_set_pte_pde - update the page tables using MMIO
  *
@@ -1327,6 +1330,7 @@ static const struct amd_ip_funcs gmc_v7_0_ip_funcs = {
 static const struct amdgpu_gmc_funcs gmc_v7_0_gmc_funcs = {
        .flush_gpu_tlb = gmc_v7_0_flush_gpu_tlb,
        .emit_flush_gpu_tlb = gmc_v7_0_emit_flush_gpu_tlb,
+       .emit_pasid_mapping = gmc_v7_0_emit_pasid_mapping,
        .set_pte_pde = gmc_v7_0_set_pte_pde,
        .set_prt = gmc_v7_0_set_prt,
        .get_vm_pte_flags = gmc_v7_0_get_vm_pte_flags,
index 2489be7ad62b472406a5c1a77206ada7e46f4b1e..1e0ad0657e96a4eb346cbf754e90a648e67c5a15 100644 (file)
@@ -612,8 +612,7 @@ static void gmc_v8_0_flush_gpu_tlb(struct amdgpu_device *adev,
 }
 
 static uint64_t gmc_v8_0_emit_flush_gpu_tlb(struct amdgpu_ring *ring,
-                                           unsigned vmid, unsigned pasid,
-                                           uint64_t pd_addr)
+                                           unsigned vmid, uint64_t pd_addr)
 {
        uint32_t reg;
 
@@ -623,14 +622,18 @@ static uint64_t gmc_v8_0_emit_flush_gpu_tlb(struct amdgpu_ring *ring,
                reg = mmVM_CONTEXT8_PAGE_TABLE_BASE_ADDR + vmid - 8;
        amdgpu_ring_emit_wreg(ring, reg, pd_addr >> 12);
 
-       amdgpu_ring_emit_wreg(ring, mmIH_VMID_0_LUT + vmid, pasid);
-
        /* bits 0-15 are the VM contexts0-15 */
        amdgpu_ring_emit_wreg(ring, mmVM_INVALIDATE_REQUEST, 1 << vmid);
 
        return pd_addr;
 }
 
+static void gmc_v8_0_emit_pasid_mapping(struct amdgpu_ring *ring, unsigned vmid,
+                                       unsigned pasid)
+{
+       amdgpu_ring_emit_wreg(ring, mmIH_VMID_0_LUT + vmid, pasid);
+}
+
 /**
  * gmc_v8_0_set_pte_pde - update the page tables using MMIO
  *
@@ -1662,6 +1665,7 @@ static const struct amd_ip_funcs gmc_v8_0_ip_funcs = {
 static const struct amdgpu_gmc_funcs gmc_v8_0_gmc_funcs = {
        .flush_gpu_tlb = gmc_v8_0_flush_gpu_tlb,
        .emit_flush_gpu_tlb = gmc_v8_0_emit_flush_gpu_tlb,
+       .emit_pasid_mapping = gmc_v8_0_emit_pasid_mapping,
        .set_pte_pde = gmc_v8_0_set_pte_pde,
        .set_prt = gmc_v8_0_set_prt,
        .get_vm_pte_flags = gmc_v8_0_get_vm_pte_flags,
index d5b6d00d83a6a89f6920cdf91c95160c1f97f933..bc4bd5e7ac9424012e6f48ed8d86bb0978b3f16c 100644 (file)
@@ -368,17 +368,15 @@ static void gmc_v9_0_flush_gpu_tlb(struct amdgpu_device *adev,
 }
 
 static uint64_t gmc_v9_0_emit_flush_gpu_tlb(struct amdgpu_ring *ring,
-                                           unsigned vmid, unsigned pasid,
-                                           uint64_t pd_addr)
+                                           unsigned vmid, uint64_t pd_addr)
 {
        struct amdgpu_device *adev = ring->adev;
        struct amdgpu_vmhub *hub = &adev->vmhub[ring->funcs->vmhub];
        uint32_t req = gmc_v9_0_get_invalidate_req(vmid);
        uint64_t flags = AMDGPU_PTE_VALID;
        unsigned eng = ring->vm_inv_eng;
-       uint32_t reg;
 
-       amdgpu_gmc_get_vm_pde(ring->adev, -1, &pd_addr, &flags);
+       amdgpu_gmc_get_vm_pde(adev, -1, &pd_addr, &flags);
        pd_addr |= flags;
 
        amdgpu_ring_emit_wreg(ring, hub->ctx0_ptb_addr_lo32 + (2 * vmid),
@@ -387,13 +385,6 @@ static uint64_t gmc_v9_0_emit_flush_gpu_tlb(struct amdgpu_ring *ring,
        amdgpu_ring_emit_wreg(ring, hub->ctx0_ptb_addr_hi32 + (2 * vmid),
                              upper_32_bits(pd_addr));
 
-       if (ring->funcs->vmhub == AMDGPU_GFXHUB)
-               reg = SOC15_REG_OFFSET(OSSSYS, 0, mmIH_VMID_0_LUT) + vmid;
-       else
-               reg = SOC15_REG_OFFSET(OSSSYS, 0, mmIH_VMID_0_LUT_MM) + vmid;
-
-       amdgpu_ring_emit_wreg(ring, reg, pasid);
-
        amdgpu_ring_emit_wreg(ring, hub->vm_inv_eng0_req + eng, req);
 
        /* wait for the invalidate to complete */
@@ -403,6 +394,20 @@ static uint64_t gmc_v9_0_emit_flush_gpu_tlb(struct amdgpu_ring *ring,
        return pd_addr;
 }
 
+static void gmc_v9_0_emit_pasid_mapping(struct amdgpu_ring *ring, unsigned vmid,
+                                       unsigned pasid)
+{
+       struct amdgpu_device *adev = ring->adev;
+       uint32_t reg;
+
+       if (ring->funcs->vmhub == AMDGPU_GFXHUB)
+               reg = SOC15_REG_OFFSET(OSSSYS, 0, mmIH_VMID_0_LUT) + vmid;
+       else
+               reg = SOC15_REG_OFFSET(OSSSYS, 0, mmIH_VMID_0_LUT_MM) + vmid;
+
+       amdgpu_ring_emit_wreg(ring, reg, pasid);
+}
+
 /**
  * gmc_v9_0_set_pte_pde - update the page tables using MMIO
  *
@@ -529,6 +534,7 @@ static void gmc_v9_0_get_vm_pde(struct amdgpu_device *adev, int level,
 static const struct amdgpu_gmc_funcs gmc_v9_0_gmc_funcs = {
        .flush_gpu_tlb = gmc_v9_0_flush_gpu_tlb,
        .emit_flush_gpu_tlb = gmc_v9_0_emit_flush_gpu_tlb,
+       .emit_pasid_mapping = gmc_v9_0_emit_pasid_mapping,
        .set_pte_pde = gmc_v9_0_set_pte_pde,
        .get_vm_pte_flags = gmc_v9_0_get_vm_pte_flags,
        .get_vm_pde = gmc_v9_0_get_vm_pde
index 792774eee909649c49e61609280b5618eeed1c06..6ccc9d43a7b85b93b623c3236d16e51e7b6aa271 100644 (file)
@@ -852,10 +852,9 @@ static void sdma_v2_4_ring_emit_pipeline_sync(struct amdgpu_ring *ring)
  * using sDMA (VI).
  */
 static void sdma_v2_4_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                        unsigned vmid, unsigned pasid,
-                                        uint64_t pd_addr)
+                                        unsigned vmid, uint64_t pd_addr)
 {
-       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        /* wait for flush */
        amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_POLL_REGMEM) |
index 5680ced693599349fcd9380730940916e8038d0d..0c2b12ec0e9fe675d6e9e67bf08aec5db7374476 100644 (file)
@@ -1117,10 +1117,9 @@ static void sdma_v3_0_ring_emit_pipeline_sync(struct amdgpu_ring *ring)
  * using sDMA (VI).
  */
 static void sdma_v3_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                        unsigned vmid, unsigned pasid,
-                                        uint64_t pd_addr)
+                                        unsigned vmid, uint64_t pd_addr)
 {
-       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        /* wait for flush */
        amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_POLL_REGMEM) |
index ce599fd244129ef8699fa1e58075a3d6afbd228b..3d5385dda34cf31ec327d6f7475a84fc71fab0e2 100644 (file)
@@ -1123,10 +1123,9 @@ static void sdma_v4_0_ring_emit_pipeline_sync(struct amdgpu_ring *ring)
  * using sDMA (VEGA10).
  */
 static void sdma_v4_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                        unsigned vmid, unsigned pasid,
-                                        uint64_t pd_addr)
+                                        unsigned vmid, uint64_t pd_addr)
 {
-       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 }
 
 static void sdma_v4_0_ring_emit_wreg(struct amdgpu_ring *ring,
index 2db5bfba771e16edf091f82b4c345f54c653d31b..acbf5afa4f38c050c589afd8b0f87086fd9cf18b 100644 (file)
@@ -460,10 +460,9 @@ static void si_dma_ring_emit_pipeline_sync(struct amdgpu_ring *ring)
  * using sDMA (VI).
  */
 static void si_dma_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                     unsigned vmid, unsigned pasid,
-                                     uint64_t pd_addr)
+                                     unsigned vmid, uint64_t pd_addr)
 {
-       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        /* wait for invalidate to complete */
        amdgpu_ring_write(ring, DMA_PACKET(DMA_PACKET_POLL_REG_MEM, 0, 0, 0, 0));
index 0f192ab712051ad0b4b929f0de70bba684fd689a..a3e64e22c93cb2a161847ac29bc632fc2343ef88 100644 (file)
@@ -1058,10 +1058,9 @@ static void uvd_v6_0_ring_emit_wreg(struct amdgpu_ring *ring,
 }
 
 static void uvd_v6_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                       unsigned vmid, unsigned pasid,
-                                       uint64_t pd_addr)
+                                       unsigned vmid, uint64_t pd_addr)
 {
-       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        amdgpu_ring_write(ring, PACKET0(mmUVD_GPCOM_VCPU_DATA0, 0));
        amdgpu_ring_write(ring, mmVM_INVALIDATE_REQUEST << 2);
@@ -1107,8 +1106,7 @@ static void uvd_v6_0_enc_ring_insert_end(struct amdgpu_ring *ring)
 }
 
 static void uvd_v6_0_enc_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                           unsigned int vmid, unsigned pasid,
-                                           uint64_t pd_addr)
+                                           unsigned int vmid, uint64_t pd_addr)
 {
        amdgpu_ring_write(ring, HEVC_ENC_CMD_UPDATE_PTB);
        amdgpu_ring_write(ring, vmid);
index bf16440e725832ffb60f320516ffbc1e0117f4a0..e54cc3ca23034826a76d8d85ac672e24ddc32437 100644 (file)
@@ -1261,13 +1261,12 @@ static void uvd_v7_0_ring_emit_reg_wait(struct amdgpu_ring *ring, uint32_t reg,
 }
 
 static void uvd_v7_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                       unsigned vmid, unsigned pasid,
-                                       uint64_t pd_addr)
+                                       unsigned vmid, uint64_t pd_addr)
 {
        struct amdgpu_vmhub *hub = &ring->adev->vmhub[ring->funcs->vmhub];
        uint32_t data0, data1, mask;
 
-       pd_addr = amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       pd_addr = amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        /* wait for reg writes */
        data0 = hub->ctx0_ptb_addr_lo32 + vmid * 2;
@@ -1302,12 +1301,11 @@ static void uvd_v7_0_enc_ring_emit_reg_wait(struct amdgpu_ring *ring,
 }
 
 static void uvd_v7_0_enc_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                           unsigned int vmid, unsigned pasid,
-                                           uint64_t pd_addr)
+                                           unsigned int vmid, uint64_t pd_addr)
 {
        struct amdgpu_vmhub *hub = &ring->adev->vmhub[ring->funcs->vmhub];
 
-       pd_addr = amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       pd_addr = amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        /* wait for reg writes */
        uvd_v7_0_enc_ring_emit_reg_wait(ring, hub->ctx0_ptb_addr_lo32 + vmid * 2,
index 6d616015085bd410f19c6085137d24ab33d2c907..428d1928e44e2e34df7844301582f67e11cddcf4 100644 (file)
@@ -844,8 +844,7 @@ static void vce_v3_0_ring_emit_ib(struct amdgpu_ring *ring,
 }
 
 static void vce_v3_0_emit_vm_flush(struct amdgpu_ring *ring,
-                                  unsigned int vmid, unsigned pasid,
-                                  uint64_t pd_addr)
+                                  unsigned int vmid, uint64_t pd_addr)
 {
        amdgpu_ring_write(ring, VCE_CMD_UPDATE_PTB);
        amdgpu_ring_write(ring, vmid);
index 22c2067bd8495317d21f9b1b2fa638299f5ad68c..2329b310ccf2259f3c831f18b18e726fd6b64ddc 100755 (executable)
@@ -975,12 +975,11 @@ static void vce_v4_0_emit_reg_wait(struct amdgpu_ring *ring, uint32_t reg,
 }
 
 static void vce_v4_0_emit_vm_flush(struct amdgpu_ring *ring,
-                                  unsigned int vmid, unsigned pasid,
-                                  uint64_t pd_addr)
+                                  unsigned int vmid, uint64_t pd_addr)
 {
        struct amdgpu_vmhub *hub = &ring->adev->vmhub[ring->funcs->vmhub];
 
-       pd_addr = amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       pd_addr = amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        /* wait for reg writes */
        vce_v4_0_emit_reg_wait(ring, hub->ctx0_ptb_addr_lo32 + vmid * 2,
index d9f597c36b63dfec4790c5bb9e11bf159b6606bd..fdf4ac9313cf314ad84f673fa9bd42be47debf57 100644 (file)
@@ -859,13 +859,12 @@ static void vcn_v1_0_dec_ring_emit_reg_wait(struct amdgpu_ring *ring,
 }
 
 static void vcn_v1_0_dec_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                           unsigned vmid, unsigned pasid,
-                                           uint64_t pd_addr)
+                                           unsigned vmid, uint64_t pd_addr)
 {
        struct amdgpu_vmhub *hub = &ring->adev->vmhub[ring->funcs->vmhub];
        uint32_t data0, data1, mask;
 
-       pd_addr = amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       pd_addr = amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        /* wait for register write */
        data0 = hub->ctx0_ptb_addr_lo32 + vmid * 2;
@@ -997,12 +996,11 @@ static void vcn_v1_0_enc_ring_emit_reg_wait(struct amdgpu_ring *ring,
 }
 
 static void vcn_v1_0_enc_ring_emit_vm_flush(struct amdgpu_ring *ring,
-                                           unsigned int vmid, unsigned pasid,
-                                           uint64_t pd_addr)
+                                           unsigned int vmid, uint64_t pd_addr)
 {
        struct amdgpu_vmhub *hub = &ring->adev->vmhub[ring->funcs->vmhub];
 
-       pd_addr = amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pasid, pd_addr);
+       pd_addr = amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
        /* wait for reg writes */
        vcn_v1_0_enc_ring_emit_reg_wait(ring, hub->ctx0_ptb_addr_lo32 + vmid * 2,