From 4ac03df1e16b160b0630c38661eb7fc19e324912 Mon Sep 17 00:00:00 2001 From: Srivatsa Vaddagiri Date: Mon, 31 Mar 2014 19:42:27 -0700 Subject: [PATCH] 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 Signed-off-by: Syed Rameez Mustafa Signed-off-by: Pavankumar Kondeti --- arch/arm/kernel/topology.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/arch/arm/kernel/topology.c b/arch/arm/kernel/topology.c index 598323a1842e..9e7ed5c322f4 100644 --- a/arch/arm/kernel/topology.c +++ b/arch/arm/kernel/topology.c @@ -190,6 +190,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; @@ -281,6 +288,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",