On Fri, Jan 31, 2025 at 8:02 AM Lijo Lazar <lijo.lazar@xxxxxxx> 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@xxxxxxx> Acked-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > 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 >