This series fixes multiple pp_dpm_* sysfs clocks reporting N/A or missing
the * current-level marker on SMU v14.0.0/v14.0.1 APUs (GC 11.5.1).
Background
----------
On GC 11.5.1 APUs, amd-smi reports N/A for VCLK, DCLK, and DCEFCLK
clocks. Additionally, MCLK and FCLK show DPM levels but lack the *
marker indicating the current level.
Fix
---
1. Merge METRICS_AVERAGE_VCLK and METRICS_AVERAGE_DCLK into a single
fall-through case mapping both to VclkFrequency (SmuMetrics_t has no
DclkFrequency field; DCLK tracks VCLK on VCN).
2. Add IP_VERSION(11,5,1) to pp_dpm_vclk, pp_dpm_dclk, pp_dpm_vclk1
and pp_dpm_dclk1 whitelists. The target APU has two VCN instances.
3. Add SMU_DCEFCLK to get_dpm_freq_by_index and get_dpm_level_count
using DcfClocks[]/NumDcfClkLevelsEnabled. Add DCEFCLK case in
emit_clk_levels.
4. Add closest-match fallback in emit_clk_levels: on exact match, set
closest_idx and break immediately; otherwise track the DPM level
with the smallest absolute frequency difference, with early exit
when the diff starts increasing. Reverse DPM index for SMU_MCLK
since MemPstateTable stores levels high-to-low.
Validation
----------
Tested on GC 11.5.1, SMU 14.0.1 APU. All pp_dpm_* clocks now report
correct DPM levels with * markers via both sysfs and amd-smi.
Changes since v1:
- Patch 1: Dropped VCLK1/DCLK1 metric handlers; let them fall through
to default UINT_MAX (N/A) as suggested by Lijo.
- Patch 4: On exact match, set closest_idx and break instead of
continuing the loop. Added early exit when diff starts increasing
(monotonic DPM levels), as suggested by Lijo.
Priya Hosur (4):
drm/amd/pm: smu_v14_0_0: add DCLK metric handler via VCLK fall-through
drm/amd/pm: add IP_VERSION(11,5,1) to vclk/dclk DPM sysfs whitelists
drm/amd/pm: smu_v14_0_0: add SMU_DCEFCLK support in DPM frequency
queries
drm/amd/pm: smu_v14_0_0: add closest-match fallback for DPM level
marking
drivers/gpu/drm/amd/pm/amdgpu_pm.c | 8 +-
.../drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c | 82 +++++++++++++++++--
2 files changed, 80 insertions(+), 10 deletions(-)
--
2.43.0