]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
tools/power turbostat: Fix bogus SysWatt for forked program
authorZhang Rui <rui.zhang@intel.com>
Tue, 17 Jun 2025 12:48:59 +0000 (20:48 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Aug 2025 14:39:29 +0000 (16:39 +0200)
[ Upstream commit 44207567fa64e995d4f2ec2d45af4c947cb1a465 ]

Similar to delta_cpu(), delta_platform() is called in turbostat main
loop. This ensures accurate SysWatt readings in periodic monitoring mode
$ sudo turbostat -S -q --show power -i 1
CoreTmp PkgTmp PkgWatt CorWatt GFXWatt RAMWatt PKG_% RAM_% SysWatt
60 61 6.21 1.13 0.16 0.00 0.00 0.00 13.07
58 61 6.00 1.07 0.18 0.00 0.00 0.00 12.75
58 61 5.74 1.05 0.17 0.00 0.00 0.00 12.22
58 60 6.27 1.11 0.24 0.00 0.00 0.00 13.55

However, delta_platform() is missing for forked program and causes bogus
SysWatt reporting,
$ sudo turbostat -S -q --show power sleep 1
1.004736 sec
CoreTmp PkgTmp PkgWatt CorWatt GFXWatt RAMWatt PKG_% RAM_% SysWatt
57 58 6.05 1.02 0.16 0.00 0.00 0.00 0.03

Add missing delta_platform() for forked program.

Fixes: e5f687b89bc2 ("tools/power turbostat: Add RAPL psys as a built-in counter")
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
tools/power/x86/turbostat/turbostat.c

index 33a54a9e0781866ac0797c7901ab101a4b2db0cd..d56d457d6d93a0c0f1162f3c73c33fbed1ea1c9f 100644 (file)
@@ -9816,6 +9816,7 @@ int fork_it(char **argv)
        timersub(&tv_odd, &tv_even, &tv_delta);
        if (for_all_cpus_2(delta_cpu, ODD_COUNTERS, EVEN_COUNTERS))
                fprintf(outf, "%s: Counter reset detected\n", progname);
+       delta_platform(&platform_counters_odd, &platform_counters_even);
 
        compute_average(EVEN_COUNTERS);
        format_all_counters(EVEN_COUNTERS);