Re: [PATCH] drm/amdgpu: remove is_mes_queue flag

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sorry missed that one, Acked-by: Christian König <christian.koenig@xxxxxxx>

Regards,
Christian.

Am 18.03.25 um 14:15 schrieb Alex Deucher:
> 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
>>




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux