[PATCH v2 1/3] drm/amdgpu/vce: set the priority for each ring
Christian König
christian.koenig at amd.com
Fri Aug 27 14:32:44 UTC 2021
Am 27.08.21 um 14:42 schrieb Satyajit Sahu:
> VCE has multiple rings. Set the proper priority level for each
> ring while initializing.
>
> Signed-off-by: Satyajit Sahu <satyajit.sahu at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 14 ++++++++++++++
> drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h | 1 +
> drivers/gpu/drm/amd/amdgpu/vce_v2_0.c | 4 +++-
> drivers/gpu/drm/amd/amdgpu/vce_v3_0.c | 4 +++-
> drivers/gpu/drm/amd/amdgpu/vce_v4_0.c | 4 +++-
> 5 files changed, 24 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
> index 1ae7f824adc7..c07d973a2946 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
> @@ -1168,3 +1168,17 @@ int amdgpu_vce_ring_test_ib(struct amdgpu_ring *ring, long timeout)
> amdgpu_bo_free_kernel(&bo, NULL, NULL);
> return r;
> }
> +
> +enum amdgpu_ring_priority_level amdgpu_vce_get_ring_prio(int ring)
> +{
> + switch(ring) {
> + case 0:
> + return AMDGPU_RING_PRIO_0;
> + case 1:
> + return AMDGPU_RING_PRIO_1;
> + case 2:
> + return AMDGPU_RING_PRIO_2;
> + default:
> + return AMDGPU_RING_PRIO_0;
> + }
> +}
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h
> index d6d83a3ec803..be4a6e773c5b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h
> @@ -71,5 +71,6 @@ void amdgpu_vce_ring_begin_use(struct amdgpu_ring *ring);
> void amdgpu_vce_ring_end_use(struct amdgpu_ring *ring);
> unsigned amdgpu_vce_ring_get_emit_ib_size(struct amdgpu_ring *ring);
> unsigned amdgpu_vce_ring_get_dma_frame_size(struct amdgpu_ring *ring);
> +enum amdgpu_ring_priority_level amdgpu_vce_get_ring_prio(int ring);
>
> #endif
> diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c b/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c
> index c7d28c169be5..8ce37e2d5ffd 100644
> --- a/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c
> @@ -431,10 +431,12 @@ static int vce_v2_0_sw_init(void *handle)
> return r;
>
> for (i = 0; i < adev->vce.num_rings; i++) {
> + unsigned int hw_prio = amdgpu_vce_get_ring_prio(i);
This could use the enum name instead of unsigned int, but that's only a
nit pick and not a must have.
The patches now lock really clean and simple to me now and the set is
Reviewed-by: Christian König <christian.koenig at amd.com>
Regards,
Christian.
> +
> ring = &adev->vce.ring[i];
> sprintf(ring->name, "vce%d", i);
> r = amdgpu_ring_init(adev, ring, 512, &adev->vce.irq, 0,
> - AMDGPU_RING_PRIO_DEFAULT, NULL);
> + hw_prio, NULL);
> if (r)
> return r;
> }
> diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
> index 3b82fb289ef6..e0bc42e1e2b3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
> @@ -440,10 +440,12 @@ static int vce_v3_0_sw_init(void *handle)
> return r;
>
> for (i = 0; i < adev->vce.num_rings; i++) {
> + unsigned int hw_prio = amdgpu_vce_get_ring_prio(i);
> +
> ring = &adev->vce.ring[i];
> sprintf(ring->name, "vce%d", i);
> r = amdgpu_ring_init(adev, ring, 512, &adev->vce.irq, 0,
> - AMDGPU_RING_PRIO_DEFAULT, NULL);
> + hw_prio, NULL);
> if (r)
> return r;
> }
> diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v4_0.c b/drivers/gpu/drm/amd/amdgpu/vce_v4_0.c
> index 90910d19db12..931d3ae09c65 100644
> --- a/drivers/gpu/drm/amd/amdgpu/vce_v4_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/vce_v4_0.c
> @@ -463,6 +463,8 @@ static int vce_v4_0_sw_init(void *handle)
> }
>
> for (i = 0; i < adev->vce.num_rings; i++) {
> + unsigned int hw_prio = amdgpu_vce_get_ring_prio(i);
> +
> ring = &adev->vce.ring[i];
> sprintf(ring->name, "vce%d", i);
> if (amdgpu_sriov_vf(adev)) {
> @@ -478,7 +480,7 @@ static int vce_v4_0_sw_init(void *handle)
> ring->doorbell_index = adev->doorbell_index.uvd_vce.vce_ring2_3 * 2 + 1;
> }
> r = amdgpu_ring_init(adev, ring, 512, &adev->vce.irq, 0,
> - AMDGPU_RING_PRIO_DEFAULT, NULL);
> + hw_prio, NULL);
> if (r)
> return r;
> }
More information about the amd-gfx
mailing list