aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/acpi
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-01-05 11:16:12 +0000
committerKeir Fraser <keir.fraser@citrix.com>2009-01-05 11:16:12 +0000
commit34c6decb5eea92e10aa157321ecb455b854aa351 (patch)
tree9018e6217ae75611009f5963ff6d8b40071b895c /xen/include/acpi
parent8005ca26cb1c8a42e4652fba9c8e5b9d5fc4b82b (diff)
downloadxen-34c6decb5eea92e10aa157321ecb455b854aa351.tar.gz
xen-34c6decb5eea92e10aa157321ecb455b854aa351.tar.bz2
xen-34c6decb5eea92e10aa157321ecb455b854aa351.zip
Cpufreq: prevent negative px resident time, add spinlock to avoid race
Due to NOW() value may drift between different cpus, we add protection to prevent negative px resident time. Due to both cpufreq logic and xenpm may race accessing cpufreq_statistic_data, we add spinlock to avoid race. Signed-off-by: Liu, Jinsong <jinsong.liu@intel.com>
Diffstat (limited to 'xen/include/acpi')
-rw-r--r--xen/include/acpi/cpufreq/cpufreq.h2
-rw-r--r--xen/include/acpi/cpufreq/processor_perf.h1
2 files changed, 3 insertions, 0 deletions
diff --git a/xen/include/acpi/cpufreq/cpufreq.h b/xen/include/acpi/cpufreq/cpufreq.h
index 4314414031..eba0d7c6a4 100644
--- a/xen/include/acpi/cpufreq/cpufreq.h
+++ b/xen/include/acpi/cpufreq/cpufreq.h
@@ -20,6 +20,8 @@
#include "processor_perf.h"
+DECLARE_PER_CPU(spinlock_t, cpufreq_statistic_lock);
+
struct cpufreq_governor;
struct acpi_cpufreq_data {
diff --git a/xen/include/acpi/cpufreq/processor_perf.h b/xen/include/acpi/cpufreq/processor_perf.h
index 6d5d64173c..cc6be7a913 100644
--- a/xen/include/acpi/cpufreq/processor_perf.h
+++ b/xen/include/acpi/cpufreq/processor_perf.h
@@ -9,6 +9,7 @@
int get_cpu_id(u8);
int powernow_cpufreq_init(void);
+void cpufreq_residency_update(unsigned int, uint8_t);
void cpufreq_statistic_update(unsigned int, uint8_t, uint8_t);
int cpufreq_statistic_init(unsigned int);
void cpufreq_statistic_exit(unsigned int);