[AMD Official Use Only] The whole idea seems fine to me. Just some nitpicks for patch1 and patch3. BR Evan > -----Original Message----- > From: Powell, Darren <Darren.Powell@xxxxxxx> > Sent: Saturday, January 22, 2022 11:47 AM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Powell, Darren <Darren.Powell@xxxxxxx> > Subject: [PATCH v2 0/3] Implement parallel sysfs_emit solution for navi10 > > == 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