[CPUFREQ] Only check for transition latency on problematic governors (kconfig fix)
Cc: Adrian Bunk <bunk@stusta.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Dave Jones <davej@redhat.com>
This commit is contained in:
parent
1c2562459f
commit
6afde10c3f
|
@ -1484,17 +1484,30 @@ static int __cpufreq_governor(struct cpufreq_policy *policy,
|
||||||
unsigned int event)
|
unsigned int event)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct cpufreq_governor *gov = CPUFREQ_PERFORMANCE_GOVERNOR;
|
|
||||||
|
/* Only must be defined when default governor is known to have latency
|
||||||
|
restrictions, like e.g. conservative or ondemand.
|
||||||
|
That this is the case is already ensured in Kconfig
|
||||||
|
*/
|
||||||
|
#ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE
|
||||||
|
struct cpufreq_governor *gov = &cpufreq_gov_performance;
|
||||||
|
#else
|
||||||
|
struct cpufreq_governor *gov = NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (policy->governor->max_transition_latency &&
|
if (policy->governor->max_transition_latency &&
|
||||||
policy->cpuinfo.transition_latency >
|
policy->cpuinfo.transition_latency >
|
||||||
policy->governor->max_transition_latency) {
|
policy->governor->max_transition_latency) {
|
||||||
printk(KERN_WARNING "%s governor failed, too long"
|
if (!gov)
|
||||||
" transition latency of HW, fallback"
|
return -EINVAL;
|
||||||
" to %s governor\n",
|
else {
|
||||||
policy->governor->name,
|
printk(KERN_WARNING "%s governor failed, too long"
|
||||||
gov->name);
|
" transition latency of HW, fallback"
|
||||||
policy->governor = gov;
|
" to %s governor\n",
|
||||||
|
policy->governor->name,
|
||||||
|
gov->name);
|
||||||
|
policy->governor = gov;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!try_module_get(policy->governor->owner))
|
if (!try_module_get(policy->governor->owner))
|
||||||
|
|
|
@ -286,8 +286,9 @@ static inline unsigned int cpufreq_quick_get(unsigned int cpu)
|
||||||
Performance governor is fallback governor if any other gov failed to
|
Performance governor is fallback governor if any other gov failed to
|
||||||
auto load due latency restrictions
|
auto load due latency restrictions
|
||||||
*/
|
*/
|
||||||
|
#ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE
|
||||||
extern struct cpufreq_governor cpufreq_gov_performance;
|
extern struct cpufreq_governor cpufreq_gov_performance;
|
||||||
#define CPUFREQ_PERFORMANCE_GOVERNOR (&cpufreq_gov_performance)
|
#endif
|
||||||
#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE
|
#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE
|
||||||
#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_performance)
|
#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_performance)
|
||||||
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE)
|
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE)
|
||||||
|
|
Loading…
Reference in New Issue