{"push_id":866044875,"size":1000,"distinct_size":0,"ref":"refs/heads/caf/linux-next/akpm","head":"615ba802dda1b2c4a8827f813543382500664a1b","before":"129b79e91d9270a163f6ac395a2e71d435cc6c9f","commits":[{"sha":"1ede53f73171722fcf1b5be63bcd64e42d14affc","author":{"email":"27ffc44a8ec6a212fba98cfc3246c6ce8ab131e0@intel.com","name":"Rafael J. Wysocki"},"message":"Merge branch 'pm-opp'\n\n* pm-opp:\n  PM / OPP: Add opp_rcu_lockdep_assert() to _find_device_opp()\n  PM / OPP: Hold dev_opp_list_lock for writers\n  PM / OPP: Protect updates to list_dev with mutex\n  PM / OPP: Propagate error properly from dev_pm_opp_set_sharing_cpus()\n  PM / OPP: Parse all power-supply related bindings together\n  PM / OPP: Rename routines specific to old bindings with _v1\n  PM / OPP: Improve print messages with pr_fmt","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/1ede53f73171722fcf1b5be63bcd64e42d14affc"},{"sha":"1f47b0ddf3ebebe632b96b29a0033505d5adfe8b","author":{"email":"27ffc44a8ec6a212fba98cfc3246c6ce8ab131e0@intel.com","name":"Rafael J. Wysocki"},"message":"Merge branch 'pm-cpufreq'\n\n* pm-cpufreq:\n  cpufreq: s5pv210-cpufreq: fix wrong do_div() usage\n  MAINTAINERS: update for intel P-state driver\n  cpufreq: governor: Quit work-handlers early if governor is stopped\n  intel_pstate: decrease number of \"HWP enabled\" messages\n  cpufreq: arm_big_little: fix frequency check when bL switcher is active","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/1f47b0ddf3ebebe632b96b29a0033505d5adfe8b"},{"sha":"bf27b188b1a9e463d963497720858d4540eab85e","author":{"email":"27ffc44a8ec6a212fba98cfc3246c6ce8ab131e0@intel.com","name":"Rafael J. Wysocki"},"message":"Merge branches 'pm-domains' and 'pm-tools'\n\n* pm-domains:\n  PM / Domains: Allocate memory outside domain locks\n  PM / Domains: Remove dev->driver check for runtime PM\n\n* pm-tools:\n  Creating a common structure initialization pattern for struct option\n  cpupower: Enable disabled Cstates if they are below max latency\n  cpupower: Remove debug message when using cpupower idle-set -D switch\n  cpupower: cpupower monitor reports uninitialized values for offline cpus","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/bf27b188b1a9e463d963497720858d4540eab85e"},{"sha":"27eb427bdc0960ad64b72da03e3596c801e7a9e9","author":{"email":"69652caca27c8b940640ad396ab71f93cacec34f@linux-foundation.org","name":"Linus Torvalds"},"message":"Merge branch 'for-linus-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull btrfs updates from Chris Mason:\n \"We have a lot of subvolume quota improvements in here, along with big\n  piles of cleanups from Dave Sterba and Anand Jain and others.\n\n  Josef pitched in a batch of allocator fixes based on production use\n  here at FB.  We found that mount -o ssd_spread greatly improved our\n  performance on hardware raid5/6, but it exposed some CPU bottlenecks\n  in the allocator.  These patches make a huge difference\"\n\n* 'for-linus-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (100 commits)\n  Btrfs: fix hole punching when using the no-holes feature\n  Btrfs: find_free_extent: Do not erroneously skip LOOP_CACHING_WAIT state\n  btrfs: Fix a data space underflow warning\n  btrfs: qgroup: Fix a rebase bug which will cause qgroup double free\n  btrfs: qgroup: Fix a race in delayed_ref which leads to abort trans\n  btrfs: clear PF_NOFREEZE in cleaner_kthread()\n  btrfs: qgroup: Don't copy extent buffer to do qgroup rescan\n  btrfs: add balance filters limits, stripes and usage to supported mask\n  btrfs: extend balance filter usage to take minimum and maximum\n  btrfs: add balance filter for stripes\n  btrfs: extend balance filter limit to take minimum and maximum\n  btrfs: fix use after free iterating extrefs\n  btrfs: check unsupported filters in balance arguments\n  Btrfs: fix regression running delayed references when using qgroups\n  Btrfs: fix regression when running delayed references\n  Btrfs: don't do extra bitmap search in one bit case\n  Btrfs: keep track of largest extent in bitmaps\n  Btrfs: don't keep trying to build clusters if we are fragmented\n  Btrfs: cut down on loops through the allocator\n  Btrfs: don't continue setting up space cache when enospc\n  ...","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/27eb427bdc0960ad64b72da03e3596c801e7a9e9"},{"sha":"db2a0dd7a43de595d3f0542986bb17ccb6cc364c","author":{"email":"d469e57429c50a2c14d8f9c62453b78f8cea7872@163.com","name":"Yaowei Bai"},"message":"mm/oom_kill.c: introduce is_sysrq_oom helper\n\nIntroduce is_sysrq_oom helper function indicating oom kill triggered\nby sysrq to improve readability.\n\nNo functional changes.\n\nSigned-off-by: Yaowei Bai <bywxiaobai@163.com>\nAcked-by: David Rientjes <rientjes@google.com>\nAcked-by: Michal Hocko <mhocko@suse.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/db2a0dd7a43de595d3f0542986bb17ccb6cc364c"},{"sha":"e2b19197ff9dc46f3e3888f273c4395f9e5a9856","author":{"email":"39ea6a09710987173e32e37c86918024a0f441c1@techsingularity.net","name":"Mel Gorman"},"message":"mm, page_alloc: remove unnecessary parameter from zone_watermark_ok_safe\n\nOverall, the intent of this series is to remove the zonelist cache which\nwas introduced to avoid high overhead in the page allocator.  Once this is\ndone, it is necessary to reduce the cost of watermark checks.\n\nThe series starts with minor micro-optimisations.\n\nNext it notes that GFP flags that affect watermark checks are abused.\n__GFP_WAIT historically identified callers that could not sleep and could\naccess reserves.  This was later abused to identify callers that simply\nprefer to avoid sleeping and have other options.  A patch distinguishes\nbetween atomic callers, high-priority callers and those that simply wish\nto avoid sleep.\n\nThe zonelist cache has been around for a long time but it is of dubious\nmerit with a lot of complexity and some issues that are explained.  The\nmost important issue is that a failed THP allocation can cause a zone to\nbe treated as \"full\".  This potentially causes unnecessary stalls, reclaim\nactivity or remote fallbacks.  The issues could be fixed but it's not\nworth it.  The series places a small number of other micro-optimisations\non top before examining GFP flags watermarks.\n\nHigh-order watermarks enforcement can cause high-order allocations to fail\neven though pages are free.  The watermark checks both protect high-order\natomic allocations and make kswapd aware of high-order pages but there is\na much better way that can be handled using migrate types.  This series\nuses page grouping by mobility to reserve pageblocks for high-order\nallocations with the size of the reservation depending on demand.  kswapd\nawareness is maintained by examining the free lists.  By patch 12 in this\nseries, there are no high-order watermark checks while preserving the\nproperties that motivated the introduction of the watermark checks.\n\nThis patch (of 10):\n\nNo user of zone_watermark_ok_safe() specifies alloc_flags.  This patch\nremoves the unnecessary parameter.\n\nSigned-off-by: Mel Gorman <mgorman@techsingularity.net>\nAcked-by: David Rientjes <rientjes@google.com>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nAcked-by: Michal Hocko <mhocko@suse.com>\nReviewed-by: Christoph Lameter <cl@linux.com>\nAcked-by: Johannes Weiner <hannes@cmpxchg.org>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/e2b19197ff9dc46f3e3888f273c4395f9e5a9856"},{"sha":"c9ab0c4fbeb0202bac3548378a977e1536ebe3ca","author":{"email":"39ea6a09710987173e32e37c86918024a0f441c1@techsingularity.net","name":"Mel Gorman"},"message":"mm, page_alloc: remove unnecessary recalculations for dirty zone balancing\n\nFile-backed pages that will be immediately written are balanced between\nzones.  This heuristic tries to avoid having a single zone filled with\nrecently dirtied pages but the checks are unnecessarily expensive.  Move\nconsider_zone_balanced into the alloc_context instead of checking bitmaps\nmultiple times.  The patch also gives the parameter a more meaningful\nname.\n\nSigned-off-by: Mel Gorman <mgorman@techsingularity.net>\nAcked-by: David Rientjes <rientjes@google.com>\nAcked-by: Michal Hocko <mhocko@suse.com>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nAcked-by: Johannes Weiner <hannes@cmpxchg.org>\nCc: Christoph Lameter <cl@linux.com>\nCc: Vitaly Wool <vitalywool@gmail.com>\nCc: Rik van Riel <riel@redhat.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/c9ab0c4fbeb0202bac3548378a977e1536ebe3ca"},{"sha":"46e700abc44ce215acb4341d9702ce3972eda571","author":{"email":"39ea6a09710987173e32e37c86918024a0f441c1@techsingularity.net","name":"Mel Gorman"},"message":"mm, page_alloc: remove unnecessary taking of a seqlock when cpusets are disabled\n\nThere is a seqcounter that protects against spurious allocation failures\nwhen a task is changing the allowed nodes in a cpuset.  There is no need\nto check the seqcounter until a cpuset exists.\n\nSigned-off-by: Mel Gorman <mgorman@techsingularity.net>\nAcked-by: Christoph Lameter <cl@linux.com>\nAcked-by: David Rientjes <rientjes@google.com>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nAcked-by: Michal Hocko <mhocko@suse.com>\nAcked-by: Johannes Weiner <hannes@cmpxchg.org>\nCc: Vitaly Wool <vitalywool@gmail.com>\nCc: Rik van Riel <riel@redhat.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/46e700abc44ce215acb4341d9702ce3972eda571"},{"sha":"016c13daa5c9e4827eca703e2f0621c131f2cca3","author":{"email":"39ea6a09710987173e32e37c86918024a0f441c1@techsingularity.net","name":"Mel Gorman"},"message":"mm, page_alloc: use masks and shifts when converting GFP flags to migrate types\n\nThis patch redefines which GFP bits are used for specifying mobility and\nthe order of the migrate types.  Once redefined it's possible to convert\nGFP flags to a migrate type with a simple mask and shift.  The only\ndownside is that readers of OOM kill messages and allocation failures may\nhave been used to the existing values but scripts/gfp-translate will help.\n\nSigned-off-by: Mel Gorman <mgorman@techsingularity.net>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nCc: Christoph Lameter <cl@linux.com>\nCc: David Rientjes <rientjes@google.com>\nCc: Johannes Weiner <hannes@cmpxchg.org>\nCc: Michal Hocko <mhocko@suse.com>\nCc: Vitaly Wool <vitalywool@gmail.com>\nCc: Rik van Riel <riel@redhat.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/016c13daa5c9e4827eca703e2f0621c131f2cca3"},{"sha":"d0164adc89f6bb374d304ffcc375c6d2652fe67d","author":{"email":"39ea6a09710987173e32e37c86918024a0f441c1@techsingularity.net","name":"Mel Gorman"},"message":"mm, page_alloc: distinguish between being unable to sleep, unwilling to sleep and avoiding waking kswapd\n\n__GFP_WAIT has been used to identify atomic context in callers that hold\nspinlocks or are in interrupts.  They are expected to be high priority and\nhave access one of two watermarks lower than \"min\" which can be referred\nto as the \"atomic reserve\".  __GFP_HIGH users get access to the first\nlower watermark and can be called the \"high priority reserve\".\n\nOver time, callers had a requirement to not block when fallback options\nwere available.  Some have abused __GFP_WAIT leading to a situation where\nan optimisitic allocation with a fallback option can access atomic\nreserves.\n\nThis patch uses __GFP_ATOMIC to identify callers that are truely atomic,\ncannot sleep and have no alternative.  High priority users continue to use\n__GFP_HIGH.  __GFP_DIRECT_RECLAIM identifies callers that can sleep and\nare willing to enter direct reclaim.  __GFP_KSWAPD_RECLAIM to identify\ncallers that want to wake kswapd for background reclaim.  __GFP_WAIT is\nredefined as a caller that is willing to enter direct reclaim and wake\nkswapd for background reclaim.\n\nThis patch then converts a number of sites\n\no __GFP_ATOMIC is used by callers that are high priority and have memory\n  pools for those requests. GFP_ATOMIC uses this flag.\n\no Callers that have a limited mempool to guarantee forward progress clear\n  __GFP_DIRECT_RECLAIM but keep __GFP_KSWAPD_RECLAIM. bio allocations fall\n  into this category where kswapd will still be woken but atomic reserves\n  are not used as there is a one-entry mempool to guarantee progress.\n\no Callers that are checking if they are non-blocking should use the\n  helper gfpflags_allow_blocking() where possible. This is because\n  checking for __GFP_WAIT as was done historically now can trigger false\n  positives. Some exceptions like dm-crypt.c exist where the code intent\n  is clearer if __GFP_DIRECT_RECLAIM is used instead of the helper due to\n  flag manipulations.\n\no Callers that built their own GFP flags instead of starting with GFP_KERNEL\n  and friends now also need to specify __GFP_KSWAPD_RECLAIM.\n\nThe first key hazard to watch out for is callers that removed __GFP_WAIT\nand was depending on access to atomic reserves for inconspicuous reasons.\nIn some cases it may be appropriate for them to use __GFP_HIGH.\n\nThe second key hazard is callers that assembled their own combination of\nGFP flags instead of starting with something like GFP_KERNEL.  They may\nnow wish to specify __GFP_KSWAPD_RECLAIM.  It's almost certainly harmless\nif it's missed in most cases as other activity will wake kswapd.\n\nSigned-off-by: Mel Gorman <mgorman@techsingularity.net>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nAcked-by: Michal Hocko <mhocko@suse.com>\nAcked-by: Johannes Weiner <hannes@cmpxchg.org>\nCc: Christoph Lameter <cl@linux.com>\nCc: David Rientjes <rientjes@google.com>\nCc: Vitaly Wool <vitalywool@gmail.com>\nCc: Rik van Riel <riel@redhat.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/d0164adc89f6bb374d304ffcc375c6d2652fe67d"},{"sha":"40113370836e8e79befa585277296ed42781ef31","author":{"email":"39ea6a09710987173e32e37c86918024a0f441c1@techsingularity.net","name":"Mel Gorman"},"message":"mm: page_alloc: remove GFP_IOFS\n\nGFP_IOFS was intended to be shorthand for clearing two flags, not a set of\nallocation flags.  There is only one user of this flag combination now and\nthere appears to be no reason why Lustre had to be protected from reclaim\nstalls.  As none of the sites appear to be atomic, this patch simply\ndeletes GFP_IOFS and converts Lustre to using GFP_KERNEL, GFP_NOFS or\nGFP_NOIO as appropriate.\n\nSigned-off-by: Mel Gorman <mgorman@techsingularity.net>\nCc: Oleg Drokin <oleg.drokin@intel.com>\nCc: Andreas Dilger <andreas.dilger@intel.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/40113370836e8e79befa585277296ed42781ef31"},{"sha":"71baba4b92dc1fa1bc461742c6ab1942ec6034e9","author":{"email":"39ea6a09710987173e32e37c86918024a0f441c1@techsingularity.net","name":"Mel Gorman"},"message":"mm, page_alloc: rename __GFP_WAIT to __GFP_RECLAIM\n\n__GFP_WAIT was used to signal that the caller was in atomic context and\ncould not sleep.  Now it is possible to distinguish between true atomic\ncontext and callers that are not willing to sleep.  The latter should\nclear __GFP_DIRECT_RECLAIM so kswapd will still wake.  As clearing\n__GFP_WAIT behaves differently, there is a risk that people will clear the\nwrong flags.  This patch renames __GFP_WAIT to __GFP_RECLAIM to clearly\nindicate what it does -- setting it allows all reclaim activity, clearing\nthem prevents it.\n\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Mel Gorman <mgorman@techsingularity.net>\nAcked-by: Michal Hocko <mhocko@suse.com>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nAcked-by: Johannes Weiner <hannes@cmpxchg.org>\nCc: Christoph Lameter <cl@linux.com>\nAcked-by: David Rientjes <rientjes@google.com>\nCc: Vitaly Wool <vitalywool@gmail.com>\nCc: Rik van Riel <riel@redhat.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/71baba4b92dc1fa1bc461742c6ab1942ec6034e9"},{"sha":"f77cf4e4cc9d40310a7224a1a67c733aeec78836","author":{"email":"39ea6a09710987173e32e37c86918024a0f441c1@techsingularity.net","name":"Mel Gorman"},"message":"mm, page_alloc: delete the zonelist_cache\n\nThe zonelist cache (zlc) was introduced to skip over zones that were\nrecently known to be full.  This avoided expensive operations such as the\ncpuset checks, watermark calculations and zone_reclaim.  The situation\ntoday is different and the complexity of zlc is harder to justify.\n\n1) The cpuset checks are no-ops unless a cpuset is active and in general\n   are a lot cheaper.\n\n2) zone_reclaim is now disabled by default and I suspect that was a large\n   source of the cost that zlc wanted to avoid. When it is enabled, it's\n   known to be a major source of stalling when nodes fill up and it's\n   unwise to hit every other user with the overhead.\n\n3) Watermark checks are expensive to calculate for high-order\n   allocation requests. Later patches in this series will reduce the cost\n   of the watermark checking.\n\n4) The most important issue is that in the current implementation it\n   is possible for a failed THP allocation to mark a zone full for order-0\n   allocations and cause a fallback to remote nodes.\n\nThe last issue could be addressed with additional complexity but as the\nbenefit of zlc is questionable, it is better to remove it.  If stalls due\nto zone_reclaim are ever reported then an alternative would be to\nintroduce deferring logic based on a timeout inside zone_reclaim itself\nand leave the page allocator fast paths alone.\n\nThe impact on page-allocator microbenchmarks is negligible as they don't\nhit the paths where the zlc comes into play.  Most page-reclaim related\nworkloads showed no noticeable difference as a result of the removal.\n\nThe impact was noticeable in a workload called \"stutter\".  One part uses a\nlot of anonymous memory, a second measures mmap latency and a third copies\na large file.  In an ideal world the latency application would not notice\nthe mmap latency.  On a 2-node machine the results of this patch are\n\nstutter\n                             4.3.0-rc1             4.3.0-rc1\n                              baseline              nozlc-v4\nMin         mmap     20.9243 (  0.00%)     20.7716 (  0.73%)\n1st-qrtle   mmap     22.0612 (  0.00%)     22.0680 ( -0.03%)\n2nd-qrtle   mmap     22.3291 (  0.00%)     22.3809 ( -0.23%)\n3rd-qrtle   mmap     25.2244 (  0.00%)     25.2396 ( -0.06%)\nMax-90%     mmap     48.0995 (  0.00%)     28.3713 ( 41.02%)\nMax-93%     mmap     52.5557 (  0.00%)     36.0170 ( 31.47%)\nMax-95%     mmap     55.8173 (  0.00%)     47.3163 ( 15.23%)\nMax-99%     mmap     67.3781 (  0.00%)     70.1140 ( -4.06%)\nMax         mmap  24447.6375 (  0.00%)  12915.1356 ( 47.17%)\nMean        mmap     33.7883 (  0.00%)     27.7944 ( 17.74%)\nBest99%Mean mmap     27.7825 (  0.00%)     25.2767 (  9.02%)\nBest95%Mean mmap     26.3912 (  0.00%)     23.7994 (  9.82%)\nBest90%Mean mmap     24.9886 (  0.00%)     23.2251 (  7.06%)\nBest50%Mean mmap     22.0157 (  0.00%)     22.0261 ( -0.05%)\nBest10%Mean mmap     21.6705 (  0.00%)     21.6083 (  0.29%)\nBest5%Mean  mmap     21.5581 (  0.00%)     21.4611 (  0.45%)\nBest1%Mean  mmap     21.3079 (  0.00%)     21.1631 (  0.68%)\n\nNote that the maximum stall latency went from 24 seconds to 12 which is\nstill bad but an improvement.  The milage varies considerably 2-node\nmachine on an earlier test went from 494 seconds to 47 seconds and a\n4-node machine that tested an earlier version of this patch went from a\nworst case stall time of 6 seconds to 67ms.  The nature of the benchmark\nis inherently unpredictable as it is hammering the system and the milage\nwill vary between machines.\n\nThere is a secondary impact with potentially more direct reclaim because\nzones are now being considered instead of being skipped by zlc.  In this\nparticular test run it did not occur so will not be described.  However,\nin at least one test the following was observed\n\n1. Direct reclaim rates were higher. This was likely due to direct reclaim\n  being entered instead of the zlc disabling a zone and busy looping.\n  Busy looping may have the effect of allowing kswapd to make more\n  progress and in some cases may be better overall. If this is found then\n  the correct action is to put direct reclaimers to sleep on a waitqueue\n  and allow kswapd make forward progress. Busy looping on the zlc is even\n  worse than when the allocator used to blindly call congestion_wait().\n\n2. There was higher swap activity as direct reclaim was active.\n\n3. Direct reclaim efficiency was lower. This is related to 1 as more\n  scanning activity also encountered more pages that could not be\n  immediately reclaimed\n\nIn that case, the direct page scan and reclaim rates are noticeable but\nit is not considered a problem for a few reasons\n\n1. The test is primarily concerned with latency. The mmap attempts are also\n   faulted which means there are THP allocation requests. The ZLC could\n   cause zones to be disabled causing the process to busy loop instead\n   of reclaiming.  This looks like elevated direct reclaim activity but\n   it's the correct action to take based on what processes requested.\n\n2. The test hammers reclaim and compaction heavily. The number of successful\n   THP faults is highly variable but affects the reclaim stats. It's not a\n   realistic or reasonable measure of page reclaim activity.\n\n3. No other page-reclaim intensive workload that was tested showed a problem.\n\n4. If a workload is identified that benefitted from the busy looping then it\n   should be fixed by having direct reclaimers sleep on a wait queue until\n   woken by kswapd instead of busy looping. We had this class of problem before\n   when congestion_waits() with a fixed timeout was a brain damaged decision\n   but happened to benefit some workloads.\n\nIf a workload is identified that relied on the zlc to busy loop then it\nshould be fixed correctly and have a direct reclaimer sleep on a waitqueue\nuntil woken by kswapd.\n\nSigned-off-by: Mel Gorman <mgorman@techsingularity.net>\nAcked-by: David Rientjes <rientjes@google.com>\nAcked-by: Christoph Lameter <cl@linux.com>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nAcked-by: Michal Hocko <mhocko@suse.com>\nAcked-by: Johannes Weiner <hannes@cmpxchg.org>\nCc: Vitaly Wool <vitalywool@gmail.com>\nCc: Rik van Riel <riel@redhat.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/f77cf4e4cc9d40310a7224a1a67c733aeec78836"},{"sha":"974a786e63c96a2401a78ddba926f34c128474f1","author":{"email":"39ea6a09710987173e32e37c86918024a0f441c1@techsingularity.net","name":"Mel Gorman"},"message":"mm, page_alloc: remove MIGRATE_RESERVE\n\nMIGRATE_RESERVE preserves an old property of the buddy allocator that\nexisted prior to fragmentation avoidance -- min_free_kbytes worth of pages\ntended to remain contiguous until the only alternative was to fail the\nallocation.  At the time it was discovered that high-order atomic\nallocations relied on this property so MIGRATE_RESERVE was introduced.  A\nlater patch will introduce an alternative MIGRATE_HIGHATOMIC so this patch\ndeletes MIGRATE_RESERVE and supporting code so it'll be easier to review.\nNote that this patch in isolation may look like a false regression if\nsomeone was bisecting high-order atomic allocation failures.\n\nSigned-off-by: Mel Gorman <mgorman@techsingularity.net>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nCc: Christoph Lameter <cl@linux.com>\nCc: David Rientjes <rientjes@google.com>\nCc: Johannes Weiner <hannes@cmpxchg.org>\nCc: Michal Hocko <mhocko@suse.com>\nCc: Vitaly Wool <vitalywool@gmail.com>\nCc: Rik van Riel <riel@redhat.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/974a786e63c96a2401a78ddba926f34c128474f1"},{"sha":"0aaa29a56e4fb0fc9e24edb649e2733a672ca099","author":{"email":"39ea6a09710987173e32e37c86918024a0f441c1@techsingularity.net","name":"Mel Gorman"},"message":"mm, page_alloc: reserve pageblocks for high-order atomic allocations on demand\n\nHigh-order watermark checking exists for two reasons -- kswapd high-order\nawareness and protection for high-order atomic requests.  Historically the\nkernel depended on MIGRATE_RESERVE to preserve min_free_kbytes as\nhigh-order free pages for as long as possible.  This patch introduces\nMIGRATE_HIGHATOMIC that reserves pageblocks for high-order atomic\nallocations on demand and avoids using those blocks for order-0\nallocations.  This is more flexible and reliable than MIGRATE_RESERVE was.\n\nA MIGRATE_HIGHORDER pageblock is created when an atomic high-order\nallocation request steals a pageblock but limits the total number to 1% of\nthe zone.  Callers that speculatively abuse atomic allocations for\nlong-lived high-order allocations to access the reserve will quickly fail.\n Note that SLUB is currently not such an abuser as it reclaims at least\nonce.  It is possible that the pageblock stolen has few suitable\nhigh-order pages and will need to steal again in the near future but there\nwould need to be strong justification to search all pageblocks for an\nideal candidate.\n\nThe pageblocks are unreserved if an allocation fails after a direct\nreclaim attempt.\n\nThe watermark checks account for the reserved pageblocks when the\nallocation request is not a high-order atomic allocation.\n\nThe reserved pageblocks can not be used for order-0 allocations.  This may\nallow temporary wastage until a failed reclaim reassigns the pageblock.\nThis is deliberate as the intent of the reservation is to satisfy a\nlimited number of atomic high-order short-lived requests if the system\nrequires them.\n\nThe stutter benchmark was used to evaluate this but while it was running\nthere was a systemtap script that randomly allocated between 1 high-order\npage and 12.5% of memory's worth of order-3 pages using GFP_ATOMIC.  This\nis much larger than the potential reserve and it does not attempt to be\nrealistic.  It is intended to stress random high-order allocations from an\nunknown source, show that there is a reduction in failures without\nintroducing an anomaly where atomic allocations are more reliable than\nregular allocations.  The amount of memory reserved varied throughout the\nworkload as reserves were created and reclaimed under memory pressure.\nThe allocation failures once the workload warmed up were as follows;\n\n4.2-rc5-vanilla\t\t70%\n4.2-rc5-atomic-reserve\t56%\n\nThe failure rate was also measured while building multiple kernels.  The\nfailure rate was 14% but is 6% with this patch applied.\n\nOverall, this is a small reduction but the reserves are small relative to\nthe number of allocation requests.  In early versions of the patch, the\nfailure rate reduced by a much larger amount but that required much larger\nreserves and perversely made atomic allocations seem more reliable than\nregular allocations.\n\n[yalin.wang2010@gmail.com: fix redundant check and a memory leak]\nSigned-off-by: Mel Gorman <mgorman@techsingularity.net>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nAcked-by: Michal Hocko <mhocko@suse.com>\nAcked-by: Johannes Weiner <hannes@cmpxchg.org>\nCc: Christoph Lameter <cl@linux.com>\nCc: David Rientjes <rientjes@google.com>\nCc: Vitaly Wool <vitalywool@gmail.com>\nCc: Rik van Riel <riel@redhat.com>\nSigned-off-by: yalin wang <yalin.wang2010@gmail.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/0aaa29a56e4fb0fc9e24edb649e2733a672ca099"},{"sha":"97a16fc82a7c5b0cfce95c05dfb9561e306ca1b1","author":{"email":"39ea6a09710987173e32e37c86918024a0f441c1@techsingularity.net","name":"Mel Gorman"},"message":"mm, page_alloc: only enforce watermarks for order-0 allocations\n\nThe primary purpose of watermarks is to ensure that reclaim can always\nmake forward progress in PF_MEMALLOC context (kswapd and direct reclaim).\nThese assume that order-0 allocations are all that is necessary for\nforward progress.\n\nHigh-order watermarks serve a different purpose.  Kswapd had no high-order\nawareness before they were introduced\n(https://lkml.kernel.org/r/413AA7B2.4000907@yahoo.com.au).  This was\nparticularly important when there were high-order atomic requests.  The\nwatermarks both gave kswapd awareness and made a reserve for those atomic\nrequests.\n\nThere are two important side-effects of this.  The most important is that\na non-atomic high-order request can fail even though free pages are\navailable and the order-0 watermarks are ok.  The second is that\nhigh-order watermark checks are expensive as the free list counts up to\nthe requested order must be examined.\n\nWith the introduction of MIGRATE_HIGHATOMIC it is no longer necessary to\nhave high-order watermarks.  Kswapd and compaction still need high-order\nawareness which is handled by checking that at least one suitable\nhigh-order page is free.\n\nWith the patch applied, there was little difference in the allocation\nfailure rates as the atomic reserves are small relative to the number of\nallocation attempts.  The expected impact is that there will never be an\nallocation failure report that shows suitable pages on the free lists.\n\nThe one potential side-effect of this is that in a vanilla kernel, the\nwatermark checks may have kept a free page for an atomic allocation.  Now,\nwe are 100% relying on the HighAtomic reserves and an early allocation to\nhave allocated them.  If the first high-order atomic allocation is after\nthe system is already heavily fragmented then it'll fail.\n\n[akpm@linux-foundation.org: simplify __zone_watermark_ok(), per Vlastimil]\nSigned-off-by: Mel Gorman <mgorman@techsingularity.net>\nAcked-by: Michal Hocko <mhocko@suse.com>\nAcked-by: Johannes Weiner <hannes@cmpxchg.org>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nCc: Christoph Lameter <cl@linux.com>\nCc: David Rientjes <rientjes@google.com>\nCc: Vitaly Wool <vitalywool@gmail.com>\nCc: Rik van Riel <riel@redhat.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/97a16fc82a7c5b0cfce95c05dfb9561e306ca1b1"},{"sha":"dd56b046426760aa0c852ad6e4b6b07891222d65","author":{"email":"39ea6a09710987173e32e37c86918024a0f441c1@techsingularity.net","name":"Mel Gorman"},"message":"mm: page_alloc: hide some GFP internals and document the bits and flag combinations\n\nAndrew stated the following\n\n\tWe have quite a history of remote parts of the kernel using\n\tweird/wrong/inexplicable combinations of __GFP_ flags.\tI tend\n\tto think that this is because we didn't adequately explain the\n\tinterface.\n\n\tAnd I don't think that gfp.h really improved much in this area as\n\ta result of this patchset.  Could you go through it some time and\n\tdecide if we've adequately documented all this stuff?\n\nThis patches first moves some GFP flag combinations that are part of the MM\ninternals to mm/internal.h. The rest of the patch documents the __GFP_FOO\nbits under various headings and then documents the flag combinations. It\nwill not help callers that are brain damaged but the clarity might motivate\nsome fixes and avoid future mistakes.\n\nSigned-off-by: Mel Gorman <mgorman@techsingularity.net>\nCc: Johannes Weiner <hannes@cmpxchg.org>\nCc: Rik van Riel <riel@redhat.com>\nCc: Vlastimil Babka <vbabka@suse.cz>\nCc: David Rientjes <rientjes@google.com>\nCc: Joonsoo Kim <iamjoonsoo.kim@lge.com>\nCc: Michal Hocko <mhocko@kernel.org>\nCc: Vitaly Wool <vitalywool@gmail.com>\nCc: Rik van Riel <riel@redhat.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/dd56b046426760aa0c852ad6e4b6b07891222d65"},{"sha":"89903327607232de32f05100cf03f9390b858e0b","author":{"email":"5c1e68b099950c134891f0b6e179498a8ebe9cf9@linux-foundation.org","name":"Andrew Morton"},"message":"include/linux/mmzone.h: reflow comment\n\nSomeone has an 86 column display.\n\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/89903327607232de32f05100cf03f9390b858e0b"},{"sha":"c62d25556be6c965dc14288e796a576e8e39a7e9","author":{"email":"829500b200af6c2a0eca4dfd5c388e6b8fbe8dc6@suse.com","name":"Michal Hocko"},"message":"mm, fs: introduce mapping_gfp_constraint()\n\nThere are many places which use mapping_gfp_mask to restrict a more\ngeneric gfp mask which would be used for allocations which are not\ndirectly related to the page cache but they are performed in the same\ncontext.\n\nLet's introduce a helper function which makes the restriction explicit and\neasier to track.  This patch doesn't introduce any functional changes.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Michal Hocko <mhocko@suse.com>\nSuggested-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/c62d25556be6c965dc14288e796a576e8e39a7e9"},{"sha":"d6669d689f397137381fe6729293e0eba1ef09a8","author":{"email":"4ed61b0b61ab8b39dcdee4eca4730f0b305b3047@redhat.com","name":"Aaron Tomlin"},"message":"thp: remove unused vma parameter from khugepaged_alloc_page\n\nThe \"vma\" parameter to khugepaged_alloc_page() is unused.  It has to\nremain unused or the drop read lock 'map_sem' optimisation introduce by\ncommit 8b1645685acf (\"mm, THP: don't hold mmap_sem in khugepaged when\nallocating THP\") wouldn't be safe.  So let's remove it.\n\nSigned-off-by: Aaron Tomlin <atomlin@redhat.com>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":false,"url":"https://api.github.com/repos/kykdev/caf-msm-3.10/commits/d6669d689f397137381fe6729293e0eba1ef09a8"}]}