diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-01-05 11:16:12 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-01-05 11:16:12 +0000 |
commit | 34c6decb5eea92e10aa157321ecb455b854aa351 (patch) | |
tree | 9018e6217ae75611009f5963ff6d8b40071b895c /xen/include/acpi | |
parent | 8005ca26cb1c8a42e4652fba9c8e5b9d5fc4b82b (diff) | |
download | xen-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.h | 2 | ||||
-rw-r--r-- | xen/include/acpi/cpufreq/processor_perf.h | 1 |
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); |