Ping? On Wed, Mar 12, 2025 at 1:57 PM Alex Deucher <alexander.deucher@xxxxxxx> wrote: > > This was leftover from MES bring up when we had MES > user queues in the kernel. It's no longer used so > remove it. > > Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 4 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 112 ++++++--------- > drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h | 14 -- > drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 22 +-- > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 +- > drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 84 +++--------- > drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c | 143 ++++--------------- > drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 67 ++------- > drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c | 4 - > drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c | 4 - > drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c | 4 - > drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c | 166 +++++++---------------- > drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c | 83 ++++-------- > drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c | 83 ++++-------- > drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c | 164 +++++++--------------- > 15 files changed, 259 insertions(+), 697 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c > index eac96a3d8c6c3..6efa0c5717dcf 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c > @@ -163,12 +163,12 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned int num_ibs, > init_shadow = false; > } > > - if (!ring->sched.ready && !ring->is_mes_queue) { > + if (!ring->sched.ready) { > dev_err(adev->dev, "couldn't schedule ib on ring <%s>\n", ring->name); > return -EINVAL; > } > > - if (vm && !job->vmid && !ring->is_mes_queue) { > + if (vm && !job->vmid) { > dev_err(adev->dev, "VM IB without ID\n"); > return -EINVAL; > } > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c > index d55c8b7fdb596..ba8f2785865af 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c > @@ -187,14 +187,10 @@ void amdgpu_ring_undo(struct amdgpu_ring *ring) > } > > #define amdgpu_ring_get_gpu_addr(ring, offset) \ > - (ring->is_mes_queue ? \ > - (ring->mes_ctx->meta_data_gpu_addr + offset) : \ > - (ring->adev->wb.gpu_addr + offset * 4)) > + (ring->adev->wb.gpu_addr + offset * 4) > > #define amdgpu_ring_get_cpu_addr(ring, offset) \ > - (ring->is_mes_queue ? \ > - (void *)((uint8_t *)(ring->mes_ctx->meta_data_ptr) + offset) : \ > - (&ring->adev->wb.wb[offset])) > + (&ring->adev->wb.wb[offset]) > > /** > * amdgpu_ring_init - init driver ring struct. > @@ -243,57 +239,42 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring, > ring->sched_score = sched_score; > ring->vmid_wait = dma_fence_get_stub(); > > - if (!ring->is_mes_queue) { > - ring->idx = adev->num_rings++; > - adev->rings[ring->idx] = ring; > - } > + ring->idx = adev->num_rings++; > + adev->rings[ring->idx] = ring; > > r = amdgpu_fence_driver_init_ring(ring); > if (r) > return r; > } > > - if (ring->is_mes_queue) { > - ring->rptr_offs = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_RPTR_OFFS); > - ring->wptr_offs = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_WPTR_OFFS); > - ring->fence_offs = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_FENCE_OFFS); > - ring->trail_fence_offs = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_TRAIL_FENCE_OFFS); > - ring->cond_exe_offs = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_COND_EXE_OFFS); > - } else { > - r = amdgpu_device_wb_get(adev, &ring->rptr_offs); > - if (r) { > - dev_err(adev->dev, "(%d) ring rptr_offs wb alloc failed\n", r); > - return r; > - } > + r = amdgpu_device_wb_get(adev, &ring->rptr_offs); > + if (r) { > + dev_err(adev->dev, "(%d) ring rptr_offs wb alloc failed\n", r); > + return r; > + } > > - r = amdgpu_device_wb_get(adev, &ring->wptr_offs); > - if (r) { > - dev_err(adev->dev, "(%d) ring wptr_offs wb alloc failed\n", r); > - return r; > - } > + r = amdgpu_device_wb_get(adev, &ring->wptr_offs); > + if (r) { > + dev_err(adev->dev, "(%d) ring wptr_offs wb alloc failed\n", r); > + return r; > + } > > - r = amdgpu_device_wb_get(adev, &ring->fence_offs); > - if (r) { > - dev_err(adev->dev, "(%d) ring fence_offs wb alloc failed\n", r); > - return r; > - } > + r = amdgpu_device_wb_get(adev, &ring->fence_offs); > + if (r) { > + dev_err(adev->dev, "(%d) ring fence_offs wb alloc failed\n", r); > + return r; > + } > > - r = amdgpu_device_wb_get(adev, &ring->trail_fence_offs); > - if (r) { > - dev_err(adev->dev, "(%d) ring trail_fence_offs wb alloc failed\n", r); > - return r; > - } > + r = amdgpu_device_wb_get(adev, &ring->trail_fence_offs); > + if (r) { > + dev_err(adev->dev, "(%d) ring trail_fence_offs wb alloc failed\n", r); > + return r; > + } > > - r = amdgpu_device_wb_get(adev, &ring->cond_exe_offs); > - if (r) { > - dev_err(adev->dev, "(%d) ring cond_exec_polling wb alloc failed\n", r); > - return r; > - } > + r = amdgpu_device_wb_get(adev, &ring->cond_exe_offs); > + if (r) { > + dev_err(adev->dev, "(%d) ring cond_exec_polling wb alloc failed\n", r); > + return r; > } > > ring->fence_gpu_addr = > @@ -353,18 +334,7 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring, > ring->cached_rptr = 0; > > /* Allocate ring buffer */ > - if (ring->is_mes_queue) { > - int offset = 0; > - > - BUG_ON(ring->ring_size > PAGE_SIZE*4); > - > - offset = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_RING_OFFS); > - ring->gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - ring->ring = amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - amdgpu_ring_clear_ring(ring); > - > - } else if (ring->ring_obj == NULL) { > + if (ring->ring_obj == NULL) { > r = amdgpu_bo_create_kernel(adev, ring->ring_size + ring->funcs->extra_dw, PAGE_SIZE, > AMDGPU_GEM_DOMAIN_GTT, > &ring->ring_obj, > @@ -401,32 +371,26 @@ void amdgpu_ring_fini(struct amdgpu_ring *ring) > { > > /* Not to finish a ring which is not initialized */ > - if (!(ring->adev) || > - (!ring->is_mes_queue && !(ring->adev->rings[ring->idx]))) > + if (!(ring->adev) || !(ring->adev->rings[ring->idx])) > return; > > ring->sched.ready = false; > > - if (!ring->is_mes_queue) { > - amdgpu_device_wb_free(ring->adev, ring->rptr_offs); > - amdgpu_device_wb_free(ring->adev, ring->wptr_offs); > + amdgpu_device_wb_free(ring->adev, ring->rptr_offs); > + amdgpu_device_wb_free(ring->adev, ring->wptr_offs); > > - amdgpu_device_wb_free(ring->adev, ring->cond_exe_offs); > - amdgpu_device_wb_free(ring->adev, ring->fence_offs); > + amdgpu_device_wb_free(ring->adev, ring->cond_exe_offs); > + amdgpu_device_wb_free(ring->adev, ring->fence_offs); > > - amdgpu_bo_free_kernel(&ring->ring_obj, > - &ring->gpu_addr, > - (void **)&ring->ring); > - } else { > - kfree(ring->fence_drv.fences); > - } > + amdgpu_bo_free_kernel(&ring->ring_obj, > + &ring->gpu_addr, > + (void **)&ring->ring); > > dma_fence_put(ring->vmid_wait); > ring->vmid_wait = NULL; > ring->me = 0; > > - if (!ring->is_mes_queue) > - ring->adev->rings[ring->idx] = NULL; > + ring->adev->rings[ring->idx] = NULL; > } > > /** > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h > index d93d3047553b3..bea3747f9550b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h > @@ -306,11 +306,6 @@ struct amdgpu_ring { > unsigned num_hw_submission; > atomic_t *sched_score; > > - /* used for mes */ > - bool is_mes_queue; > - uint32_t hw_queue_id; > - struct amdgpu_mes_ctx_data *mes_ctx; > - > bool is_sw_ring; > unsigned int entry_index; > /* store the cached rptr to restore after reset */ > @@ -440,15 +435,6 @@ static inline void amdgpu_ring_patch_cond_exec(struct amdgpu_ring *ring, > ring->ring[offset] = cur - offset; > } > > -#define amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset) \ > - (ring->is_mes_queue && ring->mes_ctx ? \ > - (ring->mes_ctx->meta_data_gpu_addr + offset) : 0) > - > -#define amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset) \ > - (ring->is_mes_queue && ring->mes_ctx ? \ > - (void *)((uint8_t *)(ring->mes_ctx->meta_data_ptr) + offset) : \ > - NULL) > - > int amdgpu_ring_test_helper(struct amdgpu_ring *ring); > > void amdgpu_debugfs_ring_init(struct amdgpu_device *adev, > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > index 3a4cef8960185..03c4c012a1508 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c > @@ -76,22 +76,14 @@ uint64_t amdgpu_sdma_get_csa_mc_addr(struct amdgpu_ring *ring, > if (amdgpu_sriov_vf(adev) || vmid == 0 || !adev->gfx.mcbp) > return 0; > > - if (ring->is_mes_queue) { > - uint32_t offset = 0; > + r = amdgpu_sdma_get_index_from_ring(ring, &index); > > - offset = offsetof(struct amdgpu_mes_ctx_meta_data, > - sdma[ring->idx].sdma_meta_data); > - csa_mc_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - } else { > - r = amdgpu_sdma_get_index_from_ring(ring, &index); > - > - if (r || index > 31) > - csa_mc_addr = 0; > - else > - csa_mc_addr = amdgpu_csa_vaddr(adev) + > - AMDGPU_CSA_SDMA_OFFSET + > - index * AMDGPU_CSA_SDMA_SIZE; > - } > + if (r || index > 31) > + csa_mc_addr = 0; > + else > + csa_mc_addr = amdgpu_csa_vaddr(adev) + > + AMDGPU_CSA_SDMA_OFFSET + > + index * AMDGPU_CSA_SDMA_SIZE; > > return csa_mc_addr; > } > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > index ef4fe2df8398c..ea18484d1d7a7 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > @@ -702,7 +702,7 @@ int amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job, > if (spm_update_needed && adev->gfx.rlc.funcs->update_spm_vmid) > adev->gfx.rlc.funcs->update_spm_vmid(adev, ring, job->vmid); > > - if (!ring->is_mes_queue && ring->funcs->emit_gds_switch && > + if (ring->funcs->emit_gds_switch && > gds_switch_needed) { > amdgpu_ring_emit_gds_switch(ring, job->vmid, job->gds_base, > job->gds_size, job->gws_base, > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c > index 2cf663d25881d..719c4aa90a0e0 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c > @@ -582,33 +582,18 @@ static int gfx_v11_0_ring_test_ib(struct amdgpu_ring *ring, long timeout) > > memset(&ib, 0, sizeof(ib)); > > - if (ring->is_mes_queue) { > - uint32_t padding, offset; > - > - offset = amdgpu_mes_ctx_get_offs(ring, AMDGPU_MES_CTX_IB_OFFS); > - padding = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_PADDING_OFFS); > - > - ib.gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - ib.ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - > - gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, padding); > - cpu_ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, padding); > - *cpu_ptr = cpu_to_le32(0xCAFEDEAD); > - } else { > - r = amdgpu_device_wb_get(adev, &index); > - if (r) > - return r; > + r = amdgpu_device_wb_get(adev, &index); > + if (r) > + return r; > > - gpu_addr = adev->wb.gpu_addr + (index * 4); > - adev->wb.wb[index] = cpu_to_le32(0xCAFEDEAD); > - cpu_ptr = &adev->wb.wb[index]; > + gpu_addr = adev->wb.gpu_addr + (index * 4); > + adev->wb.wb[index] = cpu_to_le32(0xCAFEDEAD); > + cpu_ptr = &adev->wb.wb[index]; > > - r = amdgpu_ib_get(adev, NULL, 20, AMDGPU_IB_POOL_DIRECT, &ib); > - if (r) { > - DRM_ERROR("amdgpu: failed to get ib (%ld).\n", r); > - goto err1; > - } > + r = amdgpu_ib_get(adev, NULL, 20, AMDGPU_IB_POOL_DIRECT, &ib); > + if (r) { > + DRM_ERROR("amdgpu: failed to get ib (%ld).\n", r); > + goto err1; > } > > ib.ptr[0] = PACKET3(PACKET3_WRITE_DATA, 3); > @@ -635,12 +620,10 @@ static int gfx_v11_0_ring_test_ib(struct amdgpu_ring *ring, long timeout) > else > r = -EINVAL; > err2: > - if (!ring->is_mes_queue) > - amdgpu_ib_free(&ib, NULL); > + amdgpu_ib_free(&ib, NULL); > dma_fence_put(f); > err1: > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > return r; > } > > @@ -5760,10 +5743,6 @@ static void gfx_v11_0_ring_emit_ib_gfx(struct amdgpu_ring *ring, > (!amdgpu_sriov_vf(ring->adev) && flags & AMDGPU_IB_PREEMPTED) ? true : false); > } > > - if (ring->is_mes_queue) > - /* inherit vmid from mqd */ > - control |= 0x400000; > - > amdgpu_ring_write(ring, header); > BUG_ON(ib->gpu_addr & 0x3); /* Dword align */ > amdgpu_ring_write(ring, > @@ -5783,10 +5762,6 @@ static void gfx_v11_0_ring_emit_ib_compute(struct amdgpu_ring *ring, > unsigned vmid = AMDGPU_JOB_GET_VMID(job); > u32 control = INDIRECT_BUFFER_VALID | ib->length_dw | (vmid << 24); > > - if (ring->is_mes_queue) > - /* inherit vmid from mqd */ > - control |= 0x40000000; > - > /* Currently, there is a high possibility to get wave ID mismatch > * between ME and GDS, leading to a hw deadlock, because ME generates > * different wave IDs than the GDS expects. This situation happens > @@ -5844,8 +5819,7 @@ static void gfx_v11_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, > amdgpu_ring_write(ring, upper_32_bits(addr)); > amdgpu_ring_write(ring, lower_32_bits(seq)); > amdgpu_ring_write(ring, upper_32_bits(seq)); > - amdgpu_ring_write(ring, ring->is_mes_queue ? > - (ring->hw_queue_id | AMDGPU_FENCE_MES_QUEUE_FLAG) : 0); > + amdgpu_ring_write(ring, 0); > } > > static void gfx_v11_0_ring_emit_pipeline_sync(struct amdgpu_ring *ring) > @@ -5873,10 +5847,7 @@ static void gfx_v11_0_ring_invalidate_tlbs(struct amdgpu_ring *ring, > static void gfx_v11_0_ring_emit_vm_flush(struct amdgpu_ring *ring, > unsigned vmid, uint64_t pd_addr) > { > - if (ring->is_mes_queue) > - gfx_v11_0_ring_invalidate_tlbs(ring, 0, 0, false, 0); > - else > - amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, 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) { > @@ -6105,28 +6076,13 @@ static void gfx_v11_0_ring_emit_de_meta(struct amdgpu_ring *ring, bool resume) > void *de_payload_cpu_addr; > int cnt; > > - if (ring->is_mes_queue) { > - offset = offsetof(struct amdgpu_mes_ctx_meta_data, > - gfx[0].gfx_meta_data) + > - offsetof(struct v10_gfx_meta_data, de_payload); > - de_payload_gpu_addr = > - amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - de_payload_cpu_addr = > - amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - > - offset = offsetof(struct amdgpu_mes_ctx_meta_data, > - gfx[0].gds_backup) + > - offsetof(struct v10_gfx_meta_data, de_payload); > - gds_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - } else { > - offset = offsetof(struct v10_gfx_meta_data, de_payload); > - de_payload_gpu_addr = amdgpu_csa_vaddr(ring->adev) + offset; > - de_payload_cpu_addr = adev->virt.csa_cpu_addr + offset; > + offset = offsetof(struct v10_gfx_meta_data, de_payload); > + de_payload_gpu_addr = amdgpu_csa_vaddr(ring->adev) + offset; > + de_payload_cpu_addr = adev->virt.csa_cpu_addr + offset; > > - gds_addr = ALIGN(amdgpu_csa_vaddr(ring->adev) + > - AMDGPU_CSA_SIZE - adev->gds.gds_size, > - PAGE_SIZE); > - } > + gds_addr = ALIGN(amdgpu_csa_vaddr(ring->adev) + > + AMDGPU_CSA_SIZE - adev->gds.gds_size, > + PAGE_SIZE); > > de_payload.gds_backup_addrlo = lower_32_bits(gds_addr); > de_payload.gds_backup_addrhi = upper_32_bits(gds_addr); > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c > index 60d8630a05c82..9db2becab68fe 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c > @@ -477,33 +477,18 @@ static int gfx_v12_0_ring_test_ib(struct amdgpu_ring *ring, long timeout) > > memset(&ib, 0, sizeof(ib)); > > - if (ring->is_mes_queue) { > - uint32_t padding, offset; > - > - offset = amdgpu_mes_ctx_get_offs(ring, AMDGPU_MES_CTX_IB_OFFS); > - padding = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_PADDING_OFFS); > - > - ib.gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - ib.ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - > - gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, padding); > - cpu_ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, padding); > - *cpu_ptr = cpu_to_le32(0xCAFEDEAD); > - } else { > - r = amdgpu_device_wb_get(adev, &index); > - if (r) > - return r; > + r = amdgpu_device_wb_get(adev, &index); > + if (r) > + return r; > > - gpu_addr = adev->wb.gpu_addr + (index * 4); > - adev->wb.wb[index] = cpu_to_le32(0xCAFEDEAD); > - cpu_ptr = &adev->wb.wb[index]; > + gpu_addr = adev->wb.gpu_addr + (index * 4); > + adev->wb.wb[index] = cpu_to_le32(0xCAFEDEAD); > + cpu_ptr = &adev->wb.wb[index]; > > - r = amdgpu_ib_get(adev, NULL, 16, AMDGPU_IB_POOL_DIRECT, &ib); > - if (r) { > - dev_err(adev->dev, "amdgpu: failed to get ib (%ld).\n", r); > - goto err1; > - } > + r = amdgpu_ib_get(adev, NULL, 16, AMDGPU_IB_POOL_DIRECT, &ib); > + if (r) { > + dev_err(adev->dev, "amdgpu: failed to get ib (%ld).\n", r); > + goto err1; > } > > ib.ptr[0] = PACKET3(PACKET3_WRITE_DATA, 3); > @@ -530,12 +515,10 @@ static int gfx_v12_0_ring_test_ib(struct amdgpu_ring *ring, long timeout) > else > r = -EINVAL; > err2: > - if (!ring->is_mes_queue) > - amdgpu_ib_free(&ib, NULL); > + amdgpu_ib_free(&ib, NULL); > dma_fence_put(f); > err1: > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > return r; > } > > @@ -4283,45 +4266,17 @@ static u64 gfx_v12_0_ring_get_wptr_gfx(struct amdgpu_ring *ring) > static void gfx_v12_0_ring_set_wptr_gfx(struct amdgpu_ring *ring) > { > struct amdgpu_device *adev = ring->adev; > - uint32_t *wptr_saved; > - uint32_t *is_queue_unmap; > - uint64_t aggregated_db_index; > - uint32_t mqd_size = adev->mqds[AMDGPU_HW_IP_GFX].mqd_size; > - uint64_t wptr_tmp; > - > - if (ring->is_mes_queue) { > - wptr_saved = (uint32_t *)(ring->mqd_ptr + mqd_size); > - is_queue_unmap = (uint32_t *)(ring->mqd_ptr + mqd_size + > - sizeof(uint32_t)); > - aggregated_db_index = > - amdgpu_mes_get_aggregated_doorbell_index(adev, > - ring->hw_prio); > - > - wptr_tmp = ring->wptr & ring->buf_mask; > - atomic64_set((atomic64_t *)ring->wptr_cpu_addr, wptr_tmp); > - *wptr_saved = wptr_tmp; > - /* assume doorbell always being used by mes mapped queue */ > - if (*is_queue_unmap) { > - WDOORBELL64(aggregated_db_index, wptr_tmp); > - WDOORBELL64(ring->doorbell_index, wptr_tmp); > - } else { > - WDOORBELL64(ring->doorbell_index, wptr_tmp); > > - if (*is_queue_unmap) > - WDOORBELL64(aggregated_db_index, wptr_tmp); > - } > + if (ring->use_doorbell) { > + /* XXX check if swapping is necessary on BE */ > + atomic64_set((atomic64_t *)ring->wptr_cpu_addr, > + ring->wptr); > + WDOORBELL64(ring->doorbell_index, ring->wptr); > } else { > - if (ring->use_doorbell) { > - /* XXX check if swapping is necessary on BE */ > - atomic64_set((atomic64_t *)ring->wptr_cpu_addr, > - ring->wptr); > - WDOORBELL64(ring->doorbell_index, ring->wptr); > - } else { > - WREG32_SOC15(GC, 0, regCP_RB0_WPTR, > - lower_32_bits(ring->wptr)); > - WREG32_SOC15(GC, 0, regCP_RB0_WPTR_HI, > - upper_32_bits(ring->wptr)); > - } > + WREG32_SOC15(GC, 0, regCP_RB0_WPTR, > + lower_32_bits(ring->wptr)); > + WREG32_SOC15(GC, 0, regCP_RB0_WPTR_HI, > + upper_32_bits(ring->wptr)); > } > } > > @@ -4346,42 +4301,14 @@ static u64 gfx_v12_0_ring_get_wptr_compute(struct amdgpu_ring *ring) > static void gfx_v12_0_ring_set_wptr_compute(struct amdgpu_ring *ring) > { > struct amdgpu_device *adev = ring->adev; > - uint32_t *wptr_saved; > - uint32_t *is_queue_unmap; > - uint64_t aggregated_db_index; > - uint32_t mqd_size = adev->mqds[AMDGPU_HW_IP_COMPUTE].mqd_size; > - uint64_t wptr_tmp; > - > - if (ring->is_mes_queue) { > - wptr_saved = (uint32_t *)(ring->mqd_ptr + mqd_size); > - is_queue_unmap = (uint32_t *)(ring->mqd_ptr + mqd_size + > - sizeof(uint32_t)); > - aggregated_db_index = > - amdgpu_mes_get_aggregated_doorbell_index(adev, > - ring->hw_prio); > - > - wptr_tmp = ring->wptr & ring->buf_mask; > - atomic64_set((atomic64_t *)ring->wptr_cpu_addr, wptr_tmp); > - *wptr_saved = wptr_tmp; > - /* assume doorbell always used by mes mapped queue */ > - if (*is_queue_unmap) { > - WDOORBELL64(aggregated_db_index, wptr_tmp); > - WDOORBELL64(ring->doorbell_index, wptr_tmp); > - } else { > - WDOORBELL64(ring->doorbell_index, wptr_tmp); > > - if (*is_queue_unmap) > - WDOORBELL64(aggregated_db_index, wptr_tmp); > - } > + /* XXX check if swapping is necessary on BE */ > + if (ring->use_doorbell) { > + atomic64_set((atomic64_t *)ring->wptr_cpu_addr, > + ring->wptr); > + WDOORBELL64(ring->doorbell_index, ring->wptr); > } else { > - /* XXX check if swapping is necessary on BE */ > - if (ring->use_doorbell) { > - atomic64_set((atomic64_t *)ring->wptr_cpu_addr, > - ring->wptr); > - WDOORBELL64(ring->doorbell_index, ring->wptr); > - } else { > - BUG(); /* only DOORBELL method supported on gfx12 now */ > - } > + BUG(); /* only DOORBELL method supported on gfx12 now */ > } > } > > @@ -4428,10 +4355,6 @@ static void gfx_v12_0_ring_emit_ib_gfx(struct amdgpu_ring *ring, > > control |= ib->length_dw | (vmid << 24); > > - if (ring->is_mes_queue) > - /* inherit vmid from mqd */ > - control |= 0x400000; > - > amdgpu_ring_write(ring, header); > BUG_ON(ib->gpu_addr & 0x3); /* Dword align */ > amdgpu_ring_write(ring, > @@ -4451,10 +4374,6 @@ static void gfx_v12_0_ring_emit_ib_compute(struct amdgpu_ring *ring, > unsigned vmid = AMDGPU_JOB_GET_VMID(job); > u32 control = INDIRECT_BUFFER_VALID | ib->length_dw | (vmid << 24); > > - if (ring->is_mes_queue) > - /* inherit vmid from mqd */ > - control |= 0x40000000; > - > amdgpu_ring_write(ring, PACKET3(PACKET3_INDIRECT_BUFFER, 2)); > BUG_ON(ib->gpu_addr & 0x3); /* Dword align */ > amdgpu_ring_write(ring, > @@ -4494,8 +4413,7 @@ static void gfx_v12_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, > amdgpu_ring_write(ring, upper_32_bits(addr)); > amdgpu_ring_write(ring, lower_32_bits(seq)); > amdgpu_ring_write(ring, upper_32_bits(seq)); > - amdgpu_ring_write(ring, ring->is_mes_queue ? > - (ring->hw_queue_id | AMDGPU_FENCE_MES_QUEUE_FLAG) : 0); > + amdgpu_ring_write(ring, 0); > } > > static void gfx_v12_0_ring_emit_pipeline_sync(struct amdgpu_ring *ring) > @@ -4523,10 +4441,7 @@ static void gfx_v12_0_ring_invalidate_tlbs(struct amdgpu_ring *ring, > static void gfx_v12_0_ring_emit_vm_flush(struct amdgpu_ring *ring, > unsigned vmid, uint64_t pd_addr) > { > - if (ring->is_mes_queue) > - gfx_v12_0_ring_invalidate_tlbs(ring, 0, 0, false, 0); > - else > - amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, 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) { > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c > index 734f2dd986290..f4dfa1418b740 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c > @@ -5472,16 +5472,8 @@ static void gfx_v9_0_ring_patch_ce_meta(struct amdgpu_ring *ring, > > payload_size = sizeof(struct v9_ce_ib_state); > > - if (ring->is_mes_queue) { > - payload_offset = offsetof(struct amdgpu_mes_ctx_meta_data, > - gfx[0].gfx_meta_data) + > - offsetof(struct v9_gfx_meta_data, ce_payload); > - ce_payload_cpu_addr = > - amdgpu_mes_ctx_get_offs_cpu_addr(ring, payload_offset); > - } else { > - payload_offset = offsetof(struct v9_gfx_meta_data, ce_payload); > - ce_payload_cpu_addr = adev->virt.csa_cpu_addr + payload_offset; > - } > + payload_offset = offsetof(struct v9_gfx_meta_data, ce_payload); > + ce_payload_cpu_addr = adev->virt.csa_cpu_addr + payload_offset; > > if (offset + (payload_size >> 2) <= ring->buf_mask + 1) { > memcpy((void *)&ring->ring[offset], ce_payload_cpu_addr, payload_size); > @@ -5504,16 +5496,8 @@ static void gfx_v9_0_ring_patch_de_meta(struct amdgpu_ring *ring, > > payload_size = sizeof(struct v9_de_ib_state); > > - if (ring->is_mes_queue) { > - payload_offset = offsetof(struct amdgpu_mes_ctx_meta_data, > - gfx[0].gfx_meta_data) + > - offsetof(struct v9_gfx_meta_data, de_payload); > - de_payload_cpu_addr = > - amdgpu_mes_ctx_get_offs_cpu_addr(ring, payload_offset); > - } else { > - payload_offset = offsetof(struct v9_gfx_meta_data, de_payload); > - de_payload_cpu_addr = adev->virt.csa_cpu_addr + payload_offset; > - } > + payload_offset = offsetof(struct v9_gfx_meta_data, de_payload); > + de_payload_cpu_addr = adev->virt.csa_cpu_addr + payload_offset; > > ((struct v9_de_ib_state *)de_payload_cpu_addr)->ib_completion_status = > IB_COMPLETION_STATUS_PREEMPTED; > @@ -5703,19 +5687,9 @@ static void gfx_v9_0_ring_emit_ce_meta(struct amdgpu_ring *ring, bool resume) > > cnt = (sizeof(ce_payload) >> 2) + 4 - 2; > > - if (ring->is_mes_queue) { > - offset = offsetof(struct amdgpu_mes_ctx_meta_data, > - gfx[0].gfx_meta_data) + > - offsetof(struct v9_gfx_meta_data, ce_payload); > - ce_payload_gpu_addr = > - amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - ce_payload_cpu_addr = > - amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - } else { > - offset = offsetof(struct v9_gfx_meta_data, ce_payload); > - ce_payload_gpu_addr = amdgpu_csa_vaddr(ring->adev) + offset; > - ce_payload_cpu_addr = adev->virt.csa_cpu_addr + offset; > - } > + offset = offsetof(struct v9_gfx_meta_data, ce_payload); > + ce_payload_gpu_addr = amdgpu_csa_vaddr(ring->adev) + offset; > + ce_payload_cpu_addr = adev->virt.csa_cpu_addr + offset; > > amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, cnt)); > amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(2) | > @@ -5801,28 +5775,13 @@ static void gfx_v9_0_ring_emit_de_meta(struct amdgpu_ring *ring, bool resume, bo > void *de_payload_cpu_addr; > int cnt; > > - if (ring->is_mes_queue) { > - offset = offsetof(struct amdgpu_mes_ctx_meta_data, > - gfx[0].gfx_meta_data) + > - offsetof(struct v9_gfx_meta_data, de_payload); > - de_payload_gpu_addr = > - amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - de_payload_cpu_addr = > - amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - > - offset = offsetof(struct amdgpu_mes_ctx_meta_data, > - gfx[0].gds_backup) + > - offsetof(struct v9_gfx_meta_data, de_payload); > - gds_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - } else { > - offset = offsetof(struct v9_gfx_meta_data, de_payload); > - de_payload_gpu_addr = amdgpu_csa_vaddr(ring->adev) + offset; > - de_payload_cpu_addr = adev->virt.csa_cpu_addr + offset; > + offset = offsetof(struct v9_gfx_meta_data, de_payload); > + de_payload_gpu_addr = amdgpu_csa_vaddr(ring->adev) + offset; > + de_payload_cpu_addr = adev->virt.csa_cpu_addr + offset; > > - gds_addr = ALIGN(amdgpu_csa_vaddr(ring->adev) + > - AMDGPU_CSA_SIZE - adev->gds.gds_size, > - PAGE_SIZE); > - } > + gds_addr = ALIGN(amdgpu_csa_vaddr(ring->adev) + > + AMDGPU_CSA_SIZE - adev->gds.gds_size, > + PAGE_SIZE); > > if (usegds) { > de_payload.gds_backup_addrlo = lower_32_bits(gds_addr); > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c > index 95d894a231fcf..8ae4c031162bc 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c > @@ -428,10 +428,6 @@ static void gmc_v10_0_emit_pasid_mapping(struct amdgpu_ring *ring, unsigned int > struct amdgpu_device *adev = ring->adev; > uint32_t reg; > > - /* MES fw manages IH_VMID_x_LUT updating */ > - if (ring->is_mes_queue) > - return; > - > if (ring->vm_hub == AMDGPU_GFXHUB(0)) > reg = SOC15_REG_OFFSET(OSSSYS, 0, mmIH_VMID_0_LUT) + vmid; > else > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c > index ad099f136f84e..5c91d4445418c 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c > @@ -393,10 +393,6 @@ static void gmc_v11_0_emit_pasid_mapping(struct amdgpu_ring *ring, unsigned int > struct amdgpu_device *adev = ring->adev; > uint32_t reg; > > - /* MES fw manages IH_VMID_x_LUT updating */ > - if (ring->is_mes_queue) > - return; > - > if (ring->vm_hub == AMDGPU_GFXHUB(0)) > reg = SOC15_REG_OFFSET(OSSSYS, 0, regIH_VMID_0_LUT) + vmid; > else > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c > index bf8d01da88154..0a1946c824118 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c > @@ -413,10 +413,6 @@ static void gmc_v12_0_emit_pasid_mapping(struct amdgpu_ring *ring, unsigned vmid > struct amdgpu_device *adev = ring->adev; > uint32_t reg; > > - /* MES fw manages IH_VMID_x_LUT updating */ > - if (ring->is_mes_queue) > - return; > - > if (ring->vm_hub == AMDGPU_GFXHUB(0)) > reg = SOC15_REG_OFFSET(OSSSYS, 0, regIH_VMID_0_LUT) + vmid; > else > diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c > index 44a401870509f..712392671a3cf 100644 > --- a/drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c > @@ -369,67 +369,36 @@ static uint64_t sdma_v5_0_ring_get_wptr(struct amdgpu_ring *ring) > static void sdma_v5_0_ring_set_wptr(struct amdgpu_ring *ring) > { > struct amdgpu_device *adev = ring->adev; > - uint32_t *wptr_saved; > - uint32_t *is_queue_unmap; > - uint64_t aggregated_db_index; > - uint32_t mqd_size = adev->mqds[AMDGPU_HW_IP_DMA].mqd_size; > > DRM_DEBUG("Setting write pointer\n"); > - if (ring->is_mes_queue) { > - wptr_saved = (uint32_t *)(ring->mqd_ptr + mqd_size); > - is_queue_unmap = (uint32_t *)(ring->mqd_ptr + mqd_size + > - sizeof(uint32_t)); > - aggregated_db_index = > - amdgpu_mes_get_aggregated_doorbell_index(adev, > - AMDGPU_MES_PRIORITY_LEVEL_NORMAL); > - > + if (ring->use_doorbell) { > + DRM_DEBUG("Using doorbell -- " > + "wptr_offs == 0x%08x " > + "lower_32_bits(ring->wptr) << 2 == 0x%08x " > + "upper_32_bits(ring->wptr) << 2 == 0x%08x\n", > + ring->wptr_offs, > + lower_32_bits(ring->wptr << 2), > + upper_32_bits(ring->wptr << 2)); > + /* XXX check if swapping is necessary on BE */ > atomic64_set((atomic64_t *)ring->wptr_cpu_addr, > ring->wptr << 2); > - *wptr_saved = ring->wptr << 2; > - if (*is_queue_unmap) { > - WDOORBELL64(aggregated_db_index, ring->wptr << 2); > - DRM_DEBUG("calling WDOORBELL64(0x%08x, 0x%016llx)\n", > - ring->doorbell_index, ring->wptr << 2); > - WDOORBELL64(ring->doorbell_index, ring->wptr << 2); > - } else { > - DRM_DEBUG("calling WDOORBELL64(0x%08x, 0x%016llx)\n", > - ring->doorbell_index, ring->wptr << 2); > - WDOORBELL64(ring->doorbell_index, ring->wptr << 2); > - > - if (*is_queue_unmap) > - WDOORBELL64(aggregated_db_index, > - ring->wptr << 2); > - } > + DRM_DEBUG("calling WDOORBELL64(0x%08x, 0x%016llx)\n", > + ring->doorbell_index, ring->wptr << 2); > + WDOORBELL64(ring->doorbell_index, ring->wptr << 2); > } else { > - if (ring->use_doorbell) { > - DRM_DEBUG("Using doorbell -- " > - "wptr_offs == 0x%08x " > - "lower_32_bits(ring->wptr) << 2 == 0x%08x " > - "upper_32_bits(ring->wptr) << 2 == 0x%08x\n", > - ring->wptr_offs, > - lower_32_bits(ring->wptr << 2), > - upper_32_bits(ring->wptr << 2)); > - /* XXX check if swapping is necessary on BE */ > - atomic64_set((atomic64_t *)ring->wptr_cpu_addr, > - ring->wptr << 2); > - DRM_DEBUG("calling WDOORBELL64(0x%08x, 0x%016llx)\n", > - ring->doorbell_index, ring->wptr << 2); > - WDOORBELL64(ring->doorbell_index, ring->wptr << 2); > - } else { > - DRM_DEBUG("Not using doorbell -- " > - "mmSDMA%i_GFX_RB_WPTR == 0x%08x " > - "mmSDMA%i_GFX_RB_WPTR_HI == 0x%08x\n", > - ring->me, > - lower_32_bits(ring->wptr << 2), > - ring->me, > - upper_32_bits(ring->wptr << 2)); > - WREG32_SOC15_IP(GC, sdma_v5_0_get_reg_offset(adev, > - ring->me, mmSDMA0_GFX_RB_WPTR), > - lower_32_bits(ring->wptr << 2)); > - WREG32_SOC15_IP(GC, sdma_v5_0_get_reg_offset(adev, > - ring->me, mmSDMA0_GFX_RB_WPTR_HI), > - upper_32_bits(ring->wptr << 2)); > - } > + DRM_DEBUG("Not using doorbell -- " > + "mmSDMA%i_GFX_RB_WPTR == 0x%08x " > + "mmSDMA%i_GFX_RB_WPTR_HI == 0x%08x\n", > + ring->me, > + lower_32_bits(ring->wptr << 2), > + ring->me, > + upper_32_bits(ring->wptr << 2)); > + WREG32_SOC15_IP(GC, sdma_v5_0_get_reg_offset(adev, > + ring->me, mmSDMA0_GFX_RB_WPTR), > + lower_32_bits(ring->wptr << 2)); > + WREG32_SOC15_IP(GC, sdma_v5_0_get_reg_offset(adev, > + ring->me, mmSDMA0_GFX_RB_WPTR_HI), > + upper_32_bits(ring->wptr << 2)); > } > } > > @@ -575,11 +544,9 @@ static void sdma_v5_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se > } > > if (flags & AMDGPU_FENCE_FLAG_INT) { > - uint32_t ctx = ring->is_mes_queue ? > - (ring->hw_queue_id | AMDGPU_FENCE_MES_QUEUE_FLAG) : 0; > /* generate an interrupt */ > amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_TRAP)); > - amdgpu_ring_write(ring, SDMA_PKT_TRAP_INT_CONTEXT_INT_CONTEXT(ctx)); > + amdgpu_ring_write(ring, SDMA_PKT_TRAP_INT_CONTEXT_INT_CONTEXT(0)); > } > } > > @@ -1046,33 +1013,22 @@ static int sdma_v5_0_ring_test_ring(struct amdgpu_ring *ring) > int r; > u32 tmp; > u64 gpu_addr; > - volatile uint32_t *cpu_ptr = NULL; > > tmp = 0xCAFEDEAD; > > - if (ring->is_mes_queue) { > - uint32_t offset = 0; > - offset = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_PADDING_OFFS); > - gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - cpu_ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - *cpu_ptr = tmp; > - } else { > - r = amdgpu_device_wb_get(adev, &index); > - if (r) { > - dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r); > - return r; > - } > - > - gpu_addr = adev->wb.gpu_addr + (index * 4); > - adev->wb.wb[index] = cpu_to_le32(tmp); > + r = amdgpu_device_wb_get(adev, &index); > + if (r) { > + dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r); > + return r; > } > > + gpu_addr = adev->wb.gpu_addr + (index * 4); > + adev->wb.wb[index] = cpu_to_le32(tmp); > + > r = amdgpu_ring_alloc(ring, 20); > if (r) { > DRM_ERROR("amdgpu: dma failed to lock ring %d (%d).\n", ring->idx, r); > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > return r; > } > > @@ -1085,10 +1041,7 @@ static int sdma_v5_0_ring_test_ring(struct amdgpu_ring *ring) > amdgpu_ring_commit(ring); > > for (i = 0; i < adev->usec_timeout; i++) { > - if (ring->is_mes_queue) > - tmp = le32_to_cpu(*cpu_ptr); > - else > - tmp = le32_to_cpu(adev->wb.wb[index]); > + tmp = le32_to_cpu(adev->wb.wb[index]); > if (tmp == 0xDEADBEEF) > break; > if (amdgpu_emu_mode == 1) > @@ -1100,8 +1053,7 @@ static int sdma_v5_0_ring_test_ring(struct amdgpu_ring *ring) > if (i >= adev->usec_timeout) > r = -ETIMEDOUT; > > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > > return r; > } > @@ -1124,38 +1076,24 @@ static int sdma_v5_0_ring_test_ib(struct amdgpu_ring *ring, long timeout) > long r; > u32 tmp = 0; > u64 gpu_addr; > - volatile uint32_t *cpu_ptr = NULL; > > tmp = 0xCAFEDEAD; > memset(&ib, 0, sizeof(ib)); > > - if (ring->is_mes_queue) { > - uint32_t offset = 0; > - offset = amdgpu_mes_ctx_get_offs(ring, AMDGPU_MES_CTX_IB_OFFS); > - ib.gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - ib.ptr = (void *)amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - > - offset = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_PADDING_OFFS); > - gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - cpu_ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - *cpu_ptr = tmp; > - } else { > - r = amdgpu_device_wb_get(adev, &index); > - if (r) { > - dev_err(adev->dev, "(%ld) failed to allocate wb slot\n", r); > - return r; > - } > + r = amdgpu_device_wb_get(adev, &index); > + if (r) { > + dev_err(adev->dev, "(%ld) failed to allocate wb slot\n", r); > + return r; > + } > > - gpu_addr = adev->wb.gpu_addr + (index * 4); > - adev->wb.wb[index] = cpu_to_le32(tmp); > + gpu_addr = adev->wb.gpu_addr + (index * 4); > + adev->wb.wb[index] = cpu_to_le32(tmp); > > - r = amdgpu_ib_get(adev, NULL, 256, > - AMDGPU_IB_POOL_DIRECT, &ib); > - if (r) { > - DRM_ERROR("amdgpu: failed to get ib (%ld).\n", r); > - goto err0; > - } > + r = amdgpu_ib_get(adev, NULL, 256, > + AMDGPU_IB_POOL_DIRECT, &ib); > + if (r) { > + DRM_ERROR("amdgpu: failed to get ib (%ld).\n", r); > + goto err0; > } > > ib.ptr[0] = SDMA_PKT_HEADER_OP(SDMA_OP_WRITE) | > @@ -1183,10 +1121,7 @@ static int sdma_v5_0_ring_test_ib(struct amdgpu_ring *ring, long timeout) > goto err1; > } > > - if (ring->is_mes_queue) > - tmp = le32_to_cpu(*cpu_ptr); > - else > - tmp = le32_to_cpu(adev->wb.wb[index]); > + tmp = le32_to_cpu(adev->wb.wb[index]); > > if (tmp == 0xDEADBEEF) > r = 0; > @@ -1197,8 +1132,7 @@ static int sdma_v5_0_ring_test_ib(struct amdgpu_ring *ring, long timeout) > amdgpu_ib_free(&ib, NULL); > dma_fence_put(f); > err0: > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > return r; > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c b/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c > index cb2a3e5592855..2c0bf2fc6d380 100644 > --- a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c > +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c > @@ -394,11 +394,9 @@ static void sdma_v5_2_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se > } > > if ((flags & AMDGPU_FENCE_FLAG_INT)) { > - uint32_t ctx = ring->is_mes_queue ? > - (ring->hw_queue_id | AMDGPU_FENCE_MES_QUEUE_FLAG) : 0; > /* generate an interrupt */ > amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_TRAP)); > - amdgpu_ring_write(ring, SDMA_PKT_TRAP_INT_CONTEXT_INT_CONTEXT(ctx)); > + amdgpu_ring_write(ring, SDMA_PKT_TRAP_INT_CONTEXT_INT_CONTEXT(0)); > } > } > > @@ -903,33 +901,22 @@ static int sdma_v5_2_ring_test_ring(struct amdgpu_ring *ring) > int r; > u32 tmp; > u64 gpu_addr; > - volatile uint32_t *cpu_ptr = NULL; > > tmp = 0xCAFEDEAD; > > - if (ring->is_mes_queue) { > - uint32_t offset = 0; > - offset = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_PADDING_OFFS); > - gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - cpu_ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - *cpu_ptr = tmp; > - } else { > - r = amdgpu_device_wb_get(adev, &index); > - if (r) { > - dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r); > - return r; > - } > - > - gpu_addr = adev->wb.gpu_addr + (index * 4); > - adev->wb.wb[index] = cpu_to_le32(tmp); > + r = amdgpu_device_wb_get(adev, &index); > + if (r) { > + dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r); > + return r; > } > > + gpu_addr = adev->wb.gpu_addr + (index * 4); > + adev->wb.wb[index] = cpu_to_le32(tmp); > + > r = amdgpu_ring_alloc(ring, 20); > if (r) { > DRM_ERROR("amdgpu: dma failed to lock ring %d (%d).\n", ring->idx, r); > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > return r; > } > > @@ -942,10 +929,7 @@ static int sdma_v5_2_ring_test_ring(struct amdgpu_ring *ring) > amdgpu_ring_commit(ring); > > for (i = 0; i < adev->usec_timeout; i++) { > - if (ring->is_mes_queue) > - tmp = le32_to_cpu(*cpu_ptr); > - else > - tmp = le32_to_cpu(adev->wb.wb[index]); > + tmp = le32_to_cpu(adev->wb.wb[index]); > if (tmp == 0xDEADBEEF) > break; > if (amdgpu_emu_mode == 1) > @@ -957,8 +941,7 @@ static int sdma_v5_2_ring_test_ring(struct amdgpu_ring *ring) > if (i >= adev->usec_timeout) > r = -ETIMEDOUT; > > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > > return r; > } > @@ -981,37 +964,23 @@ static int sdma_v5_2_ring_test_ib(struct amdgpu_ring *ring, long timeout) > long r; > u32 tmp = 0; > u64 gpu_addr; > - volatile uint32_t *cpu_ptr = NULL; > > tmp = 0xCAFEDEAD; > memset(&ib, 0, sizeof(ib)); > > - if (ring->is_mes_queue) { > - uint32_t offset = 0; > - offset = amdgpu_mes_ctx_get_offs(ring, AMDGPU_MES_CTX_IB_OFFS); > - ib.gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - ib.ptr = (void *)amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - > - offset = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_PADDING_OFFS); > - gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - cpu_ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - *cpu_ptr = tmp; > - } else { > - r = amdgpu_device_wb_get(adev, &index); > - if (r) { > - dev_err(adev->dev, "(%ld) failed to allocate wb slot\n", r); > - return r; > - } > + r = amdgpu_device_wb_get(adev, &index); > + if (r) { > + dev_err(adev->dev, "(%ld) failed to allocate wb slot\n", r); > + return r; > + } > > - gpu_addr = adev->wb.gpu_addr + (index * 4); > - adev->wb.wb[index] = cpu_to_le32(tmp); > + gpu_addr = adev->wb.gpu_addr + (index * 4); > + adev->wb.wb[index] = cpu_to_le32(tmp); > > - r = amdgpu_ib_get(adev, NULL, 256, AMDGPU_IB_POOL_DIRECT, &ib); > - if (r) { > - DRM_ERROR("amdgpu: failed to get ib (%ld).\n", r); > - goto err0; > - } > + r = amdgpu_ib_get(adev, NULL, 256, AMDGPU_IB_POOL_DIRECT, &ib); > + if (r) { > + DRM_ERROR("amdgpu: failed to get ib (%ld).\n", r); > + goto err0; > } > > ib.ptr[0] = SDMA_PKT_HEADER_OP(SDMA_OP_WRITE) | > @@ -1039,10 +1008,7 @@ static int sdma_v5_2_ring_test_ib(struct amdgpu_ring *ring, long timeout) > goto err1; > } > > - if (ring->is_mes_queue) > - tmp = le32_to_cpu(*cpu_ptr); > - else > - tmp = le32_to_cpu(adev->wb.wb[index]); > + tmp = le32_to_cpu(adev->wb.wb[index]); > > if (tmp == 0xDEADBEEF) > r = 0; > @@ -1053,8 +1019,7 @@ static int sdma_v5_2_ring_test_ib(struct amdgpu_ring *ring, long timeout) > amdgpu_ib_free(&ib, NULL); > dma_fence_put(f); > err0: > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > return r; > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c > index f1a02ce844e0f..d0f7874730f06 100644 > --- a/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c > @@ -377,11 +377,9 @@ static void sdma_v6_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se > } > > if (flags & AMDGPU_FENCE_FLAG_INT) { > - uint32_t ctx = ring->is_mes_queue ? > - (ring->hw_queue_id | AMDGPU_FENCE_MES_QUEUE_FLAG) : 0; > /* generate an interrupt */ > amdgpu_ring_write(ring, SDMA_PKT_COPY_LINEAR_HEADER_OP(SDMA_OP_TRAP)); > - amdgpu_ring_write(ring, SDMA_PKT_TRAP_INT_CONTEXT_INT_CONTEXT(ctx)); > + amdgpu_ring_write(ring, SDMA_PKT_TRAP_INT_CONTEXT_INT_CONTEXT(0)); > } > } > > @@ -921,33 +919,22 @@ static int sdma_v6_0_ring_test_ring(struct amdgpu_ring *ring) > int r; > u32 tmp; > u64 gpu_addr; > - volatile uint32_t *cpu_ptr = NULL; > > tmp = 0xCAFEDEAD; > > - if (ring->is_mes_queue) { > - uint32_t offset = 0; > - offset = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_PADDING_OFFS); > - gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - cpu_ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - *cpu_ptr = tmp; > - } else { > - r = amdgpu_device_wb_get(adev, &index); > - if (r) { > - dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r); > - return r; > - } > - > - gpu_addr = adev->wb.gpu_addr + (index * 4); > - adev->wb.wb[index] = cpu_to_le32(tmp); > + r = amdgpu_device_wb_get(adev, &index); > + if (r) { > + dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r); > + return r; > } > > + gpu_addr = adev->wb.gpu_addr + (index * 4); > + adev->wb.wb[index] = cpu_to_le32(tmp); > + > r = amdgpu_ring_alloc(ring, 5); > if (r) { > DRM_ERROR("amdgpu: dma failed to lock ring %d (%d).\n", ring->idx, r); > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > return r; > } > > @@ -960,10 +947,7 @@ static int sdma_v6_0_ring_test_ring(struct amdgpu_ring *ring) > amdgpu_ring_commit(ring); > > for (i = 0; i < adev->usec_timeout; i++) { > - if (ring->is_mes_queue) > - tmp = le32_to_cpu(*cpu_ptr); > - else > - tmp = le32_to_cpu(adev->wb.wb[index]); > + tmp = le32_to_cpu(adev->wb.wb[index]); > if (tmp == 0xDEADBEEF) > break; > if (amdgpu_emu_mode == 1) > @@ -975,8 +959,7 @@ static int sdma_v6_0_ring_test_ring(struct amdgpu_ring *ring) > if (i >= adev->usec_timeout) > r = -ETIMEDOUT; > > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > > return r; > } > @@ -999,37 +982,23 @@ static int sdma_v6_0_ring_test_ib(struct amdgpu_ring *ring, long timeout) > long r; > u32 tmp = 0; > u64 gpu_addr; > - volatile uint32_t *cpu_ptr = NULL; > > tmp = 0xCAFEDEAD; > memset(&ib, 0, sizeof(ib)); > > - if (ring->is_mes_queue) { > - uint32_t offset = 0; > - offset = amdgpu_mes_ctx_get_offs(ring, AMDGPU_MES_CTX_IB_OFFS); > - ib.gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - ib.ptr = (void *)amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - > - offset = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_PADDING_OFFS); > - gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - cpu_ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - *cpu_ptr = tmp; > - } else { > - r = amdgpu_device_wb_get(adev, &index); > - if (r) { > - dev_err(adev->dev, "(%ld) failed to allocate wb slot\n", r); > - return r; > - } > + r = amdgpu_device_wb_get(adev, &index); > + if (r) { > + dev_err(adev->dev, "(%ld) failed to allocate wb slot\n", r); > + return r; > + } > > - gpu_addr = adev->wb.gpu_addr + (index * 4); > - adev->wb.wb[index] = cpu_to_le32(tmp); > + gpu_addr = adev->wb.gpu_addr + (index * 4); > + adev->wb.wb[index] = cpu_to_le32(tmp); > > - r = amdgpu_ib_get(adev, NULL, 256, AMDGPU_IB_POOL_DIRECT, &ib); > - if (r) { > - DRM_ERROR("amdgpu: failed to get ib (%ld).\n", r); > - goto err0; > - } > + r = amdgpu_ib_get(adev, NULL, 256, AMDGPU_IB_POOL_DIRECT, &ib); > + if (r) { > + DRM_ERROR("amdgpu: failed to get ib (%ld).\n", r); > + goto err0; > } > > ib.ptr[0] = SDMA_PKT_COPY_LINEAR_HEADER_OP(SDMA_OP_WRITE) | > @@ -1057,10 +1026,7 @@ static int sdma_v6_0_ring_test_ib(struct amdgpu_ring *ring, long timeout) > goto err1; > } > > - if (ring->is_mes_queue) > - tmp = le32_to_cpu(*cpu_ptr); > - else > - tmp = le32_to_cpu(adev->wb.wb[index]); > + tmp = le32_to_cpu(adev->wb.wb[index]); > > if (tmp == 0xDEADBEEF) > r = 0; > @@ -1071,8 +1037,7 @@ static int sdma_v6_0_ring_test_ib(struct amdgpu_ring *ring, long timeout) > amdgpu_ib_free(&ib, NULL); > dma_fence_put(f); > err0: > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > return r; > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c > index f10de8e2fcae2..7a788da2ef5d7 100644 > --- a/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c > @@ -205,66 +205,39 @@ static uint64_t sdma_v7_0_ring_get_wptr(struct amdgpu_ring *ring) > static void sdma_v7_0_ring_set_wptr(struct amdgpu_ring *ring) > { > struct amdgpu_device *adev = ring->adev; > - uint32_t *wptr_saved; > - uint32_t *is_queue_unmap; > - uint64_t aggregated_db_index; > - uint32_t mqd_size = adev->mqds[AMDGPU_HW_IP_DMA].mqd_size; > > DRM_DEBUG("Setting write pointer\n"); > > - if (ring->is_mes_queue) { > - wptr_saved = (uint32_t *)(ring->mqd_ptr + mqd_size); > - is_queue_unmap = (uint32_t *)(ring->mqd_ptr + mqd_size + > - sizeof(uint32_t)); > - aggregated_db_index = > - amdgpu_mes_get_aggregated_doorbell_index(adev, > - ring->hw_prio); > - > + if (ring->use_doorbell) { > + DRM_DEBUG("Using doorbell -- " > + "wptr_offs == 0x%08x " > + "lower_32_bits(ring->wptr) << 2 == 0x%08x " > + "upper_32_bits(ring->wptr) << 2 == 0x%08x\n", > + ring->wptr_offs, > + lower_32_bits(ring->wptr << 2), > + upper_32_bits(ring->wptr << 2)); > + /* XXX check if swapping is necessary on BE */ > atomic64_set((atomic64_t *)ring->wptr_cpu_addr, > ring->wptr << 2); > - *wptr_saved = ring->wptr << 2; > - if (*is_queue_unmap) { > - WDOORBELL64(aggregated_db_index, ring->wptr << 2); > - DRM_DEBUG("calling WDOORBELL64(0x%08x, 0x%016llx)\n", > - ring->doorbell_index, ring->wptr << 2); > - WDOORBELL64(ring->doorbell_index, ring->wptr << 2); > - } else { > - DRM_DEBUG("calling WDOORBELL64(0x%08x, 0x%016llx)\n", > - ring->doorbell_index, ring->wptr << 2); > - WDOORBELL64(ring->doorbell_index, ring->wptr << 2); > - } > + DRM_DEBUG("calling WDOORBELL64(0x%08x, 0x%016llx)\n", > + ring->doorbell_index, ring->wptr << 2); > + WDOORBELL64(ring->doorbell_index, ring->wptr << 2); > } else { > - if (ring->use_doorbell) { > - DRM_DEBUG("Using doorbell -- " > - "wptr_offs == 0x%08x " > - "lower_32_bits(ring->wptr) << 2 == 0x%08x " > - "upper_32_bits(ring->wptr) << 2 == 0x%08x\n", > - ring->wptr_offs, > - lower_32_bits(ring->wptr << 2), > - upper_32_bits(ring->wptr << 2)); > - /* XXX check if swapping is necessary on BE */ > - atomic64_set((atomic64_t *)ring->wptr_cpu_addr, > - ring->wptr << 2); > - DRM_DEBUG("calling WDOORBELL64(0x%08x, 0x%016llx)\n", > - ring->doorbell_index, ring->wptr << 2); > - WDOORBELL64(ring->doorbell_index, ring->wptr << 2); > - } else { > - DRM_DEBUG("Not using doorbell -- " > - "regSDMA%i_GFX_RB_WPTR == 0x%08x " > - "regSDMA%i_GFX_RB_WPTR_HI == 0x%08x\n", > - ring->me, > - lower_32_bits(ring->wptr << 2), > - ring->me, > - upper_32_bits(ring->wptr << 2)); > - WREG32_SOC15_IP(GC, sdma_v7_0_get_reg_offset(adev, > - ring->me, > - regSDMA0_QUEUE0_RB_WPTR), > - lower_32_bits(ring->wptr << 2)); > - WREG32_SOC15_IP(GC, sdma_v7_0_get_reg_offset(adev, > - ring->me, > - regSDMA0_QUEUE0_RB_WPTR_HI), > - upper_32_bits(ring->wptr << 2)); > - } > + DRM_DEBUG("Not using doorbell -- " > + "regSDMA%i_GFX_RB_WPTR == 0x%08x " > + "regSDMA%i_GFX_RB_WPTR_HI == 0x%08x\n", > + ring->me, > + lower_32_bits(ring->wptr << 2), > + ring->me, > + upper_32_bits(ring->wptr << 2)); > + WREG32_SOC15_IP(GC, sdma_v7_0_get_reg_offset(adev, > + ring->me, > + regSDMA0_QUEUE0_RB_WPTR), > + lower_32_bits(ring->wptr << 2)); > + WREG32_SOC15_IP(GC, sdma_v7_0_get_reg_offset(adev, > + ring->me, > + regSDMA0_QUEUE0_RB_WPTR_HI), > + upper_32_bits(ring->wptr << 2)); > } > } > > @@ -408,11 +381,9 @@ static void sdma_v7_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se > } > > if (flags & AMDGPU_FENCE_FLAG_INT) { > - uint32_t ctx = ring->is_mes_queue ? > - (ring->hw_queue_id | AMDGPU_FENCE_MES_QUEUE_FLAG) : 0; > /* generate an interrupt */ > amdgpu_ring_write(ring, SDMA_PKT_COPY_LINEAR_HEADER_OP(SDMA_OP_TRAP)); > - amdgpu_ring_write(ring, SDMA_PKT_TRAP_INT_CONTEXT_INT_CONTEXT(ctx)); > + amdgpu_ring_write(ring, SDMA_PKT_TRAP_INT_CONTEXT_INT_CONTEXT(0)); > } > } > > @@ -965,33 +936,22 @@ static int sdma_v7_0_ring_test_ring(struct amdgpu_ring *ring) > int r; > u32 tmp; > u64 gpu_addr; > - volatile uint32_t *cpu_ptr = NULL; > > tmp = 0xCAFEDEAD; > > - if (ring->is_mes_queue) { > - uint32_t offset = 0; > - offset = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_PADDING_OFFS); > - gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - cpu_ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - *cpu_ptr = tmp; > - } else { > - r = amdgpu_device_wb_get(adev, &index); > - if (r) { > - dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r); > - return r; > - } > - > - gpu_addr = adev->wb.gpu_addr + (index * 4); > - adev->wb.wb[index] = cpu_to_le32(tmp); > + r = amdgpu_device_wb_get(adev, &index); > + if (r) { > + dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r); > + return r; > } > > + gpu_addr = adev->wb.gpu_addr + (index * 4); > + adev->wb.wb[index] = cpu_to_le32(tmp); > + > r = amdgpu_ring_alloc(ring, 5); > if (r) { > DRM_ERROR("amdgpu: dma failed to lock ring %d (%d).\n", ring->idx, r); > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > return r; > } > > @@ -1004,10 +964,7 @@ static int sdma_v7_0_ring_test_ring(struct amdgpu_ring *ring) > amdgpu_ring_commit(ring); > > for (i = 0; i < adev->usec_timeout; i++) { > - if (ring->is_mes_queue) > - tmp = le32_to_cpu(*cpu_ptr); > - else > - tmp = le32_to_cpu(adev->wb.wb[index]); > + tmp = le32_to_cpu(adev->wb.wb[index]); > if (tmp == 0xDEADBEEF) > break; > if (amdgpu_emu_mode == 1) > @@ -1019,8 +976,7 @@ static int sdma_v7_0_ring_test_ring(struct amdgpu_ring *ring) > if (i >= adev->usec_timeout) > r = -ETIMEDOUT; > > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > > return r; > } > @@ -1043,37 +999,23 @@ static int sdma_v7_0_ring_test_ib(struct amdgpu_ring *ring, long timeout) > long r; > u32 tmp = 0; > u64 gpu_addr; > - volatile uint32_t *cpu_ptr = NULL; > > tmp = 0xCAFEDEAD; > memset(&ib, 0, sizeof(ib)); > > - if (ring->is_mes_queue) { > - uint32_t offset = 0; > - offset = amdgpu_mes_ctx_get_offs(ring, AMDGPU_MES_CTX_IB_OFFS); > - ib.gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - ib.ptr = (void *)amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - > - offset = amdgpu_mes_ctx_get_offs(ring, > - AMDGPU_MES_CTX_PADDING_OFFS); > - gpu_addr = amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset); > - cpu_ptr = amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset); > - *cpu_ptr = tmp; > - } else { > - r = amdgpu_device_wb_get(adev, &index); > - if (r) { > - dev_err(adev->dev, "(%ld) failed to allocate wb slot\n", r); > - return r; > - } > + r = amdgpu_device_wb_get(adev, &index); > + if (r) { > + dev_err(adev->dev, "(%ld) failed to allocate wb slot\n", r); > + return r; > + } > > - gpu_addr = adev->wb.gpu_addr + (index * 4); > - adev->wb.wb[index] = cpu_to_le32(tmp); > + gpu_addr = adev->wb.gpu_addr + (index * 4); > + adev->wb.wb[index] = cpu_to_le32(tmp); > > - r = amdgpu_ib_get(adev, NULL, 256, AMDGPU_IB_POOL_DIRECT, &ib); > - if (r) { > - DRM_ERROR("amdgpu: failed to get ib (%ld).\n", r); > - goto err0; > - } > + r = amdgpu_ib_get(adev, NULL, 256, AMDGPU_IB_POOL_DIRECT, &ib); > + if (r) { > + DRM_ERROR("amdgpu: failed to get ib (%ld).\n", r); > + goto err0; > } > > ib.ptr[0] = SDMA_PKT_COPY_LINEAR_HEADER_OP(SDMA_OP_WRITE) | > @@ -1101,10 +1043,7 @@ static int sdma_v7_0_ring_test_ib(struct amdgpu_ring *ring, long timeout) > goto err1; > } > > - if (ring->is_mes_queue) > - tmp = le32_to_cpu(*cpu_ptr); > - else > - tmp = le32_to_cpu(adev->wb.wb[index]); > + tmp = le32_to_cpu(adev->wb.wb[index]); > > if (tmp == 0xDEADBEEF) > r = 0; > @@ -1115,8 +1054,7 @@ static int sdma_v7_0_ring_test_ib(struct amdgpu_ring *ring, long timeout) > amdgpu_ib_free(&ib, NULL); > dma_fence_put(f); > err0: > - if (!ring->is_mes_queue) > - amdgpu_device_wb_free(adev, index); > + amdgpu_device_wb_free(adev, index); > return r; > } > > -- > 2.48.1 >