[PATCH] drm/amd/pm: Limit to 8 jpeg rings per instance

Alex Deucher alexdeucher at gmail.com
Fri Jan 31 13:53:03 UTC 2025


On Fri, Jan 31, 2025 at 8:02 AM Lijo Lazar <lijo.lazar at amd.com> wrote:
>
> JPEG 5.0.1 supports upto 10 rings, however PMFW support for SMU v13.0.6
> variants is now limited to 8 per instance. Limit to 8 temporarily to
> avoid out of bounds access.
>
> Signed-off-by: Lijo Lazar <lijo.lazar at amd.com>

Acked-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c
> index 7f0b4cc1141b..11591c01be0e 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c
> @@ -2513,6 +2513,7 @@ static ssize_t smu_v13_0_6_get_gpu_metrics(struct smu_context *smu, void **table
>         MetricsTableV2_t *metrics_v2;
>         struct amdgpu_xcp *xcp;
>         u16 link_width_level;
> +       u8 num_jpeg_rings;
>         u32 inst_mask;
>         bool per_inst;
>
> @@ -2649,6 +2650,7 @@ static ssize_t smu_v13_0_6_get_gpu_metrics(struct smu_context *smu, void **table
>
>         per_inst = smu_v13_0_6_cap_supported(smu, SMU_CAP(PER_INST_METRICS));
>
> +       num_jpeg_rings = max_t(u8, adev->jpeg.num_jpeg_rings, 8);
>         for_each_xcp(adev->xcp_mgr, xcp, i) {
>                 amdgpu_xcp_get_inst_details(xcp, AMDGPU_XCP_VCN, &inst_mask);
>                 idx = 0;
> @@ -2656,11 +2658,11 @@ static ssize_t smu_v13_0_6_get_gpu_metrics(struct smu_context *smu, void **table
>                         /* Both JPEG and VCN has same instances */
>                         inst = GET_INST(VCN, k);
>
> -                       for (j = 0; j < adev->jpeg.num_jpeg_rings; ++j) {
> +                       for (j = 0; j < num_jpeg_rings; ++j) {
>                                 gpu_metrics->xcp_stats[i].jpeg_busy
> -                                       [(idx * adev->jpeg.num_jpeg_rings) + j] =
> +                                       [(idx * num_jpeg_rings) + j] =
>                                         SMUQ10_ROUND(GET_METRIC_FIELD(JpegBusy, version)
> -                                                       [(inst * adev->jpeg.num_jpeg_rings) + j]);
> +                                                       [(inst * num_jpeg_rings) + j]);
>                         }
>                         gpu_metrics->xcp_stats[i].vcn_busy[idx] =
>                                SMUQ10_ROUND(GET_METRIC_FIELD(VcnBusy, version)[inst]);
> --
> 2.25.1
>


More information about the amd-gfx mailing list