|
@@ -6381,7 +6381,8 @@ static int sched_domains_curr_level;
|
|
|
SD_SHARE_POWERDOMAIN)
|
|
|
|
|
|
static struct sched_domain *
|
|
|
-sd_init(struct sched_domain_topology_level *tl, int cpu)
|
|
|
+sd_init(struct sched_domain_topology_level *tl,
|
|
|
+ struct sched_domain *child, int cpu)
|
|
|
{
|
|
|
struct sched_domain *sd = *per_cpu_ptr(tl->data.sd, cpu);
|
|
|
int sd_weight, sd_flags = 0;
|
|
@@ -6433,6 +6434,7 @@ sd_init(struct sched_domain_topology_level *tl, int cpu)
|
|
|
.smt_gain = 0,
|
|
|
.max_newidle_lb_cost = 0,
|
|
|
.next_decay_max_lb_cost = jiffies,
|
|
|
+ .child = child,
|
|
|
#ifdef CONFIG_SCHED_DEBUG
|
|
|
.name = tl->name,
|
|
|
#endif
|
|
@@ -6857,14 +6859,13 @@ struct sched_domain *build_sched_domain(struct sched_domain_topology_level *tl,
|
|
|
const struct cpumask *cpu_map, struct sched_domain_attr *attr,
|
|
|
struct sched_domain *child, int cpu)
|
|
|
{
|
|
|
- struct sched_domain *sd = sd_init(tl, cpu);
|
|
|
+ struct sched_domain *sd = sd_init(tl, child, cpu);
|
|
|
|
|
|
cpumask_and(sched_domain_span(sd), cpu_map, tl->mask(cpu));
|
|
|
if (child) {
|
|
|
sd->level = child->level + 1;
|
|
|
sched_domain_level_max = max(sched_domain_level_max, sd->level);
|
|
|
child->parent = sd;
|
|
|
- sd->child = child;
|
|
|
|
|
|
if (!cpumask_subset(sched_domain_span(child),
|
|
|
sched_domain_span(sd))) {
|