GitHub PushEvent at 2014-10-07 11:33:11
Repository: hells-Core-N5
Actor: hellsgod
Payload: {"shas":[["53bfdfe3f51e255522bbf25077cb6fbcb07fcc93","3fddac958924aef220f202ca567388ddab3f14a8@infradead.org","arch: Introduce smp_load_acquire(), smp_store_release()\n\nA number of situations currently require the heavyweight smp_mb(),\neven though there is no need to order prior stores against later\nloads.  Many architectures have much cheaper ways to handle these\nsituations, but the Linux kernel currently has no portable way\nto make use of them.\n\nThis commit therefore supplies smp_load_acquire() and\nsmp_store_release() to remedy this situation.  The new\nsmp_load_acquire() primitive orders the specified load against\nany subsequent reads or writes, while the new smp_store_release()\nprimitive orders the specifed store against any prior reads or\nwrites.  These primitives allow array-based circular FIFOs to be\nimplemented without an smp_mb(), and also allow a theoretical\nhole in rcu_assign_pointer() to be closed at no additional\nexpense on most architectures.\n\nIn addition, the RCU experience transitioning from explicit\nsmp_read_barrier_depends() and smp_wmb() to rcu_dereference()\nand rcu_assign_pointer(), respectively resulted in substantial\nimprovements in readability.  It therefore seems likely that\nreplacing other explicit barriers with smp_load_acquire() and\nsmp_store_release() will provide similar benefits.  It appears\nthat roughly half of the explicit barriers in core kernel code\nmight be so replaced.\n\n[Changelog by PaulMck]\n\nReviewed-by: \"Paul E. McKenney\" <paulmck@linux.vnet.ibm.com>\nSigned-off-by: Peter Zijlstra <peterz@infradead.org>\nAcked-by: Will Deacon <will.deacon@arm.com>\nCc: Benjamin Herrenschmidt <benh@kernel.crashing.org>\nCc: Frederic Weisbecker <fweisbec@gmail.com>\nCc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>\nCc: Michael Ellerman <michael@ellerman.id.au>\nCc: Michael Neuling <mikey@neuling.org>\nCc: Russell King <linux@arm.linux.org.uk>\nCc: Geert Uytterhoeven <geert@linux-m68k.org>\nCc: Heiko Carstens <heiko.carstens@de.ibm.com>\nCc: Linus Torvalds <torvalds@linux-foundation.org>\nCc: Martin Schwidefsky <schwidefsky@de.ibm.com>\nCc: Victor Kaplansky <VICTORK@il.ibm.com>\nCc: Tony Luck <tony.luck@intel.com>\nCc: Oleg Nesterov <oleg@redhat.com>\nLink: http://lkml.kernel.org/r/20131213150640.908486364@infradead.org\nSigned-off-by: Ingo Molnar <mingo@kernel.org>\nSigned-off-by: Pranav Vashi <neobuddy89@gmail.com>","Peter Zijlstra",true],["14d1cb4d941526cfb8133fcd9dbad54bb2760479","5ff32272b3d9f86512eddc8e0af523fc6f7924e5@linaro.org","sched: Optimize build_sched_domains() for saving first SD node for a cpu\n\nDate\tTue, 4 Jun 2013 16:50:18 +0530\n\nWe are saving first scheduling domain for a cpu in build_sched_domains() by\niterating over the nested sd->child list. We don't actually need to do it this\nway.\n\n*per_cpu_ptr(d.sd, i) is guaranteed to be NULL in the beginning as we have\ncalled __visit_domain_allocation_hell() which does a memset to zero for struct\ns_data.\n\nSo, save pointer to first SD while running the iteration loop over tl's.\n\nSigned-off-by: Viresh Kumar <viresh.kumar@linaro.org>\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Viresh Kumar",true],["76d6318e98aa8eff95f13db139e3b6aaf468bafb","5ff32272b3d9f86512eddc8e0af523fc6f7924e5@linaro.org","sched: Optimize build_sched_domains() for saving first SD node for a cpu\n\nWe are saving first scheduling domain for a cpu in build_sched_domains() by\niterating over the nested sd->child list. We don't actually need to do it this\nway.\n\ntl will be equal to sched_domain_topology for the first iteration and so we can\nset *per_cpu_ptr(d.sd, i) based on that.  So, save pointer to first SD while\nrunning the iteration loop over tl's.\n\nSigned-off-by: Viresh Kumar <viresh.kumar@linaro.org>\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Viresh Kumar",true],["4942382ce7215e174ef3607d9110d5e6b17e5704","5ff32272b3d9f86512eddc8e0af523fc6f7924e5@linaro.org","sched: Remove unused params of build_sched_domain()\n\nDate\tTue, 4 Jun 2013 16:50:19 +0530\n\nbuild_sched_domain() never uses parameter struct s_data *d and so passing it is\nuseless.\n\nRemove it.\n\nSigned-off-by: Viresh Kumar <viresh.kumar@linaro.org>\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Viresh Kumar",true],["1b69a387fe0567a9e9377f0b8cffbb257f873687","5ff32272b3d9f86512eddc8e0af523fc6f7924e5@linaro.org","sched: Use cached value of span instead of calling sched_domain_span()\n\nDate\tTue, 11 Jun 2013 16:32:43 +0530\n\nIn the beginning of build_sched_groups() we called sched_domain_span() and\ncached its return value in span. Few statements later we are calling it again to\nget the same pointer.\n\nLets use the cached value instead as it hasn't changed in between.\n\nSigned-off-by: Viresh Kumar <viresh.kumar@linaro.org>\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Viresh Kumar",true],["a710153831bdc123410e5efc8bcbe20ebb6c6336","5ff32272b3d9f86512eddc8e0af523fc6f7924e5@linaro.org","sched: remove WARN_ON(!sd) from init_sched_groups_power()\n\nDate\tTue, 11 Jun 2013 16:32:45 +0530\n\nsd can't be NULL in init_sched_groups_power() and so checking it for NULL isn't\nuseful. In case it is required, then also we need to rearrange the code a bit as\nwe already accessed invalid pointer sd to get sg: sg = sd->groups.\n\nSigned-off-by: Viresh Kumar <viresh.kumar@linaro.org>\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Viresh Kumar",true],["15c54c454d1c13ac9b05158f58fe43c6c722f617","05afeb2b81132ab6685f0098e7d365aeb14e7cae@marvell.com","sched: reduce calculation effort in fix_small_imbalance\n\nDate\tMon, 17 Jun 2013 21:00:22 +0800\n\nActually all below item could be repalced by scaled_busy_load_per_task\n\t(sds->busiest_load_per_task * SCHED_POWER_SCALE)\n\t\t/sds->busiest->sgp->power;\n\nSigned-off-by: Lei Wen <leiwen@marvell.com>\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Lei Wen",true],["4618451e4714edc9ebc4f324cf0a322bd12eee2b","05afeb2b81132ab6685f0098e7d365aeb14e7cae@marvell.com","sched: scale the busy and this queue's per-task load before compare\n\nDate\tMon, 17 Jun 2013 21:00:23 +0800\n\nSince for max_load and this_load, they are the value that already be\nscaled. It is not reasonble to get a minimum value between the scaled\nand non-scaled value, like below example.\n\tmin(sds->busiest_load_per_task, sds->max_load);\n\nAlso add comment over in what condition, there would be cpu power gain\nin move the load.\n\nSigned-off-by: Lei Wen <leiwen@marvell.com>\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Lei Wen",true],["28ac5db8a17d7f9be286b9881257d93e38f07112","c208d1ecece4e5ef2e4fb72f0546c69cdce89063@gmail.com","sched: scale cpu load for judgment of group imbalance\n\nDate\tMon, 17 Jun 2013 21:00:24 +0800\n\nWe cannot compare two load directly from two cpus, since the cpu power\nover two cpu may vary largely.\n\nSuppose we meet such two kind of cpus.\nCPU A:\n\tNo real time work, and there are 3 task, with rq->load.weight\nbeing 512.\nCPU B:\n\tHas real time work, and it take 3/4 of the cpu power, which\nmakes CFS only take 1/4, that is 1024/4=256 cpu power. And over its CFS\nrunqueue, there is only one task with weight as 128.\n\nSince both cpu's CFS task take for half of the CFS's cpu power, it\nshould be considered as balanced in such case.\n\nBut original judgment like:\n        if ((max_cpu_load - min_cpu_load) >= avg_load_per_task &&\n            (max_nr_running - min_nr_running) > 1)\nIt makes (512-128)>=((512+128)/4), and lead to imbalance conclusion...\nMake the load as scaled, to avoid such case.\n\nSigned-off-by: Lei Wen <leiwen@marvell.com>\n\nmodified for Mako kernel from LKML reference\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Paul Reioux",true],["538995c851fabc4eafc02ccdf154db4113de305a","09ebf12aa4fd61769490ade56a7655bcf429b765@hp.com","sched: Reduce overestimating rq->avg_idle\n\nDate\tThu, 29 Aug 2013 13:05:34 -0700\n\nWhen updating avg_idle, if the delta exceeds some max value, then avg_idle\ngets set to the max, regardless of what the previous avg was. This can cause\navg_idle to often be overestimated.\n\nThis patch modifies the way we update avg_idle by always updating it with the\nfunction call to update_avg() first. Then, if avg_idle exceeds the max, we set\nit to the max.\n\nSigned-off-by: Jason Low <jason.low2@hp.com>\nReviewed-by: Rik van Riel <riel@redhat.com>\n\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Jason Low",true],["61a819470ad48036d31cb9b85a445119295b0771","c208d1ecece4e5ef2e4fb72f0546c69cdce89063@gmail.com","sched: Consider max cost of idle balance per sched domain\n\nDate    Thu, 29 Aug 2013 13:05:35 -0700\n\nIn this patch, we keep track of the max cost we spend doing idle load balancing\nfor each sched domain. If the avg time the CPU remains idle is less then the\ntime we have already spent on idle balancing + the max cost of idle balancing\nin the sched domain, then we don't continue to attempt the balance. We also\nkeep a per rq variable, max_idle_balance_cost, which keeps track of the max\ntime spent on newidle load balances throughout all its domains. Additionally,\nwe swap sched_migration_cost used in idle_balance for rq->max_idle_balance_cost.\n\nBy using the max, we avoid overrunning the average. This further reduces the chance\nwe attempt balancing when the CPU is not idle for longer than the cost to balance.\n\nI also limited the max cost of each domain to 5*sysctl_sched_migration_cost as\na way to prevent the max from becoming too inflated.\n\nSigned-off-by: Jason Low <jason.low2@hp.com>\n\nbackported for Linux 3.4\n\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Paul Reioux",true],["b5cd5cfd34b10feb69ba208820bb0265727ef8a6","c208d1ecece4e5ef2e4fb72f0546c69cdce89063@gmail.com","sched: Periodically decay max cost of idle balance\n\nThis RFC patch builds on patch 2 and periodically decays that max value to\ndo idle balancing per sched domain.\n\nThough we want to decay it fairly consistently, we may not want to lower it by\ntoo much each time, especially since avg_idle is capped based on that value.\nSo I thought that decaying the value every second and lowering it by half a\npercent each time appeared to be fairly reasonable.\n\nThis change would allow us to remove the limit we set on each domain's max cost\nto idle balance. Also, since the max can be reduced now, we now have to\nupdate rq->max_idle balance_cost more frequently. So after every idle balance,\nwe loop through the sched domain to find the max sd's newidle load balance cost\nfor any one domain. Then we will set rq->max_idle_balance_cost to that value.\n\nSince we are now decaying the max cost to do idle balancing, that max cost can\nalso become not high enough. One possible explanation for why is that\nbesides the time spent on each newidle load balance, there are other costs\nassociated with attempting idle balancing. Idle balance also releases and\nreacquires a spin lock. That cost is not counted when we keep track of each\ndomain's cost to do newidle load balance. Also, acquiring the rq locks can\npotentially prevent other CPUs from running something useful. And after\nmigrating tasks, it might potentially have to pay the costs of cache misses and\nrefreshing tasks' cache.\n\nBecause of that, this patch also compares avg_idle with max cost to do idle\nbalancing + sched_migration_cost. While using the max cost helps reduce\noverestimating the average idle, the sched_migration_cost can help account\nfor those additional costs of idle balancing.\n\nSigned-off-by: Jason Low <jason.low2@hp.com>\n[peterz: rewrote the logic, but kept the spirit]\nSigned-off-by: Peter Zijlstra <peterz@infradead.org>\nbackported to Linux 3.4\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Paul Reioux",true],["0f48eb006f44bba3ddce9546e22255f2ca4ade78","c208d1ecece4e5ef2e4fb72f0546c69cdce89063@gmail.com","sched: change load balance number to h_nr_running of run queue\n\nDate    Sun, 18 Aug 2013 16:25:15 +0800\n\nSince rq->nr_running would include both migration and rt task, it is not\nreasonable to seek to move nr_running number of task in the load_balance\nfunction, since it only apply to cfs type.\n\nChange it to cfs's h_nr_running, which could well present the task\nnumber in current cfs queue.\n\nSigned-off-by: Lei Wen <leiwen@marvell.com>\nbackported to Linux 3.4 by faux123\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Paul Reioux",true],["c2465642e6ea16c6907258cd3e7363898f21cd6e","c208d1ecece4e5ef2e4fb72f0546c69cdce89063@gmail.com","kernel/sched/fair.c: fix merge derp\n\n from patch sched: change load balance number to h_nr_running of run queue\n\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Paul Reioux",true],["fdcd21013aba01547b96cf4a1b9ada8f83a6be68","05afeb2b81132ab6685f0098e7d365aeb14e7cae@marvell.com","sched: change cpu_avg_load_per_task using h_nr_running\n\nDate\tSun, 18 Aug 2013 16:25:16 +0800\n\nSince cpu_avg_load_per_task is used only by cfs scheduler, its meaning\nshould present the average cfs type task load in the current run queue.\nThus we change it to h_nr_running for well presenting its meaning.\n\nSigned-off-by: Lei Wen <leiwen@marvell.com>\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Lei Wen",true],["6c0adbaac9ea917ab48419c2e29047f3998336cb","05afeb2b81132ab6685f0098e7d365aeb14e7cae@marvell.com","sched: change pick_next_task_fair to h_nr_running\n\nDate\tSun, 18 Aug 2013 16:25:18 +0800\n\nSince pick_next_task_fair only want to ensure there is some task in the\nrun queue to be picked up, it should use the h_nr_running instead of\nnr_running, since nr_running cannot present all tasks if group existed.\n\nSigned-off-by: Lei Wen <leiwen@marvell.com>\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Lei Wen",true],["c992f3ba943d68ecb78548644a320a4a6e9ebaf4","c208d1ecece4e5ef2e4fb72f0546c69cdce89063@gmail.com","sched: change update_sg_lb_stats to h_nr_running\n\nDate    Sun, 18 Aug 2013 16:25:19 +0800\n\nSince update_sg_lb_stats is used to calculate sched_group load\ndifference of cfs type task, it should use h_nr_running instead of\nnr_running of rq.\nSigned-off-by: Lei Wen <leiwen@marvell.com>\nbacported to Linux 3.4 by faux123\n\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Paul Reioux",true],["4697508dc872ded90136542ea267e42bd80603c7","c208d1ecece4e5ef2e4fb72f0546c69cdce89063@gmail.com","sched: change find_busiest_queue to h_nr_running\n\nDate    Sun, 18 Aug 2013 16:25:20 +0800\n\nSince find_busiest_queue try to avoid do load balance for runqueue\nwhich has only one cfs task and its load is above the imbalance\nvalue calculated, we should use h_nr_running of cfs instead of\nnr_running of rq.\n\nSigned-off-by: Lei Wen <leiwen@marvell.com>\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Paul Reioux",true],["fe9dd08c2e250f05e7d9aea18e4bc6e97b744c32","05afeb2b81132ab6685f0098e7d365aeb14e7cae@marvell.com","sched: change active_load_balance_cpu_stop to use h_nr_running\n\nDate\tSun, 18 Aug 2013 16:25:21 +0800\n\nWe should only avoid do the active load balance when there is no\ncfs type task. If just use rq->nr_running, it is possible for the\nsource cpu has multiple rt task, while zero cfs task, so that it\nwould confuse the active load balance function that try to move,\nbut find no task it could move.\n\nSigned-off-by: Lei Wen <leiwen@marvell.com>\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Lei Wen",true],["204634ebd143035abb048437a32f6f54690356fb","c208d1ecece4e5ef2e4fb72f0546c69cdce89063@gmail.com","sched: document the difference between nr_running and h_nr_running\n\nDate    Sun, 18 Aug 2013 16:25:22 +0800\n\nSigned-off-by: Lei Wen <leiwen@marvell.com>\n\nSigned-off-by: Paul Reioux <reioux@gmail.com>","Paul Reioux",true]],"size":28,"ref":"refs/heads/mr2-dev","head":"03af7c793bd2599b3ab293c3241d7eeb1e0584dc"}