diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/sched.c | 12 | ||||
| -rw-r--r-- | kernel/sched_features.h | 5 | 
2 files changed, 15 insertions, 2 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index c210321adcb..e8e603bf876 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -3602,11 +3602,19 @@ static void update_cpu_power(struct sched_domain *sd, int cpu)  	unsigned long power = SCHED_LOAD_SCALE;  	struct sched_group *sdg = sd->groups; -	power *= arch_scale_freq_power(sd, cpu); +	if (sched_feat(ARCH_POWER)) +		power *= arch_scale_freq_power(sd, cpu); +	else +		power *= default_scale_freq_power(sd, cpu); +  	power >>= SCHED_LOAD_SHIFT;  	if ((sd->flags & SD_SHARE_CPUPOWER) && weight > 1) { -		power *= arch_scale_smt_power(sd, cpu); +		if (sched_feat(ARCH_POWER)) +			power *= arch_scale_smt_power(sd, cpu); +		else +			power *= default_scale_smt_power(sd, cpu); +  		power >>= SCHED_LOAD_SHIFT;  	} diff --git a/kernel/sched_features.h b/kernel/sched_features.h index e98c2e8de1d..294e10edd3c 100644 --- a/kernel/sched_features.h +++ b/kernel/sched_features.h @@ -82,6 +82,11 @@ SCHED_FEAT(LAST_BUDDY, 1)   */  SCHED_FEAT(CACHE_HOT_BUDDY, 1) +/* + * Use arch dependent cpu power functions + */ +SCHED_FEAT(ARCH_POWER, 0) +  SCHED_FEAT(HRTICK, 0)  SCHED_FEAT(DOUBLE_TICK, 0)  SCHED_FEAT(LB_BIAS, 1)  | 
