diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-02-15 02:13:42 +0100 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-03-09 14:41:03 +0100 |
commit | e4db2813d2e558b6b6bee464308678a57732b390 (patch) | |
tree | 2cd9422569ce684971136492b12323d40c3e0a26 /drivers/cpufreq/cpufreq_governor.h | |
parent | f62b93740c30d0a3f50258d45415f00b763dd70a (diff) | |
download | linux-e4db2813d2e558b6b6bee464308678a57732b390.tar.gz linux-e4db2813d2e558b6b6bee464308678a57732b390.tar.bz2 linux-e4db2813d2e558b6b6bee464308678a57732b390.zip |
cpufreq: governor: Avoid atomic operations in hot paths
Rework the handling of work items by dbs_update_util_handler() and
dbs_work_handler() so the former (which is executed in scheduler
paths) only uses atomic operations when absolutely necessary. That
is, when the policy is shared and dbs_update_util_handler() has
already decided that this is the time to queue up a work item.
In particular, this avoids the atomic ops entirely on platforms where
policy objects are never shared.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Diffstat (limited to 'drivers/cpufreq/cpufreq_governor.h')
-rw-r--r-- | drivers/cpufreq/cpufreq_governor.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/cpufreq/cpufreq_governor.h b/drivers/cpufreq/cpufreq_governor.h index 8138eff5e25b..521daac38ba5 100644 --- a/drivers/cpufreq/cpufreq_governor.h +++ b/drivers/cpufreq/cpufreq_governor.h @@ -130,6 +130,9 @@ struct policy_dbs_info { /* dbs_data may be shared between multiple policy objects */ struct dbs_data *dbs_data; struct list_head list; + /* Status indicators */ + bool is_shared; /* This object is used by multiple CPUs */ + bool work_in_progress; /* Work is being queued up or in progress */ }; static inline void gov_update_sample_delay(struct policy_dbs_info *policy_dbs, |