{"push_id":1368318865,"size":368,"distinct_size":0,"ref":"refs/heads/aosp/android-4.4","head":"64f0245f312a849acc83b7c6cdcc8f7c1a14cca3","before":"4547c0f93518197834f7fc11c6558b566b7e14c8","commits":[{"sha":"0ecbd590a7175818fcbccc9d5b1dc819aae25c86","author":{"name":"Yuyang Du","email":"f0e867e219192637be21cf77427aef9f9a34cd12@intel.com"},"message":"sched/fair: Fix new task's load avg removed from source CPU in wake_up_new_task()\n\nIf a newly created task is selected to go to a different CPU in fork\nbalance when it wakes up the first time, its load averages should\nnot be removed from the source CPU since they are never added to\nit before. The same is also applicable to a never used group entity.\n\nFix it in remove_entity_load_avg(): when entity's last_update_time\nis 0, simply return. This should precisely identify the case in\nquestion, because in other migrations, the last_update_time is set\nto 0 after remove_entity_load_avg().\n\nReported-by: Steve Muckle <steve.muckle@linaro.org>\nSigned-off-by: Yuyang Du <yuyang.du@intel.com>\n[peterz: cfs_rq_last_update_time]\nSigned-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>\nCc: Dietmar Eggemann <dietmar.eggemann@arm.com>\nCc: Juri Lelli <Juri.Lelli@arm.com>\nCc: Linus Torvalds <torvalds@linux-foundation.org>\nCc: Mike Galbraith <efault@gmx.de>\nCc: Morten Rasmussen <morten.rasmussen@arm.com>\nCc: Patrick Bellasi <patrick.bellasi@arm.com>\nCc: Peter Zijlstra <peterz@infradead.org>\nCc: Thomas Gleixner <tglx@linutronix.de>\nCc: Vincent Guittot <vincent.guittot@linaro.org>\nLink: http://lkml.kernel.org/r/20151216233427.GJ28098@intel.com\nSigned-off-by: Ingo Molnar <mingo@kernel.org>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/0ecbd590a7175818fcbccc9d5b1dc819aae25c86"},{"sha":"259bd4cd8a4c5776e86ae1a86f1f8e1168e84212","author":{"name":"Dietmar Eggemann","email":"7bef2e184847c39785107604e3ad072c9e462174@arm.com"},"message":"cpufreq: Frequency invariant scheduler load-tracking support\n\nImplements cpufreq_scale_freq_capacity() to provide the scheduler with a\nfrequency scaling correction factor for more accurate load-tracking.\n\nThe factor is:\n\n\tcurrent_freq(cpu) << SCHED_CAPACITY_SHIFT / max_freq(cpu)\n\nIn fact, freq_scale should be a struct cpufreq_policy data member. But\nthis would require that the scheduler hot path (__update_load_avg()) would\nhave to grab the cpufreq lock. This can be avoided by using per-cpu data\ninitialized to SCHED_CAPACITY_SCALE for freq_scale.\n\nSigned-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/259bd4cd8a4c5776e86ae1a86f1f8e1168e84212"},{"sha":"372b62344c227283acd23d6ca63543a4ceb27abb","author":{"name":"Dietmar Eggemann","email":"7bef2e184847c39785107604e3ad072c9e462174@arm.com"},"message":"arm: Enable frequency invariant scheduler load-tracking support\n\nDefines arch_scale_freq_capacity() to use cpufreq implementation.\n\nSigned-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/372b62344c227283acd23d6ca63543a4ceb27abb"},{"sha":"8411396e9c5cd1badfe05e08624d90cbbb7b1126","author":{"name":"Dietmar Eggemann","email":"7bef2e184847c39785107604e3ad072c9e462174@arm.com"},"message":"arm64: Enable frequency invariant scheduler load-tracking support\n\nDefines arch_scale_freq_capacity() to use cpufreq implementation.\n\nIncluding <linux/cpufreq.h> in topology.h like for the arm arch doesn't\nwork because of CONFIG_COMPAT=y (Kernel support for 32-bit EL0).\nThat's why cpufreq_scale_freq_capacity() has to be declared extern in\ntopology.h.\n\nSigned-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/8411396e9c5cd1badfe05e08624d90cbbb7b1126"},{"sha":"0f8edc82743fd749a3536c68386c89112e760792","author":{"name":"Morten Rasmussen","email":"f95c80e30c2d43d52e1b9d0d91742c149bf3e846@arm.com"},"message":"arm: Update arch_scale_cpu_capacity() to reflect change to define\n\narch_scale_cpu_capacity() is no longer a weak function but a #define\ninstead. Include the #define in topology.h.\n\ncc: Russell King <linux@arm.linux.org.uk>\nSigned-off-by: Morten Rasmussen <morten.rasmussen@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/0f8edc82743fd749a3536c68386c89112e760792"},{"sha":"1eb2b8aa45840b50cd953052315a8b4f6bc6416d","author":{"name":"Dietmar Eggemann","email":"7bef2e184847c39785107604e3ad072c9e462174@arm.com"},"message":"sched: Store system-wide maximum cpu capacity in root domain\n\nTo be able to compare the capacity of the target cpu with the highest\ncpu capacity of the system in the wakeup path, store the system-wide\nmaximum cpu capacity in the root domain.\n\ncc: Ingo Molnar <mingo@redhat.com>\ncc: Peter Zijlstra <peterz@infradead.org>\nSigned-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/1eb2b8aa45840b50cd953052315a8b4f6bc6416d"},{"sha":"e8bcb272bc920d875c26ca2e06c872b9f844f6f1","author":{"name":"Morten Rasmussen","email":"f95c80e30c2d43d52e1b9d0d91742c149bf3e846@arm.com"},"message":"sched: Add cpu capacity awareness to wakeup balancing\n\nWakeup balancing is completely unaware of cpu capacity, cpu utilization\nand task utilization. The task is preferably placed on a cpu which is\nidle in the instant the wakeup happens. New tasks\n(SD_BALANCE_{FORK,EXEC} are placed on an idle cpu in the idlest group if\nsuch can be found, otherwise it goes on the least loaded one. Existing\ntasks (SD_BALANCE_WAKE) are placed on the previous cpu or an idle cpu\nsharing the same last level cache unless the wakee_flips heuristic in\nwake_wide() decides to fallback to considering cpus outside SD_LLC.\nHence existing tasks are not guaranteed to get a chance to migrate to a\ndifferent group at wakeup in case the current one has reduced cpu\ncapacity (due RT/IRQ pressure or different uarch e.g. ARM big.LITTLE).\nThey may eventually get pulled by other cpus doing\nperiodic/idle/nohz_idle balance, but it may take quite a while before it\nhappens.\n\nThis patch adds capacity awareness to find_idlest_{group,queue} (used by\nSD_BALANCE_{FORK,EXEC} and SD_BALANCE_WAKE under certain circumstances)\nsuch that groups/cpus that can accommodate the waking task based on task\nutilization are preferred. In addition, wakeup of existing tasks\n(SD_BALANCE_WAKE) is sent through find_idlest_{group,queue} also if the\ntask doesn't fit the capacity of the previous cpu to allow it to escape\n(override wake_affine) when necessary instead of relying on\nperiodic/idle/nohz_idle balance to eventually sort it out.\n\ncc: Ingo Molnar <mingo@redhat.com>\ncc: Peter Zijlstra <peterz@infradead.org>\nSigned-off-by: Morten Rasmussen <morten.rasmussen@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/e8bcb272bc920d875c26ca2e06c872b9f844f6f1"},{"sha":"8a5c0339bb7b7eedd2e75b62ebe4144a195f7ef3","author":{"name":"Morten Rasmussen","email":"f95c80e30c2d43d52e1b9d0d91742c149bf3e846@arm.com"},"message":"sched: Consider spare cpu capacity at task wake-up\n\nfind_idlest_group() selects the wake-up target group purely\nbased on group load which leads to suboptimal choices in low load\nscenarios. An idle group with reduced capacity (due to RT tasks or\ndifferent cpu type) isn't necessarily a better target than a lightly\nloaded group with higher capacity.\n\nThe patch adds spare capacity as an additional group selection\nparameter. The target group is now selected based on the following\ncriteria:\n\n1. Return the group with the cpu with most spare capacity and this\ncapacity is significant if such group exists. Significant spare capacity\nis currently at least 20% to spare.\n\n2. Return the group with the lowest load, unless it is the local group\nin which case NULL is returned and the search is continued at the next\n(lower) level.\n\ncc: Ingo Molnar <mingo@redhat.com>\ncc: Peter Zijlstra <peterz@infradead.org>\nSigned-off-by: Morten Rasmussen <morten.rasmussen@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/8a5c0339bb7b7eedd2e75b62ebe4144a195f7ef3"},{"sha":"cda2bd333be6e5e8c38fa072c9c4c296312dfd8d","author":{"name":"Dietmar Eggemann","email":"7bef2e184847c39785107604e3ad072c9e462174@arm.com"},"message":"sched: Enable idle balance to pull single task towards cpu with higher capacity\n\nWe do not want to miss out on the ability to pull a single remaining\ntask from a potential source cpu towards an idle destination cpu. Add an\nextra criteria to need_active_balance() to kick off active load balance\nif the source cpu is over-utilized and has lower capacity than the\ndestination cpu.\n\ncc: Ingo Molnar <mingo@redhat.com>\ncc: Peter Zijlstra <peterz@infradead.org>\nSigned-off-by: Morten Rasmussen <morten.rasmussen@arm.com>\nSigned-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/cda2bd333be6e5e8c38fa072c9c4c296312dfd8d"},{"sha":"681fa1413b869ca73f685b9c8769cdd645879804","author":{"name":"Morten Rasmussen","email":"f95c80e30c2d43d52e1b9d0d91742c149bf3e846@arm.com"},"message":"sched: Prevent unnecessary active balance of single task in sched group\n\nScenarios with the busiest group having just one task and the local\nbeing idle on topologies with sched groups with different numbers of\ncpus manage to dodge all load-balance bailout conditions resulting the\nnr_balance_failed counter to be incremented. This eventually causes a\npointless active migration of the task. This patch prevents this by not\nincrementing the counter when the busiest group only has one task.\nASYM_PACKING migrations and migrations due to reduced capacity should\nstill take place as these are explicitly captured by\nneed_active_balance().\n\nA better solution would be to not attempt the load-balance in the first\nplace, but that requires significant changes to the order of bailout\nconditions and statistics gathering.\n\ncc: Ingo Molnar <mingo@redhat.com>\ncc: Peter Zijlstra <peterz@infradead.org>\nSigned-off-by: Morten Rasmussen <morten.rasmussen@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/681fa1413b869ca73f685b9c8769cdd645879804"},{"sha":"d8c8088f41033b1cea9d88149046e1f8bdb9ade0","author":{"name":"Morten Rasmussen","email":"f95c80e30c2d43d52e1b9d0d91742c149bf3e846@arm.com"},"message":"sched: Documentation for scheduler energy cost model\n\nThis documentation patch provides an overview of the experimental\nscheduler energy costing model, associated data structures, and a\nreference recipe on how platforms can be characterized to derive energy\nmodels.\n\nSigned-off-by: Morten Rasmussen <morten.rasmussen@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/d8c8088f41033b1cea9d88149046e1f8bdb9ade0"},{"sha":"e496f328c87173fe188e91c6cd60197fb8e7e305","author":{"name":"Morten Rasmussen","email":"f95c80e30c2d43d52e1b9d0d91742c149bf3e846@arm.com"},"message":"sched: Make energy awareness a sched feature\n\nThis patch introduces the ENERGY_AWARE sched feature, which is\nimplemented using jump labels when SCHED_DEBUG is defined. It is\nstatically set false when SCHED_DEBUG is not defined. Hence this doesn't\nallow energy awareness to be enabled without SCHED_DEBUG. This\nsched_feature knob will be replaced later with a more appropriate\ncontrol knob when things have matured a bit.\n\nENERGY_AWARE is based on per-entity load-tracking hence FAIR_GROUP_SCHED\nmust be enable. This dependency isn't checked at compile time yet.\n\ncc: Ingo Molnar <mingo@redhat.com>\ncc: Peter Zijlstra <peterz@infradead.org>\nSigned-off-by: Morten Rasmussen <morten.rasmussen@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/e496f328c87173fe188e91c6cd60197fb8e7e305"},{"sha":"0b3bda54d245ebcfeefc61f0ff763e76ca2a8784","author":{"name":"Dietmar Eggemann","email":"7bef2e184847c39785107604e3ad072c9e462174@arm.com"},"message":"sched: Introduce energy data structures\n\nThe struct sched_group_energy represents the per sched_group related\ndata which is needed for energy aware scheduling. It contains:\n\n  (1) number of elements of the idle state array\n  (2) pointer to the idle state array which comprises 'power consumption'\n      for each idle state\n  (3) number of elements of the capacity state array\n  (4) pointer to the capacity state array which comprises 'compute\n      capacity and power consumption' tuples for each capacity state\n\nThe struct sched_group obtains a pointer to a struct sched_group_energy.\n\nThe function pointer sched_domain_energy_f is introduced into struct\nsched_domain_topology_level which will allow the arch to pass a particular\nstruct sched_group_energy from the topology shim layer into the scheduler\ncore.\n\nThe function pointer sched_domain_energy_f has an 'int cpu' parameter\nsince the folding of two adjacent sd levels via sd degenerate doesn't work\nfor all sd levels. I.e. it is not possible for example to use this feature\nto provide per-cpu energy in sd level DIE on ARM's TC2 platform.\n\nIt was discussed that the folding of sd levels approach is preferable\nover the cpu parameter approach, simply because the user (the arch\nspecifying the sd topology table) can introduce less errors. But since\nit is not working, the 'int cpu' parameter is the only way out. It's\npossible to use the folding of sd levels approach for\nsched_domain_flags_f and the cpu parameter approach for the\nsched_domain_energy_f at the same time though. With the use of the\n'int cpu' parameter, an extra check function has to be provided to make\nsure that all cpus spanned by a sched group are provisioned with the same\nenergy data.\n\ncc: Ingo Molnar <mingo@redhat.com>\ncc: Peter Zijlstra <peterz@infradead.org>\nSigned-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/0b3bda54d245ebcfeefc61f0ff763e76ca2a8784"},{"sha":"4ce990ec65231af6a148c2c0e6b4745fc1d12368","author":{"name":"Dietmar Eggemann","email":"7bef2e184847c39785107604e3ad072c9e462174@arm.com"},"message":"sched: Initialize energy data structures\n\nThe sched_group_energy (sge) pointer of the first sched_group (sg) in\nthe sched_domain (sd) is initialized to point to the appropriate (in\nterms of sd level and cpu) sge data defined in the arch and so to the\ncorrect part of the Energy Model (EM).\n\nEnergy-aware scheduling allows that a system has only EM data up to a\ncertain sd level (so called highest energy aware balancing sd level).\nA check in init_sched_energy() enforces that all sd's below this sd\nlevel contain EM data.\n\nThe 'int cpu' parameter of sched_domain_energy_f requires that\ncheck_sched_energy_data() makes sure that all cpus spanned by a sg\nare provisioned with the same EM data.\n\nThis patch has also been tested with feature FORCE_SD_OVERLAP enabled.\n\ncc: Ingo Molnar <mingo@redhat.com>\ncc: Peter Zijlstra <peterz@infradead.org>\nSigned-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/4ce990ec65231af6a148c2c0e6b4745fc1d12368"},{"sha":"f0f739d887a4f144ab4937e619288d4cede2cc91","author":{"name":"Morten Rasmussen","email":"f95c80e30c2d43d52e1b9d0d91742c149bf3e846@arm.com"},"message":"sched: Introduce SD_SHARE_CAP_STATES sched_domain flag\n\ncpufreq is currently keeping it a secret which cpus are sharing\nclock source. The scheduler needs to know about clock domains as well\nto become more energy aware. The SD_SHARE_CAP_STATES domain flag\nindicates whether cpus belonging to the sched_domain share capacity\nstates (P-states).\n\nThere is no connection with cpufreq (yet). The flag must be set by\nthe arch specific topology code.\n\ncc: Russell King <linux@arm.linux.org.uk>\ncc: Ingo Molnar <mingo@redhat.com>\ncc: Peter Zijlstra <peterz@infradead.org>\nSigned-off-by: Morten Rasmussen <morten.rasmussen@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/f0f739d887a4f144ab4937e619288d4cede2cc91"},{"sha":"c7aeeb88c7370af2fc4e2e8bd156e001f7a96d11","author":{"name":"Dietmar Eggemann","email":"7bef2e184847c39785107604e3ad072c9e462174@arm.com"},"message":"arm: Cpu invariant scheduler load-tracking and capacity support\n\nProvides the scheduler with a cpu scaling correction factor for more\naccurate load-tracking and cpu capacity handling.\n\nThe Energy Model (EM) (in fact the capacity value of the last element\nof the capacity states vector of the core (MC) level sched_group_energy\nstructure) is used instead of the arm arch specific cpu_efficiency and\ndtb property 'clock-frequency' values as the source for this cpu\nscaling factor.\n\nThe cpu capacity value depends on the micro-architecture and the\nmaximum frequency of the cpu.\n\nThe maximum frequency part should not be confused with the frequency\ninvariant scheduler load-tracking support which deals with frequency\nrelated scaling due to DFVS functionality.\n\nSigned-off-by: Juri Lelli <juri.lelli@arm.com>\nSigned-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/c7aeeb88c7370af2fc4e2e8bd156e001f7a96d11"},{"sha":"7c791bf110c2c1884f02f0c4ceaff886fad2a907","author":{"name":"Juri Lelli","email":"def35b9783bb04ffb0446bb718c23d90ed14e01e@arm.com"},"message":"arm64: Cpu invariant scheduler load-tracking and capacity support\n\nProvides the scheduler with a cpu scaling correction factor for more\naccurate load-tracking and cpu capacity handling.\n\nThe Energy Model (EM) (in fact the capacity value of the last element\nof the capacity states vector of the core (MC) level sched_group_energy\nstructure) is used as the source for this cpu scaling factor.\n\nThe cpu capacity value depends on the micro-architecture and the\nmaximum frequency of the cpu.\n\nThe maximum frequency part should not be confused with the frequency\ninvariant scheduler load-tracking support which deals with frequency\nrelated scaling due to DFVS functionality.\n\nSigned-off-by: Juri Lelli <juri.lelli@arm.com>\nSigned-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/7c791bf110c2c1884f02f0c4ceaff886fad2a907"},{"sha":"3e55d2f2fcaf44ac19eb143d895924ff402e375c","author":{"name":"Morten Rasmussen","email":"f95c80e30c2d43d52e1b9d0d91742c149bf3e846@arm.com"},"message":"sched: Compute cpu capacity available at current frequency\n\ncapacity_orig_of() returns the max available compute capacity of a cpu.\nFor scale-invariant utilization tracking and energy-aware scheduling\ndecisions it is useful to know the compute capacity available at the\ncurrent OPP of a cpu.\n\ncc: Ingo Molnar <mingo@redhat.com>\ncc: Peter Zijlstra <peterz@infradead.org>\nSigned-off-by: Morten Rasmussen <morten.rasmussen@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/3e55d2f2fcaf44ac19eb143d895924ff402e375c"},{"sha":"b6c0399e0f340887f369c6870ba6a865afe0b0ec","author":{"name":"Morten Rasmussen","email":"f95c80e30c2d43d52e1b9d0d91742c149bf3e846@arm.com"},"message":"sched: Relocated cpu_util() and change return type\n\nMove cpu_util() to an earlier position in fair.c and change return\ntype to unsigned long as negative usage doesn't make much sense. All\nother load and capacity related functions use unsigned long including\nthe caller of cpu_util().\n\ncc: Ingo Molnar <mingo@redhat.com>\ncc: Peter Zijlstra <peterz@infradead.org>\nSigned-off-by: Morten Rasmussen <morten.rasmussen@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/b6c0399e0f340887f369c6870ba6a865afe0b0ec"},{"sha":"5ec8ccabfef3989f4514f22c034a15aeab691110","author":{"name":"Morten Rasmussen","email":"f95c80e30c2d43d52e1b9d0d91742c149bf3e846@arm.com"},"message":"sched: Highest energy aware balancing sched_domain level pointer\n\nAdd another member to the family of per-cpu sched_domain shortcut\npointers. This one, sd_ea, points to the highest level at which energy\nmodel is provided. At this level and all levels below all sched_groups\nhave energy model data attached.\n\nPartial energy model information is possible but restricted to providing\nenergy model data for lower level sched_domains (sd_ea and below) and\nleaving load-balancing on levels above to non-energy-aware\nload-balancing. For example, it is possible to apply energy-aware\nscheduling within each socket on a multi-socket system and let normal\nscheduling handle load-balancing between sockets.\n\ncc: Ingo Molnar <mingo@redhat.com>\ncc: Peter Zijlstra <peterz@infradead.org>\nSigned-off-by: Morten Rasmussen <morten.rasmussen@arm.com>","distinct":false,"url":"https://api.github.com/repos/Rashed97/caf-kernel-msm-3.18/commits/5ec8ccabfef3989f4514f22c034a15aeab691110"}]}
{"actor":{"display_login":"Rashed97"}}