diff options
author | Ryan Harkin <ryan.harkin@linaro.org> | 2015-11-11 14:38:58 +0000 |
---|---|---|
committer | Ryan Harkin <ryan.harkin@linaro.org> | 2015-11-11 14:39:15 +0000 |
commit | f4ea0b713a154a4a4af7ea28eecc8ce82ef727db (patch) | |
tree | 2387633545e7f1bf2b117eddfc3f718b0aba6e52 /include/linux/sched.h | |
parent | 57a4270035bc749057dcdac83a9d1b3307bed622 (diff) | |
parent | 45637436056fd3a554596f04a653434ba11728b7 (diff) |
Merge branch 'linux-linaro-lsk-v3.18-eas-test' into juno-easintegration-lsk-3.18-armlt-android-eas-test
Merged from repo:
git.linaro.org/kernel/linux-linaro-stable.git
Branch:
linux-linaro-lsk-v3.18-eas-test
Commit ID:
45637436056fd3a554596f04a653434ba11728b7
2015-10-08 Merge branch 'linaro/3.18/eas_debug' into linux-linaro-lsk-v3.18 [Alex Shi]
Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
Conflicts:
drivers/cpufreq/Kconfig
include/linux/cpufreq.h
Diffstat (limited to 'include/linux/sched.h')
-rw-r--r-- | include/linux/sched.h | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 4169de53eae3..94980db2fb66 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -873,6 +873,7 @@ enum cpu_idle_type { #define SD_PREFER_SIBLING 0x1000 /* Prefer to place tasks in a sibling domain */ #define SD_OVERLAP 0x2000 /* sched_domains of this level overlap */ #define SD_NUMA 0x4000 /* cross-node balancing */ +#define SD_SHARE_CAP_STATES 0x8000 /* Domain members share capacity state */ #ifdef CONFIG_SCHED_SMT static inline int cpu_smt_flags(void) @@ -905,6 +906,26 @@ struct sched_domain_attr { extern int sched_domain_level_max; +struct capacity_state { + unsigned long cap; /* compute capacity */ + unsigned long power; /* power consumption at this compute capacity */ +}; + +struct idle_state { + unsigned long power; /* power consumption in this idle state */ +}; + +struct sched_group_energy { + atomic_t ref; + unsigned int nr_idle_states; /* number of idle states */ + struct idle_state *idle_states; /* ptr to idle state array */ + unsigned int nr_idle_states_below; /* number idle states in lower groups */ + unsigned int nr_cap_states; /* number of capacity states */ + struct capacity_state *cap_states; /* ptr to capacity state array */ +}; + +unsigned long capacity_curr_of(int cpu); + struct sched_group; struct sched_domain { @@ -1003,6 +1024,7 @@ bool cpus_share_cache(int this_cpu, int that_cpu); typedef const struct cpumask *(*sched_domain_mask_f)(int cpu); typedef int (*sched_domain_flags_f)(void); +typedef const struct sched_group_energy *(*sched_domain_energy_f)(int cpu); #define SDTL_OVERLAP 0x01 @@ -1010,11 +1032,13 @@ struct sd_data { struct sched_domain **__percpu sd; struct sched_group **__percpu sg; struct sched_group_capacity **__percpu sgc; + struct sched_group_energy **__percpu sge; }; struct sched_domain_topology_level { sched_domain_mask_f mask; sched_domain_flags_f sd_flags; + sched_domain_energy_f energy; int flags; int numa_level; struct sd_data data; @@ -1072,15 +1096,28 @@ struct load_weight { }; struct sched_avg { + u64 last_runnable_update; + s64 decay_count; + /* + * utilization_avg_contrib describes the amount of time that a + * sched_entity is running on a CPU. It is based on running_avg_sum + * and is scaled in the range [0..SCHED_LOAD_SCALE]. + * load_avg_contrib described the amount of time that a sched_entity + * is runnable on a rq. It is based on both runnable_avg_sum and the + * weight of the task. + */ + unsigned long load_avg_contrib, utilization_avg_contrib; /* * These sums represent an infinite geometric series and so are bound * above by 1024/(1-y). Thus we only need a u32 to store them for all * choices of y < 1-2^(-32)*1024. + * running_avg_sum reflects the time that the sched_entity is + * effectively running on the CPU. + * runnable_avg_sum represents the amount of time a sched_entity is on + * a runqueue which includes the running time that is monitored by + * running_avg_sum. */ - u32 runnable_avg_sum, runnable_avg_period; - u64 last_runnable_update; - s64 decay_count; - unsigned long load_avg_contrib; + u32 runnable_avg_sum, avg_period, running_avg_sum; }; #ifdef CONFIG_SCHEDSTATS |