mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-23 07:23:12 +02:00
pm: cpupower: Fix the snapshot-order of tsc,mperf, clock in mperf_stop()
[ Upstream commit cda7ac8ce7
]
In the function mperf_start(), mperf_monitor snapshots the time, tsc
and finally the aperf,mperf MSRs. However, this order of snapshotting
in is reversed in mperf_stop(). As a result, the C0 residency (which
is computed as delta_mperf * 100 / delta_tsc) is under-reported on
CPUs that is 100% busy.
Fix this by snapshotting time, tsc and then aperf,mperf in
mperf_stop() in the same order as in mperf_start().
Link: https://lore.kernel.org/r/20250612122355.19629-2-gautham.shenoy@amd.com
Signed-off-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
1dfeedf1d4
commit
e6601bb3cb
|
@ -240,9 +240,9 @@ static int mperf_stop(void)
|
||||||
int cpu;
|
int cpu;
|
||||||
|
|
||||||
for (cpu = 0; cpu < cpu_count; cpu++) {
|
for (cpu = 0; cpu < cpu_count; cpu++) {
|
||||||
mperf_measure_stats(cpu);
|
|
||||||
mperf_get_tsc(&tsc_at_measure_end[cpu]);
|
|
||||||
clock_gettime(CLOCK_REALTIME, &time_end[cpu]);
|
clock_gettime(CLOCK_REALTIME, &time_end[cpu]);
|
||||||
|
mperf_get_tsc(&tsc_at_measure_end[cpu]);
|
||||||
|
mperf_measure_stats(cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user