forked from Minki/linux
x86/aperfmperf: Store aperf/mperf data for cpu frequency reads
Now that the MSR readout is unconditional, store the results in the per CPU data structure along with a jiffies timestamp for the CPU frequency readout code. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Paul E. McKenney <paulmck@kernel.org> Link: https://lore.kernel.org/r/20220415161206.817702355@linutronix.de
This commit is contained in:
parent
bb6e89df90
commit
cd8c0e142d
@ -24,11 +24,17 @@
|
||||
#include "cpu.h"
|
||||
|
||||
struct aperfmperf {
|
||||
seqcount_t seq;
|
||||
unsigned long last_update;
|
||||
u64 acnt;
|
||||
u64 mcnt;
|
||||
u64 aperf;
|
||||
u64 mperf;
|
||||
};
|
||||
|
||||
static DEFINE_PER_CPU_SHARED_ALIGNED(struct aperfmperf, cpu_samples);
|
||||
static DEFINE_PER_CPU_SHARED_ALIGNED(struct aperfmperf, cpu_samples) = {
|
||||
.seq = SEQCNT_ZERO(cpu_samples.seq)
|
||||
};
|
||||
|
||||
struct aperfmperf_sample {
|
||||
unsigned int khz;
|
||||
@ -515,6 +521,12 @@ void arch_scale_freq_tick(void)
|
||||
s->aperf = aperf;
|
||||
s->mperf = mperf;
|
||||
|
||||
raw_write_seqcount_begin(&s->seq);
|
||||
s->last_update = jiffies;
|
||||
s->acnt = acnt;
|
||||
s->mcnt = mcnt;
|
||||
raw_write_seqcount_end(&s->seq);
|
||||
|
||||
scale_freq_tick(acnt, mcnt);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user