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: Srivatsa Vaddagiri <vatsa@codeaurora.org> Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org> Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
This commit is contained in:
parent
46692be6dd
commit
4ac03df1e1
1 changed files with 9 additions and 0 deletions
|
@ -190,6 +190,13 @@ static int __init parse_cluster(struct device_node *cluster, int depth)
|
||||||
return 0;
|
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
|
#ifdef CONFIG_OF
|
||||||
struct cpu_efficiency {
|
struct cpu_efficiency {
|
||||||
const char *compatible;
|
const char *compatible;
|
||||||
|
@ -281,6 +288,8 @@ static int __init parse_dt_topology(void)
|
||||||
if (cpu_eff->compatible == NULL)
|
if (cpu_eff->compatible == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
per_cpu(cpu_efficiency, cpu) = cpu_eff->efficiency;
|
||||||
|
|
||||||
rate = of_get_property(cn, "clock-frequency", &len);
|
rate = of_get_property(cn, "clock-frequency", &len);
|
||||||
if (!rate || len != 4) {
|
if (!rate || len != 4) {
|
||||||
pr_err("%s missing clock-frequency property\n",
|
pr_err("%s missing clock-frequency property\n",
|
||||||
|
|
Loading…
Add table
Reference in a new issue