|
@@ -5705,19 +5705,17 @@ unsigned long __weak arch_scale_freq_capacity(struct sched_domain *sd, int cpu)
|
|
|
return default_scale_capacity(sd, cpu);
|
|
|
}
|
|
|
|
|
|
-static unsigned long default_scale_smt_capacity(struct sched_domain *sd, int cpu)
|
|
|
+static unsigned long default_scale_cpu_capacity(struct sched_domain *sd, int cpu)
|
|
|
{
|
|
|
- unsigned long weight = sd->span_weight;
|
|
|
- unsigned long smt_gain = sd->smt_gain;
|
|
|
+ if ((sd->flags & SD_SHARE_CPUCAPACITY) && (sd->span_weight > 1))
|
|
|
+ return sd->smt_gain / sd->span_weight;
|
|
|
|
|
|
- smt_gain /= weight;
|
|
|
-
|
|
|
- return smt_gain;
|
|
|
+ return SCHED_CAPACITY_SCALE;
|
|
|
}
|
|
|
|
|
|
-unsigned long __weak arch_scale_smt_capacity(struct sched_domain *sd, int cpu)
|
|
|
+unsigned long __weak arch_scale_cpu_capacity(struct sched_domain *sd, int cpu)
|
|
|
{
|
|
|
- return default_scale_smt_capacity(sd, cpu);
|
|
|
+ return default_scale_cpu_capacity(sd, cpu);
|
|
|
}
|
|
|
|
|
|
static unsigned long scale_rt_capacity(int cpu)
|
|
@@ -5756,18 +5754,15 @@ static unsigned long scale_rt_capacity(int cpu)
|
|
|
|
|
|
static void update_cpu_capacity(struct sched_domain *sd, int cpu)
|
|
|
{
|
|
|
- unsigned long weight = sd->span_weight;
|
|
|
unsigned long capacity = SCHED_CAPACITY_SCALE;
|
|
|
struct sched_group *sdg = sd->groups;
|
|
|
|
|
|
- if ((sd->flags & SD_SHARE_CPUCAPACITY) && weight > 1) {
|
|
|
- if (sched_feat(ARCH_CAPACITY))
|
|
|
- capacity *= arch_scale_smt_capacity(sd, cpu);
|
|
|
- else
|
|
|
- capacity *= default_scale_smt_capacity(sd, cpu);
|
|
|
+ if (sched_feat(ARCH_CAPACITY))
|
|
|
+ capacity *= arch_scale_cpu_capacity(sd, cpu);
|
|
|
+ else
|
|
|
+ capacity *= default_scale_cpu_capacity(sd, cpu);
|
|
|
|
|
|
- capacity >>= SCHED_CAPACITY_SHIFT;
|
|
|
- }
|
|
|
+ capacity >>= SCHED_CAPACITY_SHIFT;
|
|
|
|
|
|
sdg->sgc->capacity_orig = capacity;
|
|
|
|