@@ -1932,12 +1932,17 @@ static struct notifier_block __refdata cpufreq_cpu_notifier = {
/*********************************************************************
* BOOST *
*********************************************************************/
-static int cpufreq_boost_trigger_state_sw(void)
+static int cpufreq_boost_trigger_state_sw(int state)
{
struct cpufreq_frequency_table *freq_table;
struct cpufreq_policy *policy;
int ret = -EINVAL;
+ if (state && cpufreq_num_busy_cpu() > 1) {
+ boost_enabled = 0;
+ return 0;
+ }
+
list_for_each_entry(policy, &cpufreq_policy_list, policy_list) {
freq_table = cpufreq_frequency_get_table(policy->cpu);
if (freq_table)
@@ -1959,7 +1964,7 @@ int cpufreq_boost_trigger_state(int state)
if (cpufreq_driver->enable_boost)
ret = cpufreq_driver->enable_boost(state);
else
- ret = cpufreq_boost_trigger_state_sw();
+ ret = cpufreq_boost_trigger_state_sw(state);
if (ret) {
boost_enabled = 0;
@@ -162,6 +162,9 @@ void dbs_check_cpu(struct dbs_data *dbs_data, int cpu)
max_load = load;
}
+ if (cpufreq_boost_supported() && cpufreq_num_busy_cpu() > 1)
+ cpufreq_boost_trigger_state(0);
+
dbs_data->cdata->gov_check_cpu(cpu, max_load);
}
EXPORT_SYMBOL_GPL(dbs_check_cpu);