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

Commit fd5704aa authored by Srivatsa Vaddagiri's avatar Srivatsa Vaddagiri Committed by Pavankumar Kondeti
Browse files

arm: topology: Define arch_get_cpu_efficiency() API for scheduler



On a HMP system, scheduler needs to know efficiency factor
(instructions-per-cycle) for various cpus. This is so that scheduler
can estimate bandwidth consumption of tasks on each cpu, based on
their efficiency factor.

This patch defines arch_get_cpu_efficiency() API in ARM32 architecture.
It depends on hard-coded "efficiency" factor for various cpu types
(available in 'table_efficiency' data structure) and device-tree
providing information on cpu-type for every cpu.

Change-Id: I561bace8a813a35a9fc624fca4861c5b1109b69b
Signed-off-by: default avatarSrivatsa Vaddagiri <vatsa@codeaurora.org>
Signed-off-by: default avatarSyed Rameez Mustafa <rameezmustafa@codeaurora.org>
Signed-off-by: default avatarPavankumar Kondeti <pkondeti@codeaurora.org>
parent 1fd6e206
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -196,6 +196,13 @@ static int __init parse_cluster(struct device_node *cluster, int depth)
	return 0;
}

static DEFINE_PER_CPU(unsigned long, cpu_efficiency) = SCHED_CAPACITY_SCALE;

unsigned long arch_get_cpu_efficiency(int cpu)
{
	return per_cpu(cpu_efficiency, cpu);
}

#ifdef CONFIG_OF
struct cpu_efficiency {
	const char *compatible;
@@ -287,6 +294,8 @@ static int __init parse_dt_topology(void)
		if (cpu_eff->compatible == NULL)
			continue;

		per_cpu(cpu_efficiency, cpu) = cpu_eff->efficiency;

		rate = of_get_property(cn, "clock-frequency", &len);
		if (!rate || len != 4) {
			pr_err("%s missing clock-frequency property\n",