== Description == Scnprintf use within the kernel is not recommended, but simple sysfs_emit replacement has not been successful due to the page alignment requirement of the function. This patch set implements a new api "emit_clock_levels" to facilitate passing both the base and offset to the device rather than just the write pointer. This patch is only implemented for navi10 for some clocks to seek comment on the implementation before extending the implementation to other clock values and devices. Needs to be verified on a platform that supports the overclocking (v2) Update to apply on commit 801771de03 adjust printing of empty carriage return only if size == 0 change return from amdgpu_dpm_emit_clock_levels if emit_clock_levels not found == Patch Summary == linux: (git@xxxxxxxxxxxxxxxxxxxxxx:agd5f) origin/amd-staging-drm-next @ 28907fd9e048 + f83a3144ede4 amdgpu/pm: Implement new API function "emit" that accepts buffer base and write offset + 82de36426a1f amdgpu/pm: insert attempt to call emit_clock_levels into amdgpu_get_pp_od_clk_voltage + 32f0fcf45dd8 amdgpu/pm: Add Error Handling to emit_clocks stack == System Summary == * DESKTOP(AMD FX-8350 + NAVI10(731F/ca), BIOS: F2) + ISO(Ubuntu 20.04.3 LTS) + Kernel(5.13.0-fdoagd5f-20220112-g28907fd9e0) == Test == LOGFILE=pp_clk.test.log AMDGPU_PCI_ADDR=`lspci -nn | grep "VGA\|Display" | cut -d " " -f 1` AMDGPU_HWMON=`ls -la /sys/class/hwmon | grep $AMDGPU_PCI_ADDR | awk '{print $9}'` HWMON_DIR=/sys/class/hwmon/${AMDGPU_HWMON} lspci -nn | grep "VGA\|Display" > $LOGFILE FILES="pp_od_clk_voltage pp_dpm_sclk pp_dpm_mclk pp_dpm_pcie pp_dpm_socclk pp_dpm_fclk pp_dpm_dcefclk pp_dpm_vclk pp_dpm_dclk " for f in $FILES do echo === $f === >> $LOGFILE cat $HWMON_DIR/device/$f >> $LOGFILE done cat $LOGFILE Darren Powell (3): amdgpu/pm: Implement new API function "emit" that accepts buffer base and write offset amdgpu/pm: insert attempt to call emit_clock_levels into amdgpu_get_pp_od_clk_voltage amdgpu/pm: Add Error Handling to emit_clocks stack .../gpu/drm/amd/include/kgd_pp_interface.h | 1 + drivers/gpu/drm/amd/pm/amdgpu_dpm.c | 21 ++ drivers/gpu/drm/amd/pm/amdgpu_pm.c | 49 +++-- drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h | 4 + drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 44 +++- drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h | 14 ++ .../gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c | 188 ++++++++++++++++++ 7 files changed, 302 insertions(+), 19 deletions(-) base-commit: 28907fd9e04859fab86a143271d29ff0ff043154 -- 2.34.1