AMD-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/amdgpu: remove is_mes_queue flag
@ 2025-03-12 17:56 Alex Deucher
  2025-03-18 13:15 ` Alex Deucher
  0 siblings, 1 reply; 3+ messages in thread
From: Alex Deucher @ 2025-03-12 17:56 UTC (permalink / raw)
  To: amd-gfx; +Cc: Alex Deucher

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@amd.com>
---
 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


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/amdgpu: remove is_mes_queue flag
  2025-03-12 17:56 [PATCH] drm/amdgpu: remove is_mes_queue flag Alex Deucher
@ 2025-03-18 13:15 ` Alex Deucher
  2025-03-19 15:27   ` Christian König
  0 siblings, 1 reply; 3+ messages in thread
From: Alex Deucher @ 2025-03-18 13:15 UTC (permalink / raw)
  To: Alex Deucher; +Cc: amd-gfx

Ping?

On Wed, Mar 12, 2025 at 1:57 PM Alex Deucher <alexander.deucher@amd.com> 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@amd.com>
> ---
>  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
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/amdgpu: remove is_mes_queue flag
  2025-03-18 13:15 ` Alex Deucher
@ 2025-03-19 15:27   ` Christian König
  0 siblings, 0 replies; 3+ messages in thread
From: Christian König @ 2025-03-19 15:27 UTC (permalink / raw)
  To: Alex Deucher, Alex Deucher; +Cc: amd-gfx

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

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@amd.com> 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@amd.com>
>> ---
>>  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
>>


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-03-19 15:27 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-12 17:56 [PATCH] drm/amdgpu: remove is_mes_queue flag Alex Deucher
2025-03-18 13:15 ` Alex Deucher
2025-03-19 15:27   ` Christian König

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox