Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 490a3d4b authored by Abhijeet Dharmapurikar's avatar Abhijeet Dharmapurikar
Browse files

sched: track mid capacity cpu



Tracking the mid capacity cpu will help optimize the placement algorithm
in upcoming patches.

Change-Id: I49f6719a216ddb578375fde4770be0bbc6cc552a
Signed-off-by: default avatarAbhijeet Dharmapurikar <adharmap@codeaurora.org>
parent b98e655c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -731,6 +731,8 @@ struct root_domain {

	/* First cpu with maximum and minimum original capacity */
	int max_cap_orig_cpu, min_cap_orig_cpu;
	/* First cpu with mid capacity */
	int mid_cap_orig_cpu;
};

extern struct root_domain def_root_domain;
+15 −0
Original line number Diff line number Diff line
@@ -303,6 +303,7 @@ static int init_rootdomain(struct root_domain *rd)
		goto free_cpudl;

	rd->max_cap_orig_cpu = rd->min_cap_orig_cpu = -1;
	rd->mid_cap_orig_cpu = -1;

	return 0;

@@ -1851,6 +1852,20 @@ build_sched_domains(const struct cpumask *cpu_map, struct sched_domain_attr *att

		cpu_attach_domain(sd, d.rd, i);
	}

	/* set the mid capacity cpu (assumes only 3 capacities) */
	for_each_cpu(i, cpu_map) {
		int max_cpu = READ_ONCE(d.rd->max_cap_orig_cpu);
		int min_cpu = READ_ONCE(d.rd->min_cap_orig_cpu);

		if ((cpu_rq(i)->cpu_capacity_orig
				!=  cpu_rq(min_cpu)->cpu_capacity_orig) &&
			(cpu_rq(i)->cpu_capacity_orig
				!=  cpu_rq(max_cpu)->cpu_capacity_orig)) {
			WRITE_ONCE(d.rd->mid_cap_orig_cpu, i);
			break;
		}
	}
	rcu_read_unlock();

	if (rq && sched_debug_enabled) {