[PATCH 3/4] drm/radeon: name rings
Alexandre Demers
alexandre.f.demers at gmail.com
Wed Aug 13 00:01:40 UTC 2025
The names used are the same as the ones under amdgpu.
For coherence with amdgpu, even if SI's DMA rings are not exactly the
same as the "new SDMA" that followed for subsequent GPUs, sdma is kept
as a naming convention.
Signed-off-by: Alexandre Demers <alexandre.f.demers at gmail.com>
---
drivers/gpu/drm/radeon/cik.c | 27 +++++++++++++++++++++------
drivers/gpu/drm/radeon/ni.c | 10 ++++++++--
drivers/gpu/drm/radeon/si.c | 36 +++++++++++++++++++++++++++---------
3 files changed, 56 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index 11a492f21157..6d6a6abd57fb 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -8109,6 +8109,7 @@ int cik_irq_process(struct radeon_device *rdev)
static void cik_uvd_init(struct radeon_device *rdev)
{
int r;
+ struct radeon_ring *ring = &rdev->ring[R600_RING_TYPE_UVD_INDEX];
if (!rdev->has_uvd)
return;
@@ -8125,8 +8126,10 @@ static void cik_uvd_init(struct radeon_device *rdev)
rdev->has_uvd = false;
return;
}
- rdev->ring[R600_RING_TYPE_UVD_INDEX].ring_obj = NULL;
- r600_ring_init(rdev, &rdev->ring[R600_RING_TYPE_UVD_INDEX], 4096);
+
+ ring->ring_obj = NULL;
+ sprintf(ring->name, "uvd");
+ r600_ring_init(rdev, ring, 4096);
}
static void cik_uvd_start(struct radeon_device *rdev)
@@ -8181,6 +8184,7 @@ static void cik_uvd_resume(struct radeon_device *rdev)
static void cik_vce_init(struct radeon_device *rdev)
{
int r;
+ struct radeon_ring *ring;
if (!rdev->has_vce)
return;
@@ -8197,10 +8201,16 @@ static void cik_vce_init(struct radeon_device *rdev)
rdev->has_vce = false;
return;
}
- rdev->ring[TN_RING_TYPE_VCE1_INDEX].ring_obj = NULL;
- r600_ring_init(rdev, &rdev->ring[TN_RING_TYPE_VCE1_INDEX], 4096);
- rdev->ring[TN_RING_TYPE_VCE2_INDEX].ring_obj = NULL;
- r600_ring_init(rdev, &rdev->ring[TN_RING_TYPE_VCE2_INDEX], 4096);
+
+ ring = &rdev->ring[TN_RING_TYPE_VCE1_INDEX];
+ ring->ring_obj = NULL;
+ sprintf(ring->name, "vce0");
+ r600_ring_init(rdev, ring, 4096);
+
+ ring = &rdev->ring[TN_RING_TYPE_VCE2_INDEX];
+ ring->ring_obj = NULL;
+ sprintf(ring->name, "vce1");
+ r600_ring_init(rdev, ring, 4096);
}
static void cik_vce_start(struct radeon_device *rdev)
@@ -8621,10 +8631,12 @@ int cik_init(struct radeon_device *rdev)
ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
ring->ring_obj = NULL;
+ sprintf(ring->name, "gfx");
r600_ring_init(rdev, ring, 1024 * 1024);
ring = &rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX];
ring->ring_obj = NULL;
+ sprintf(ring->name, "comp_%d.%d.%d", 1, ring->pipe, ring->queue);
r600_ring_init(rdev, ring, 1024 * 1024);
r = radeon_doorbell_get(rdev, &ring->doorbell_index);
if (r)
@@ -8632,6 +8644,7 @@ int cik_init(struct radeon_device *rdev)
ring = &rdev->ring[CAYMAN_RING_TYPE_CP2_INDEX];
ring->ring_obj = NULL;
+ sprintf(ring->name, "comp_%d.%d.%d", 2, ring->pipe, ring->queue);
r600_ring_init(rdev, ring, 1024 * 1024);
r = radeon_doorbell_get(rdev, &ring->doorbell_index);
if (r)
@@ -8639,10 +8652,12 @@ int cik_init(struct radeon_device *rdev)
ring = &rdev->ring[R600_RING_TYPE_DMA_INDEX];
ring->ring_obj = NULL;
+ sprintf(ring->name, "sdma0");
r600_ring_init(rdev, ring, 256 * 1024);
ring = &rdev->ring[CAYMAN_RING_TYPE_DMA1_INDEX];
ring->ring_obj = NULL;
+ sprintf(ring->name, "sdma1");
r600_ring_init(rdev, ring, 256 * 1024);
cik_uvd_init(rdev);
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
index 3890911fe693..5069a9a3bfbd 100644
--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -1978,6 +1978,7 @@ bool cayman_gfx_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring)
static void cayman_uvd_init(struct radeon_device *rdev)
{
int r;
+ struct radeon_ring *ring = &rdev->ring[R600_RING_TYPE_UVD_INDEX];
if (!rdev->has_uvd)
return;
@@ -1994,8 +1995,10 @@ static void cayman_uvd_init(struct radeon_device *rdev)
rdev->has_uvd = false;
return;
}
- rdev->ring[R600_RING_TYPE_UVD_INDEX].ring_obj = NULL;
- r600_ring_init(rdev, &rdev->ring[R600_RING_TYPE_UVD_INDEX], 4096);
+
+ ring->ring_obj = NULL;
+ sprintf(ring->name, "uvd");
+ r600_ring_init(rdev, ring, 4096);
}
static void cayman_uvd_start(struct radeon_device *rdev)
@@ -2394,14 +2397,17 @@ int cayman_init(struct radeon_device *rdev)
radeon_pm_init(rdev);
ring->ring_obj = NULL;
+ sprintf(ring->name, "gfx");
r600_ring_init(rdev, ring, 1024 * 1024);
ring = &rdev->ring[R600_RING_TYPE_DMA_INDEX];
ring->ring_obj = NULL;
+ sprintf(ring->name, "sdma0");
r600_ring_init(rdev, ring, 64 * 1024);
ring = &rdev->ring[CAYMAN_RING_TYPE_DMA1_INDEX];
ring->ring_obj = NULL;
+ sprintf(ring->name, "sdma1");
r600_ring_init(rdev, ring, 64 * 1024);
cayman_uvd_init(rdev);
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
index 789f3b2fdf5c..d6d83b76dc98 100644
--- a/drivers/gpu/drm/radeon/si.c
+++ b/drivers/gpu/drm/radeon/si.c
@@ -6439,6 +6439,7 @@ int si_irq_process(struct radeon_device *rdev)
static void si_uvd_init(struct radeon_device *rdev)
{
int r;
+ struct radeon_ring *ring = &rdev->ring[R600_RING_TYPE_UVD_INDEX];
if (!rdev->has_uvd)
return;
@@ -6455,8 +6456,10 @@ static void si_uvd_init(struct radeon_device *rdev)
rdev->has_uvd = false;
return;
}
- rdev->ring[R600_RING_TYPE_UVD_INDEX].ring_obj = NULL;
- r600_ring_init(rdev, &rdev->ring[R600_RING_TYPE_UVD_INDEX], 4096);
+
+ ring->ring_obj = NULL;
+ sprintf(ring->name, "uvd");
+ r600_ring_init(rdev, ring, 4096);
}
static void si_uvd_start(struct radeon_device *rdev)
@@ -6506,6 +6509,7 @@ static void si_uvd_resume(struct radeon_device *rdev)
static void si_vce_init(struct radeon_device *rdev)
{
int r;
+ struct radeon_ring *ring;
if (!rdev->has_vce)
return;
@@ -6522,27 +6526,36 @@ static void si_vce_init(struct radeon_device *rdev)
rdev->has_vce = false;
return;
}
- rdev->ring[TN_RING_TYPE_VCE1_INDEX].ring_obj = NULL;
- r600_ring_init(rdev, &rdev->ring[TN_RING_TYPE_VCE1_INDEX], 4096);
- rdev->ring[TN_RING_TYPE_VCE2_INDEX].ring_obj = NULL;
- r600_ring_init(rdev, &rdev->ring[TN_RING_TYPE_VCE2_INDEX], 4096);
+
+ ring = &rdev->ring[TN_RING_TYPE_VCE1_INDEX];
+ ring->ring_obj = NULL;
+ sprintf(ring->name, "vce0");
+ r600_ring_init(rdev, ring, 4096);
+
+ ring = &rdev->ring[TN_RING_TYPE_VCE2_INDEX];
+ ring->ring_obj = NULL;
+ sprintf(ring->name, "vce1");
+ r600_ring_init(rdev, ring, 4096);
}
static void si_vce_start(struct radeon_device *rdev)
{
+ DRM_INFO("In %s, similar to AMDGPU vce_v1_0_resume() + radeon_fence_driver_start_ring()", __func__);
int r;
- if (!rdev->has_vce)
+ if (!rdev->has_vce) {
+ DRM_INFO("Out %s", __func__);
return;
+ }
r = radeon_vce_resume(rdev);
if (r) {
dev_err(rdev->dev, "failed VCE resume (%d).\n", r);
goto error;
}
- r = vce_v1_0_resume(rdev);
+ r = vce_v1_0_mc_resume(rdev);
if (r) {
- dev_err(rdev->dev, "failed VCE resume (%d).\n", r);
+ dev_err(rdev->dev, "failed VCE MC resume (%d).\n", r);
goto error;
}
r = radeon_fence_driver_start_ring(rdev, TN_RING_TYPE_VCE1_INDEX);
@@ -6867,22 +6880,27 @@ int si_init(struct radeon_device *rdev)
ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
ring->ring_obj = NULL;
+ sprintf(ring->name, "gfx");
r600_ring_init(rdev, ring, 1024 * 1024);
ring = &rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX];
ring->ring_obj = NULL;
+ sprintf(ring->name, "comp_%d.%d.%d", 1, ring->pipe, ring->queue);
r600_ring_init(rdev, ring, 1024 * 1024);
ring = &rdev->ring[CAYMAN_RING_TYPE_CP2_INDEX];
ring->ring_obj = NULL;
+ sprintf(ring->name, "comp_%d.%d.%d", 2, ring->pipe, ring->queue);
r600_ring_init(rdev, ring, 1024 * 1024);
ring = &rdev->ring[R600_RING_TYPE_DMA_INDEX];
ring->ring_obj = NULL;
+ sprintf(ring->name, "sdma0");
r600_ring_init(rdev, ring, 64 * 1024);
ring = &rdev->ring[CAYMAN_RING_TYPE_DMA1_INDEX];
ring->ring_obj = NULL;
+ sprintf(ring->name, "sdma1");
r600_ring_init(rdev, ring, 64 * 1024);
si_uvd_init(rdev);
--
2.50.1
More information about the amd-gfx
mailing list