summaryrefslogtreecommitdiffstats
path: root/include/acpi/cppc_acpi.h
diff options
context:
space:
mode:
authorAshwin Chaugule <ashwin.chaugule@linaro.org>2016-08-16 14:39:42 -0600
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-08-31 01:02:34 +0200
commit158c998ea44ba30ae3d1bde535581c4436417530 (patch)
tree789ea59a8a466b0116b4db7e20d2be58bdf35267 /include/acpi/cppc_acpi.h
parentbe8b88d7d9877114172b32817d8eb3e85d3d8f99 (diff)
downloadtalos-obmc-linux-158c998ea44ba30ae3d1bde535581c4436417530.tar.gz
talos-obmc-linux-158c998ea44ba30ae3d1bde535581c4436417530.zip
ACPI / CPPC: add sysfs support to compute delivered performance
The CPPC tables contain entries for per CPU feedback counters which allows us to compute the delivered performance over a given interval of time. The math for delivered performance per the CPPCv5.0+ spec is: reference perf * delta(delivered perf ctr)/delta(ref perf ctr) Maintaining deltas of the counters in the kernel is messy, as it depends on when the reads are triggered. (e.g. via the cpufreq ->get() interface). Also the ->get() interace only returns one value, so cant return raw values. So instead, leave it to userspace to keep track of raw values and do its math for CPUs it cares about. delivered and reference perf counters are exposed via the same sysfs file to avoid the potential "skid", if these values are read individually from userspace. Signed-off-by: Prashanth Prakash <pprakash@codeaurora.org> Signed-off-by: Ashwin Chaugule <ashwin.chaugule@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'include/acpi/cppc_acpi.h')
-rw-r--r--include/acpi/cppc_acpi.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/include/acpi/cppc_acpi.h b/include/acpi/cppc_acpi.h
index 42cbeb93ea32..f50b5339b888 100644
--- a/include/acpi/cppc_acpi.h
+++ b/include/acpi/cppc_acpi.h
@@ -65,6 +65,7 @@ struct cpc_desc {
int write_cmd_id;
struct cpc_register_resource cpc_regs[MAX_CPC_REG_ENT];
struct acpi_psd_package domain_info;
+ struct kobject kobj;
};
/* These are indexes into the per-cpu cpc_regs[]. Order is important. */
@@ -99,7 +100,6 @@ enum cppc_regs {
struct cppc_perf_caps {
u32 highest_perf;
u32 nominal_perf;
- u32 reference_perf;
u32 lowest_perf;
};
@@ -111,9 +111,9 @@ struct cppc_perf_ctrls {
struct cppc_perf_fb_ctrs {
u64 reference;
- u64 prev_reference;
u64 delivered;
- u64 prev_delivered;
+ u64 reference_perf;
+ u64 ctr_wrap_time;
};
/* Per CPU container for runtime CPPC management. */
OpenPOWER on IntegriCloud