)]}'
{
  "log": [
    {
      "commit": "74046494ea68676d29ef6501a4bd950f08112a2c",
      "tree": "4fb862c2ebeba25b089ed64d5cc36437ad9e3df2",
      "parents": [
        "42be35d0390b966253136a285f507f5ad00fd9e8"
      ],
      "author": {
        "name": "Gilad Ben-Yossef",
        "email": "gilad@benyossef.com",
        "time": "Wed Mar 28 14:42:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:35 2012 -0700"
      },
      "message": "mm: only IPI CPUs to drain local pages if they exist\n\nCalculate a cpumask of CPUs with per-cpu pages in any zone and only send\nan IPI requesting CPUs to drain these pages to the buddy allocator if they\nactually have pages when asked to flush.\n\nThis patch saves 85%+ of IPIs asking to drain per-cpu pages in case of\nsevere memory pressure that leads to OOM since in these cases multiple,\npossibly concurrent, allocation requests end up in the direct reclaim code\npath so when the per-cpu pages end up reclaimed on first allocation\nfailure for most of the proceeding allocation attempts until the memory\npressure is off (possibly via the OOM killer) there are no per-cpu pages\non most CPUs (and there can easily be hundreds of them).\n\nThis also has the side effect of shortening the average latency of direct\nreclaim by 1 or more order of magnitude since waiting for all the CPUs to\nACK the IPI takes a long time.\n\nTested by running \"hackbench 400\" on a 8 CPU x86 VM and observing the\ndifference between the number of direct reclaim attempts that end up in\ndrain_all_pages() and those were more then 1/2 of the online CPU had any\nper-cpu page in them, using the vmstat counters introduced in the next\npatch in the series and using proc/interrupts.\n\nIn the test sceanrio, this was seen to save around 3600 global\nIPIs after trigerring an OOM on a concurrent workload:\n\n$ cat /proc/vmstat | tail -n 2\npcp_global_drain 0\npcp_global_ipi_saved 0\n\n$ cat /proc/interrupts | grep CAL\nCAL:          1          2          1          2\n          2          2          2          2   Function call interrupts\n\n$ hackbench 400\n[OOM messages snipped]\n\n$ cat /proc/vmstat | tail -n 2\npcp_global_drain 3647\npcp_global_ipi_saved 3642\n\n$ cat /proc/interrupts | grep CAL\nCAL:          6         13          6          3\n          3          3         1 2          7   Function call interrupts\n\nPlease note that if the global drain is removed from the direct reclaim\npath as a patch from Mel Gorman currently suggests this should be replaced\nwith an on_each_cpu_cond invocation.\n\nSigned-off-by: Gilad Ben-Yossef \u003cgilad@benyossef.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nAcked-by: Michal Nazarewicz \u003cmina86@mina86.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29fd66d289f2981e11c550f8b411a6d3d38be0cf",
      "tree": "cc9931d0ee891ccfe9114bfd977da47f47175dbe",
      "parents": [
        "45f83cefe3a5f0476ac3f96382ebfdc3fe4caab2"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Mar 28 14:42:41 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:35 2012 -0700"
      },
      "message": "mm, coredump: fail allocations when coredumping instead of oom killing\n\nThe size of coredump files is limited by RLIMIT_CORE, however, allocating\nlarge amounts of memory results in three negative consequences:\n\n - the coredumping process may be chosen for oom kill and quickly deplete\n   all memory reserves in oom conditions preventing further progress from\n   being made or tasks from exiting,\n\n - the coredumping process may cause other processes to be oom killed\n   without fault of their own as the result of a SIGSEGV, for example, in\n   the coredumping process, or\n\n - the coredumping process may result in a livelock while writing to the\n   dump file if it needs memory to allocate while other threads are in\n   the exit path waiting on the coredumper to complete.\n\nThis is fixed by implying __GFP_NORETRY in the page allocator for\ncoredumping processes when reclaim has failed so the allocations fail and\nthe process continues to exit.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b224ef856b1a5b949daff5937a9e187fe622b8f5",
      "tree": "7d119425e8734eba198f83dec781d8b9c6859923",
      "parents": [
        "8d13bddd11c10db40e2c81b4b224c11126691fc0"
      ],
      "author": {
        "name": "Kautuk Consul",
        "email": "consul.kautuk@gmail.com",
        "time": "Wed Mar 21 16:34:15 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:00 2012 -0700"
      },
      "message": "page_alloc: remove unused find_zone_movable_pfns_for_nodes() argument\n\nfind_zone_movable_pfns_for_nodes() does not use its argument.\n\nSigned-off-by: Kautuk Consul \u003cconsul.kautuk@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8d13bddd11c10db40e2c81b4b224c11126691fc0",
      "tree": "bec31e54cbc43bf6b49c391d81893203b903b5ec",
      "parents": [
        "d1d5e05ffdc110021ae7937802e88ae0d223dcdc"
      ],
      "author": {
        "name": "Kautuk Consul",
        "email": "consul.kautuk@gmail.com",
        "time": "Wed Mar 21 16:34:15 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:00 2012 -0700"
      },
      "message": "page_alloc.c: remove add_from_early_node_map()\n\nadd_from_early_node_map() is unused.\n\nSigned-off-by: Kautuk Consul \u003cconsul.kautuk@gmail.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cc9a6c8776615f9c194ccf0b63a0aa5628235545",
      "tree": "0cbbf118e86541f8eb2fc7b717a0e08eaced986d",
      "parents": [
        "e845e199362cc5712ba0e7eedc14eed70e144258"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Wed Mar 21 16:34:11 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "cpuset: mm: reduce large amounts of memory barrier related damage v3\n\nCommit c0ff7453bb5c (\"cpuset,mm: fix no node to alloc memory when\nchanging cpuset\u0027s mems\") wins a super prize for the largest number of\nmemory barriers entered into fast paths for one commit.\n\n[get|put]_mems_allowed is incredibly heavy with pairs of full memory\nbarriers inserted into a number of hot paths.  This was detected while\ninvestigating at large page allocator slowdown introduced some time\nafter 2.6.32.  The largest portion of this overhead was shown by\noprofile to be at an mfence introduced by this commit into the page\nallocator hot path.\n\nFor extra style points, the commit introduced the use of yield() in an\nimplementation of what looks like a spinning mutex.\n\nThis patch replaces the full memory barriers on both read and write\nsides with a sequence counter with just read barriers on the fast path\nside.  This is much cheaper on some architectures, including x86.  The\nmain bulk of the patch is the retry logic if the nodemask changes in a\nmanner that can cause a false failure.\n\nWhile updating the nodemask, a check is made to see if a false failure\nis a risk.  If it is, the sequence number gets bumped and parallel\nallocators will briefly stall while the nodemask update takes place.\n\nIn a page fault test microbenchmark, oprofile samples from\n__alloc_pages_nodemask went from 4.53% of all samples to 1.15%.  The\nactual results were\n\n                             3.3.0-rc3          3.3.0-rc3\n                             rc3-vanilla        nobarrier-v2r1\n    Clients   1 UserTime       0.07 (  0.00%)   0.08 (-14.19%)\n    Clients   2 UserTime       0.07 (  0.00%)   0.07 (  2.72%)\n    Clients   4 UserTime       0.08 (  0.00%)   0.07 (  3.29%)\n    Clients   1 SysTime        0.70 (  0.00%)   0.65 (  6.65%)\n    Clients   2 SysTime        0.85 (  0.00%)   0.82 (  3.65%)\n    Clients   4 SysTime        1.41 (  0.00%)   1.41 (  0.32%)\n    Clients   1 WallTime       0.77 (  0.00%)   0.74 (  4.19%)\n    Clients   2 WallTime       0.47 (  0.00%)   0.45 (  3.73%)\n    Clients   4 WallTime       0.38 (  0.00%)   0.37 (  1.58%)\n    Clients   1 Flt/sec/cpu  497620.28 (  0.00%) 520294.53 (  4.56%)\n    Clients   2 Flt/sec/cpu  414639.05 (  0.00%) 429882.01 (  3.68%)\n    Clients   4 Flt/sec/cpu  257959.16 (  0.00%) 258761.48 (  0.31%)\n    Clients   1 Flt/sec      495161.39 (  0.00%) 517292.87 (  4.47%)\n    Clients   2 Flt/sec      820325.95 (  0.00%) 850289.77 (  3.65%)\n    Clients   4 Flt/sec      1020068.93 (  0.00%) 1022674.06 (  0.26%)\n    MMTests Statistics: duration\n    Sys Time Running Test (seconds)             135.68    132.17\n    User+Sys Time Running Test (seconds)         164.2    160.13\n    Total Elapsed Time (seconds)                123.46    120.87\n\nThe overall improvement is small but the System CPU time is much\nimproved and roughly in correlation to what oprofile reported (these\nperformance figures are without profiling so skew is expected).  The\nactual number of page faults is noticeably improved.\n\nFor benchmarks like kernel builds, the overall benefit is marginal but\nthe system CPU time is slightly reduced.\n\nTo test the actual bug the commit fixed I opened two terminals.  The\nfirst ran within a cpuset and continually ran a small program that\nfaulted 100M of anonymous data.  In a second window, the nodemask of the\ncpuset was continually randomised in a loop.\n\nWithout the commit, the program would fail every so often (usually\nwithin 10 seconds) and obviously with the commit everything worked fine.\nWith this patch applied, it also worked fine so the fix should be\nfunctionally equivalent.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0cb3c76ae1ced85f9034480b1b24cd96530ec78",
      "tree": "997ae67621f76b3b6bf588604f85738a8c97cbef",
      "parents": [
        "3268c63eded4612a3d07b56d1e02ce7731e6608e"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Wed Mar 21 16:34:06 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "mm: drain percpu lru add/rotate page-vectors on cpu hot-unplug\n\nThis cpu hotplug hook was accidentally removed in commit 00a62ce91e55\n(\"mm: fix Committed_AS underflow on large NR_CPUS environment\")\n\nThe visible effect of this accident: some pages are borrowed in per-cpu\npage-vectors.  Truncate can deal with it, but these pages cannot be\nreused while this cpu is offline.  So this is like a temporary memory\nleak.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Eric B Munson \u003cebmunson@us.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08ab9b10d43aca091fdff58b69fc1ec89c5b8a83",
      "tree": "73abfd3a257f3feadc0fa28c3117aaa9d95af596",
      "parents": [
        "b76437579d1344b612cf1851ae610c636cec7db0"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Mar 21 16:34:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "mm, oom: force oom kill on sysrq+f\n\nThe oom killer chooses not to kill a thread if:\n\n - an eligible thread has already been oom killed and has yet to exit,\n   and\n\n - an eligible thread is exiting but has yet to free all its memory and\n   is not the thread attempting to currently allocate memory.\n\nSysRq+F manually invokes the global oom killer to kill a memory-hogging\ntask.  This is normally done as a last resort to free memory when no\nprogress is being made or to test the oom killer itself.\n\nFor both uses, we always want to kill a thread and never defer.  This\npatch causes SysRq+F to always kill an eligible thread and can be used to\nforce a kill even if another oom killed thread has failed to exit.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aff622495c9a0b56148192e53bdec539f5e147f2",
      "tree": "78f6400d8b6bec3279483006a0e9543e47aa833e",
      "parents": [
        "7be62de99adcab4449d416977b4274985c5fe023"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Wed Mar 21 16:33:52 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:56 2012 -0700"
      },
      "message": "vmscan: only defer compaction for failed order and higher\n\nCurrently a failed order-9 (transparent hugepage) compaction can lead to\nmemory compaction being temporarily disabled for a memory zone.  Even if\nwe only need compaction for an order 2 allocation, eg.  for jumbo frames\nnetworking.\n\nThe fix is relatively straightforward: keep track of the highest order at\nwhich compaction is succeeding, and only defer compaction for orders at\nwhich compaction is failing.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "074b85175a43a23fdbde60f55feea636e0bf0f85",
      "tree": "e6f6fdd82854b2bf25ea5b404cee010806a8fced",
      "parents": [
        "1d6f2097865e64963e90cce04980dce2f9fc023f"
      ],
      "author": {
        "name": "Dimitri Sivanich",
        "email": "sivanich@sgi.com",
        "time": "Wed Feb 08 12:39:07 2012 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Feb 13 20:45:38 2012 -0500"
      },
      "message": "vfs: fix panic in __d_lookup() with high dentry hashtable counts\n\nWhen the number of dentry cache hash table entries gets too high\n(2147483648 entries), as happens by default on a 16TB system, use of a\nsigned integer in the dcache_init() initialization loop prevents the\ndentry_hashtable from getting initialized, causing a panic in\n__d_lookup().  Fix this in dcache_init() and similar areas.\n\nSigned-off-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "656a070629adfe23c12768e35ddf91feab469ff7",
      "tree": "42c001d079ec926186873b91d7d84bf66c54bcad",
      "parents": [
        "687875fb7de4a95223af20ee024282fa9099f860"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Fri Jan 20 14:33:58 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 23 08:38:47 2012 -0800"
      },
      "message": "mm: __count_immobile_pages(): make sure the node is online\n\npage_zone() requires an online node otherwise we are accessing NULL\nNODE_DATA.  This is not an issue at the moment because node_zones are\nlocated at the structure beginning but this might change in the future\nso better be careful about that.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "687875fb7de4a95223af20ee024282fa9099f860",
      "tree": "1c50d5ac1e31afac82cb8b0a6dd4b1f7bd07eecd",
      "parents": [
        "6536e3123e5d3371a6f52e32a3d0694bcc987702"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Fri Jan 20 14:33:55 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 23 08:38:47 2012 -0800"
      },
      "message": "mm: fix NULL ptr dereference in __count_immobile_pages\n\nFix the following NULL ptr dereference caused by\n\n  cat /sys/devices/system/memory/memory0/removable\n\nPid: 13979, comm: sed Not tainted 3.0.13-0.5-default #1 IBM BladeCenter LS21 -[7971PAM]-/Server Blade\nRIP: __count_immobile_pages+0x4/0x100\nProcess sed (pid: 13979, threadinfo ffff880221c36000, task ffff88022e788480)\nCall Trace:\n  is_pageblock_removable_nolock+0x34/0x40\n  is_mem_section_removable+0x74/0xf0\n  show_mem_removable+0x41/0x70\n  sysfs_read_file+0xfe/0x1c0\n  vfs_read+0xc7/0x130\n  sys_read+0x53/0xa0\n  system_call_fastpath+0x16/0x1b\n\nWe are crashing because we are trying to dereference NULL zone which\ncame from pfn\u003d0 (struct page ffffea0000000000). According to the boot\nlog this page is marked reserved:\ne820 update range: 0000000000000000 - 0000000000010000 (usable) \u003d\u003d\u003e (reserved)\n\nand early_node_map confirms that:\nearly_node_map[3] active PFN ranges\n    1: 0x00000010 -\u003e 0x0000009c\n    1: 0x00000100 -\u003e 0x000bffa3\n    1: 0x00100000 -\u003e 0x00240000\n\nThe problem is that memory_present works in PAGE_SECTION_MASK aligned\nblocks so the reserved range sneaks into the the section as well.  This\nalso means that free_area_init_node will not take care of those reserved\npages and they stay uninitialized.\n\nWhen we try to read the removable status we walk through all available\nsections and hope that the zone is valid for all pages in the section.\nBut this is not true in this case as the zone and nid are not initialized.\n\nWe have only one node in this particular case and it is marked as node\u003d1\n(rather than 0) and that made the problem visible because page_to_nid will\nreturn 0 and there are no zones on the node.\n\nLet\u0027s check that the zone is valid and that the given pfn falls into its\nboundaries and mark the section not removable.  This might cause some\nfalse positives, probably, but we do not have any sane way to find out\nwhether the page is reserved by the platform or it is just not used for\nwhatever other reasons.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4111304dab198c687bc60f2e235a9f7ee92c47c8",
      "tree": "c98fbae214f73f8475bcdc54c8116dea82cd7d14",
      "parents": [
        "4d06f382c733f99ec67df006255e87525ac1efd3"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Thu Jan 12 17:20:01 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:10 2012 -0800"
      },
      "message": "mm: enum lru_list lru\n\nMostly we use \"enum lru_list lru\": change those few \"l\"s to \"lru\"s.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "66199712e9eef5aede09dbcd9dfff87798a66917",
      "tree": "9994be003d97d9596fadb5e4c38c271ed3e79333",
      "parents": [
        "c82449352854ff09e43062246af86bdeb628f0c3"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Thu Jan 12 17:19:41 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:09 2012 -0800"
      },
      "message": "mm: page allocator: do not call direct reclaim for THP allocations while compaction is deferred\n\nIf compaction is deferred, direct reclaim is used to try to free enough\npages for the allocation to succeed.  For small high-orders, this has a\nreasonable chance of success.  However, if the caller has specified\n__GFP_NO_KSWAPD to limit the disruption to the system, it makes more sense\nto fail the allocation rather than stall the caller in direct reclaim.\nThis patch skips direct reclaim if compaction is deferred and the caller\nspecifies __GFP_NO_KSWAPD.\n\nAsync compaction only considers a subset of pages so it is possible for\ncompaction to be deferred prematurely and not enter direct reclaim even in\ncases where it should.  To compensate for this, this patch also defers\ncompaction only if sync compaction failed.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Rik van Riel\u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andy Isaacson \u003cadi@hexapodia.org\u003e\nCc: Nai Xia \u003cnai.xia@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0048b0e59c1218d62bb4d014f34bbd7e7c0a214",
      "tree": "f6a69889bcb60b253ab37029616ebe6fa2bd24f9",
      "parents": [
        "3ed28fa1080c73747ce17f2025b28b062fb5aa7f"
      ],
      "author": {
        "name": "Bob Liu",
        "email": "lliubbo@gmail.com",
        "time": "Thu Jan 12 17:19:07 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:07 2012 -0800"
      },
      "message": "page_alloc: break early in check_for_regular_memory()\n\nIf there is a zone below ZONE_NORMAL has present_pages, we can set node\nstate to N_NORMAL_MEMORY, no need to loop to end.\n\nSigned-off-by: Bob Liu \u003clliubbo@gmail.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6290df545814990ca2663baf6e894669132d5f73",
      "tree": "c62472270ba81a7146bed0854be74e2e2338c629",
      "parents": [
        "b95a2f2d486d0d768a92879c023a03757b9c7e58"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Thu Jan 12 17:18:10 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:05 2012 -0800"
      },
      "message": "mm: collect LRU list heads into struct lruvec\n\nHaving a unified structure with a LRU list set for both global zones and\nper-memcg zones allows to keep that code simple which deals with LRU\nlists and does not care about the container itself.\n\nOnce the per-memcg LRU lists directly link struct pages, the isolation\nfunction and all other list manipulations are shared between the memcg\ncase and the global LRU case.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c3993076f842de3754360e5b998d6657a9d30303",
      "tree": "78c1ca3d031483932e2f236706b20064742c0b0c",
      "parents": [
        "43d2b113241d6797b890318767e0af78e313414b"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jan 10 15:08:10 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:44 2012 -0800"
      },
      "message": "mm: page_alloc: generalize order handling in __free_pages_bootmem()\n\n__free_pages_bootmem() used to special-case higher-order frees to save\nindividual page checking with free_pages_bulk().\n\nNowadays, both zero order and non-zero order frees use free_pages(), which\nchecks each individual page anyway, and so there is little point in making\nthe distinction anymore.  The higher-order loop will work just fine for\nzero order pages.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "df0a6daa01fa3856c08f4274d4f21a8092caa480",
      "tree": "089c112e98c87c4326443c21711bf9410c1989ce",
      "parents": [
        "9571a982903bf9dcbca2479fd3e7dafd2211ecf9"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue Jan 10 15:08:02 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:44 2012 -0800"
      },
      "message": "mm: fix off-by-two in __zone_watermark_ok()\n\nCommit 88f5acf88ae6 (\"mm: page allocator: adjust the per-cpu counter\nthreshold when memory is low\") changed the form how free_pages is\ncalculated but it forgot that we used to do free_pages - ((1 \u003c\u003c order) -\n1) so we ended up with off-by-two when calculating free_pages.\n\nReported-by: Wang Sheng-Hui \u003cshhuiw@gmail.com\u003e\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a756cf5908530e8b40bdf569eb48b40139e8d7fd",
      "tree": "ba9df151d5468098c7eae563ce09faea6a539fc0",
      "parents": [
        "ccafa2879fb8d13b8031337a8743eac4189e5d6e"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Tue Jan 10 15:07:49 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:43 2012 -0800"
      },
      "message": "mm: try to distribute dirty pages fairly across zones\n\nThe maximum number of dirty pages that exist in the system at any time is\ndetermined by a number of pages considered dirtyable and a user-configured\npercentage of those, or an absolute number in bytes.\n\nThis number of dirtyable pages is the sum of memory provided by all the\nzones in the system minus their lowmem reserves and high watermarks, so\nthat the system can retain a healthy number of free pages without having\nto reclaim dirty pages.\n\nBut there is a flaw in that we have a zoned page allocator which does not\ncare about the global state but rather the state of individual memory\nzones.  And right now there is nothing that prevents one zone from filling\nup with dirty pages while other zones are spared, which frequently leads\nto situations where kswapd, in order to restore the watermark of free\npages, does indeed have to write pages from that zone\u0027s LRU list.  This\ncan interfere so badly with IO from the flusher threads that major\nfilesystems (btrfs, xfs, ext4) mostly ignore write requests from reclaim\nalready, taking away the VM\u0027s only possibility to keep such a zone\nbalanced, aside from hoping the flushers will soon clean pages from that\nzone.\n\nEnter per-zone dirty limits.  They are to a zone\u0027s dirtyable memory what\nthe global limit is to the global amount of dirtyable memory, and try to\nmake sure that no single zone receives more than its fair share of the\nglobally allowed dirty pages in the first place.  As the number of pages\nconsidered dirtyable excludes the zones\u0027 lowmem reserves and high\nwatermarks, the maximum number of dirty pages in a zone is such that the\nzone can always be balanced without requiring page cleaning.\n\nAs this is a placement decision in the page allocator and pages are\ndirtied only after the allocation, this patch allows allocators to pass\n__GFP_WRITE when they know in advance that the page will be written to and\nbecome dirty soon.  The page allocator will then attempt to allocate from\nthe first zone of the zonelist - which on NUMA is determined by the task\u0027s\nNUMA memory policy - that has not exceeded its dirty limit.\n\nAt first glance, it would appear that the diversion to lower zones can\nincrease pressure on them, but this is not the case.  With a full high\nzone, allocations will be diverted to lower zones eventually, so it is\nmore of a shift in timing of the lower zone allocations.  Workloads that\npreviously could fit their dirty pages completely in the higher zone may\nbe forced to allocate from lower zones, but the amount of pages that\n\"spill over\" are limited themselves by the lower zones\u0027 dirty constraints,\nand thus unlikely to become a problem.\n\nFor now, the problem of unfair dirty page distribution remains for NUMA\nconfigurations where the zones allowed for allocation are in sum not big\nenough to trigger the global dirty limits, wake up the flusher threads and\nremedy the situation.  Because of this, an allocation that could not\nsucceed on any of the considered zones is allowed to ignore the dirty\nlimits before going into direct reclaim or even failing the allocation,\nuntil a future patch changes the global dirty throttling and flusher\nthread activation so that they take individual zone states into account.\n\n\t\t\tTest results\n\n15M DMA + 3246M DMA32 + 504 Normal \u003d 3765M memory\n40% dirty ratio\n16G USB thumb drive\n10 runs of dd if\u003d/dev/zero of\u003ddisk/zeroes bs\u003d32k count\u003d$((10 \u003c\u003c 15))\n\n\t\tseconds\t\t\tnr_vmscan_write\n\t\t        (stddev)\t       min|     median|        max\nxfs\nvanilla:\t 549.747( 3.492)\t     0.000|      0.000|      0.000\npatched:\t 550.996( 3.802)\t     0.000|      0.000|      0.000\n\nfuse-ntfs\nvanilla:\t1183.094(53.178)\t 54349.000|  59341.000|  65163.000\npatched:\t 558.049(17.914)\t     0.000|      0.000|     43.000\n\nbtrfs\nvanilla:\t 573.679(14.015)\t156657.000| 460178.000| 606926.000\npatched:\t 563.365(11.368)\t     0.000|      0.000|   1362.000\n\next4\nvanilla:\t 561.197(15.782)\t     0.000|2725438.000|4143837.000\npatched:\t 568.806(17.496)\t     0.000|      0.000|      0.000\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nTested-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ab8fabd46f811d5153d8a0cd2fac9a0d41fb593d",
      "tree": "0a6f7dcca59d22abe07973e3fafc41719ff3ad9d",
      "parents": [
        "25bd91bd27820d5971258cecd1c0e64b0e485144"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Tue Jan 10 15:07:42 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:43 2012 -0800"
      },
      "message": "mm: exclude reserved pages from dirtyable memory\n\nPer-zone dirty limits try to distribute page cache pages allocated for\nwriting across zones in proportion to the individual zone sizes, to reduce\nthe likelihood of reclaim having to write back individual pages from the\nLRU lists in order to make progress.\n\nThis patch:\n\nThe amount of dirtyable pages should not include the full number of free\npages: there is a number of reserved pages that the page allocator and\nkswapd always try to keep free.\n\nThe closer (reclaimable pages - dirty pages) is to the number of reserved\npages, the more likely it becomes for reclaim to run into dirty pages:\n\n       +----------+ ---\n       |   anon   |  |\n       +----------+  |\n       |          |  |\n       |          |  -- dirty limit new    -- flusher new\n       |   file   |  |                     |\n       |          |  |                     |\n       |          |  -- dirty limit old    -- flusher old\n       |          |                        |\n       +----------+                       --- reclaim\n       | reserved |\n       +----------+\n       |  kernel  |\n       +----------+\n\nThis patch introduces a per-zone dirty reserve that takes both the lowmem\nreserve as well as the high watermark of the zone into account, and a\nglobal sum of those per-zone values that is subtracted from the global\namount of dirtyable pages.  The lowmem reserve is unavailable to page\ncache allocations and kswapd tries to keep the high watermark free.  We\ndon\u0027t want to end up in a situation where reclaim has to clean pages in\norder to balance zones.\n\nNot treating reserved pages as dirtyable on a global level is only a\nconceptual fix.  In reality, dirty pages are not distributed equally\nacross zones and reclaim runs into dirty pages on a regular basis.\n\nBut it is important to get this right before tackling the problem on a\nper-zone level, where the distance between reclaim and the dirty pages is\nmostly much smaller in absolute numbers.\n\n[akpm@linux-foundation.org: fix highmem build]\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c0a32fc5a2e470d0b02597b23ad79a317735253e",
      "tree": "2d164edae0062918ca2088772c00b0615781353b",
      "parents": [
        "1399ff86f2a2bbacbbe68fa00c5f8c752b344723"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Tue Jan 10 15:07:28 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:42 2012 -0800"
      },
      "message": "mm: more intensive memory corruption debugging\n\nWith CONFIG_DEBUG_PAGEALLOC configured, the CPU will generate an exception\non access (read,write) to an unallocated page, which permits us to catch\ncode which corrupts memory.  However the kernel is trying to maximise\nmemory usage, hence there are usually few free pages in the system and\nbuggy code usually corrupts some crucial data.\n\nThis patch changes the buddy allocator to keep more free/protected pages\nand to interlace free/protected and allocated pages to increase the\nprobability of catching corruption.\n\nWhen the kernel is compiled with CONFIG_DEBUG_PAGEALLOC,\ndebug_guardpage_minorder defines the minimum order used by the page\nallocator to grant a request.  The requested size will be returned with\nthe remaining pages used as guard pages.\n\nThe default value of debug_guardpage_minorder is zero: no change from\ncurrent behaviour.\n\n[akpm@linux-foundation.org: tweak documentation, s/flg/flag/]\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f90ac3982a78d36f894824636beeef13361d7c59",
      "tree": "64bbe3b415bdfc151dc44f6b4c216c65351eb53c",
      "parents": [
        "938929f14cb595f43cd1a4e63e22d36cab1e4a1f"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jan 10 15:07:15 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:42 2012 -0800"
      },
      "message": "mm: avoid livelock on !__GFP_FS allocations\n\nColin Cross reported;\n\n  Under the following conditions, __alloc_pages_slowpath can loop forever:\n  gfp_mask \u0026 __GFP_WAIT is true\n  gfp_mask \u0026 __GFP_FS is false\n  reclaim and compaction make no progress\n  order \u003c\u003d PAGE_ALLOC_COSTLY_ORDER\n\n  These conditions happen very often during suspend and resume,\n  when pm_restrict_gfp_mask() effectively converts all GFP_KERNEL\n  allocations into __GFP_WAIT.\n\n  The oom killer is not run because gfp_mask \u0026 __GFP_FS is false,\n  but should_alloc_retry will always return true when order is less\n  than PAGE_ALLOC_COSTLY_ORDER.\n\nIn his fix, he avoided retrying the allocation if reclaim made no progress\nand __GFP_FS was not set.  The problem is that this would result in\nGFP_NOIO allocations failing that previously succeeded which would be very\nunfortunate.\n\nThe big difference between GFP_NOIO and suspend converting GFP_KERNEL to\nbehave like GFP_NOIO is that normally flushers will be cleaning pages and\nkswapd reclaims pages allowing GFP_NOIO to succeed after a short delay.\nThe same does not necessarily apply during suspend as the storage device\nmay be suspended.\n\nThis patch special cases the suspend case to fail the page allocation if\nreclaim cannot make progress and adds some documentation on how\ngfp_allowed_mask is currently used.  Failing allocations like this may\ncause suspend to abort but that is better than a livelock.\n\n[mgorman@suse.de: Rework fix to be suspend specific]\n[rientjes@google.com: Move suspended device check to should_alloc_retry]\nReported-by: Colin Cross \u003cccross@android.com\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "938929f14cb595f43cd1a4e63e22d36cab1e4a1f",
      "tree": "54c23d02494c05d13cc6a6ffb327cc1fb03e72fd",
      "parents": [
        "937a94c9db30a818baa5e2c09dbf4589251355c3"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jan 10 15:07:14 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:42 2012 -0800"
      },
      "message": "mm: reduce the amount of work done when updating min_free_kbytes\n\nWhen min_free_kbytes is updated, some pageblocks are marked\nMIGRATE_RESERVE.  Ordinarily, this work is unnoticable as it happens early\nin boot but on large machines with 1TB of memory, this has been reported\nto delay boot times, probably due to the NUMA distances involved.\n\nThe bulk of the work is due to calling calling pageblock_is_reserved() an\nunnecessary amount of times and accessing far more struct page metadata\nthan is necessary.  This patch significantly reduces the amount of work\ndone by setup_zone_migrate_reserve() improving boot times on 1TB machines.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b413d48aa70605701c0b395b2e350ca15f5d643a",
      "tree": "6aa777c589eedfb9dc498f375d553e561e203506",
      "parents": [
        "da066ad3570b88e7dee82e76a06ee9a7adffcf0d"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue Jan 10 15:07:09 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:41 2012 -0800"
      },
      "message": "mm-tracepoint: rename page-free events\n\nRename mm_page_free_direct into mm_page_free and mm_pagevec_free into\nmm_page_free_batched\n\nSince v2.6.33-5426-gc475dab the kernel triggers mm_page_free_direct for\nall freed pages, not only for directly freed.  So, let\u0027s name it properly.\n For pages freed via page-list we also trigger mm_page_free_batched event.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "da066ad3570b88e7dee82e76a06ee9a7adffcf0d",
      "tree": "0587cac700f316f9d658e350c0ddf4b4331413a5",
      "parents": [
        "cc59850ef940e4ee6a765d28b439b9bafe07cf63"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue Jan 10 15:07:06 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:41 2012 -0800"
      },
      "message": "mm: remove unused pagevec_free\n\nIt not exported and now nobody uses it.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cc59850ef940e4ee6a765d28b439b9bafe07cf63",
      "tree": "03b666986e9cc7dfc113a14721c44aa9e149f871",
      "parents": [
        "c909e99364c8b6ca07864d752950b6b4ecf6bef4"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue Jan 10 15:07:04 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:41 2012 -0800"
      },
      "message": "mm: add free_hot_cold_page_list() helper\n\nThis patch adds helper free_hot_cold_page_list() to free list of 0-order\npages.  It frees pages directly from list without temporary page-vector.\nIt also calls trace_mm_pagevec_free() to simulate pagevec_free()\nbehaviour.\n\nbloat-o-meter:\n\nadd/remove: 1/1 grow/shrink: 1/3 up/down: 267/-295 (-28)\nfunction                                     old     new   delta\nfree_hot_cold_page_list                        -     264    +264\nget_page_from_freelist                      2129    2132      +3\n__pagevec_free                               243     239      -4\nsplit_free_page                              380     373      -7\nrelease_pages                                606     510     -96\nfree_page_list                               188       -    -188\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "98793265b429a3f0b3f1750e74d67cd4d740d162",
      "tree": "b0bd717673f0c21845cf053f3fb6b75d42530af5",
      "parents": [
        "b4a133da2eaccb844a7beaef16ffd9c76a0d21d3",
        "bd1b2a555952d959f47169056fca05acf7eff81f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:21:22 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:21:22 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (53 commits)\n  Kconfig: acpi: Fix typo in comment.\n  misc latin1 to utf8 conversions\n  devres: Fix a typo in devm_kfree comment\n  btrfs: free-space-cache.c: remove extra semicolon.\n  fat: Spelling s/obsolate/obsolete/g\n  SCSI, pmcraid: Fix spelling error in a pmcraid_err() call\n  tools/power turbostat: update fields in manpage\n  mac80211: drop spelling fix\n  types.h: fix comment spelling for \u0027architectures\u0027\n  typo fixes: aera -\u003e area, exntension -\u003e extension\n  devices.txt: Fix typo of \u0027VMware\u0027.\n  sis900: Fix enum typo \u0027sis900_rx_bufer_status\u0027\n  decompress_bunzip2: remove invalid vi modeline\n  treewide: Fix comment and string typo \u0027bufer\u0027\n  hyper-v: Update MAINTAINERS\n  treewide: Fix typos in various parts of the kernel, and fix some comments.\n  clockevents: drop unknown Kconfig symbol GENERIC_CLOCKEVENTS_MIGR\n  gpio: Kconfig: drop unknown symbol \u0027CS5535_GPIO\u0027\n  leds: Kconfig: Fix typo \u0027D2NET_V2\u0027\n  sound: Kconfig: drop unknown symbol ARCH_CLPS7500\n  ...\n\nFix up trivial conflicts in arch/powerpc/platforms/40x/Kconfig (some new\nkconfig additions, close to removed commented-out old ones)\n"
    },
    {
      "commit": "972b2c719990f91eb3b2310d44ef8a2d38955a14",
      "tree": "b25a250ec5bec4b7b6355d214642d8b57c5cab32",
      "parents": [
        "02550d61f49266930e674286379d3601006b2893",
        "c3aa077648e147783a7a53b409578234647db853"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 12:19:57 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 12:19:57 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\n* \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (165 commits)\n  reiserfs: Properly display mount options in /proc/mounts\n  vfs: prevent remount read-only if pending removes\n  vfs: count unlinked inodes\n  vfs: protect remounting superblock read-only\n  vfs: keep list of mounts for each superblock\n  vfs: switch -\u003eshow_options() to struct dentry *\n  vfs: switch -\u003eshow_path() to struct dentry *\n  vfs: switch -\u003eshow_devname() to struct dentry *\n  vfs: switch -\u003eshow_stats to struct dentry *\n  switch security_path_chmod() to struct path *\n  vfs: prefer -\u003edentry-\u003ed_sb to -\u003emnt-\u003emnt_sb\n  vfs: trim includes a bit\n  switch mnt_namespace -\u003eroot to struct mount\n  vfs: take /proc/*/mounts and friends to fs/proc_namespace.c\n  vfs: opencode mntget() mnt_set_mountpoint()\n  vfs: spread struct mount - remaining argument of next_mnt()\n  vfs: move fsnotify junk to struct mount\n  vfs: move mnt_devname\n  vfs: move mnt_list to struct mount\n  vfs: switch pnode.h macros to struct mount *\n  ...\n"
    },
    {
      "commit": "f4ae40a6a50a98ac23d4b285f739455e926a473e",
      "tree": "c84d7393700bd85e5285a194f8c22d4d00e36b28",
      "parents": [
        "48176a973d65572e61d0ce95495e5072887e6fb6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 24 04:33:43 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:56 2012 -0500"
      },
      "message": "switch debugfs to umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "45aa0663cc408617b79a2b53f0a5f50e94688a48",
      "tree": "0a53931c317c3c72a3555bd2fbb70a881ee870f2",
      "parents": [
        "511585a28e5b5fd1cac61e601e42efc4c5dd64b5",
        "7bd0b0f0da3b1ec11cbcc798eb0ef747a1184077"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 20 12:14:26 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 20 12:14:26 2011 +0100"
      },
      "message": "Merge branch \u0027memblock-kill-early_node_map\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/memblock\n"
    },
    {
      "commit": "d021563888312018ca65681096f62e36c20e63cc",
      "tree": "cf403dfc0fd5a3775735815031add2f97b6efd40",
      "parents": [
        "09761333ed47e899cc1482c13090b95f3f711971"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Thu Dec 08 14:34:27 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 09 07:50:28 2011 -0800"
      },
      "message": "mm: Ensure that pfn_valid() is called once per pageblock when reserving pageblocks\n\nsetup_zone_migrate_reserve() expects that zone-\u003estart_pfn starts at\npageblock_nr_pages aligned pfn otherwise we could access beyond an\nexisting memblock resulting in the following panic if\nCONFIG_HOLES_IN_ZONE is not configured and we do not check pfn_valid:\n\n  IP: [\u003cc02d331d\u003e] setup_zone_migrate_reserve+0xcd/0x180\n  *pdpt \u003d 0000000000000000 *pde \u003d f000ff53f000ff53\n  Oops: 0000 [#1] SMP\n  Pid: 1, comm: swapper Not tainted 3.0.7-0.7-pae #1 VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform\n  EIP: 0060:[\u003cc02d331d\u003e] EFLAGS: 00010006 CPU: 0\n  EIP is at setup_zone_migrate_reserve+0xcd/0x180\n  EAX: 000c0000 EBX: f5801fc0 ECX: 000c0000 EDX: 00000000\n  ESI: 000c01fe EDI: 000c01fe EBP: 00140000 ESP: f2475f58\n  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068\n  Process swapper (pid: 1, ti\u003df2474000 task\u003df2472cd0 task.ti\u003df2474000)\n  Call Trace:\n  [\u003cc02d389c\u003e] __setup_per_zone_wmarks+0xec/0x160\n  [\u003cc02d3a1f\u003e] setup_per_zone_wmarks+0xf/0x20\n  [\u003cc08a771c\u003e] init_per_zone_wmark_min+0x27/0x86\n  [\u003cc020111b\u003e] do_one_initcall+0x2b/0x160\n  [\u003cc086639d\u003e] kernel_init+0xbe/0x157\n  [\u003cc05cae26\u003e] kernel_thread_helper+0x6/0xd\n  Code: a5 39 f5 89 f7 0f 46 fd 39 cf 76 40 8b 03 f6 c4 08 74 32 eb 91 90 89 c8 c1 e8 0e 0f be 80 80 2f 86 c0 8b 14 85 60 2f 86 c0 89 c8 \u003c2b\u003e 82 b4 12 00 00 c1 e0 05 03 82 ac 12 00 00 8b 00 f6 c4 08 0f\n  EIP: [\u003cc02d331d\u003e] setup_zone_migrate_reserve+0xcd/0x180 SS:ESP 0068:f2475f58\n  CR2: 00000000000012b4\n\nWe crashed in pageblock_is_reserved() when accessing pfn 0xc0000 because\nhighstart_pfn \u003d 0x36ffe.\n\nThe issue was introduced in 3.0-rc1 by 6d3163ce (\"mm: check if any page\nin a pageblock is reserved before marking it MIGRATE_RESERVE\").\n\nMake sure that start_pfn is always aligned to pageblock_nr_pages to\nensure that pfn_valid s always called at the start of each pageblock.\nArchitectures with holes in pageblocks will be correctly handled by\npfn_valid_within in pageblock_is_reserved.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nTested-by: Dang Bo \u003cbdang@vmware.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Arve Hjnnevg \u003carve@android.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\t[3.0+]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "58a84aa92723d1ac3e1cc4e3b0ff49291663f7e1",
      "tree": "bdfad6b0f38590318da0dee67ff84718b60a8ca5",
      "parents": [
        "b6999b19120931ede364fa3b685e698a61fed31d"
      ],
      "author": {
        "name": "Youquan Song",
        "email": "youquan.song@intel.com",
        "time": "Thu Dec 08 14:34:18 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 09 07:50:28 2011 -0800"
      },
      "message": "thp: set compound tail page _count to zero\n\nCommit 70b50f94f1644 (\"mm: thp: tail page refcounting fix\") keeps all\npage_tail-\u003e_count zero at all times.  But the current kernel does not\nset page_tail-\u003e_count to zero if a 1GB page is utilized.  So when an\nIOMMU 1GB page is used by KVM, it wil result in a kernel oops because a\ntail page\u0027s _count does not equal zero.\n\n  kernel BUG at include/linux/mm.h:386!\n  invalid opcode: 0000 [#1] SMP\n  Call Trace:\n    gup_pud_range+0xb8/0x19d\n    get_user_pages_fast+0xcb/0x192\n    ? trace_hardirqs_off+0xd/0xf\n    hva_to_pfn+0x119/0x2f2\n    gfn_to_pfn_memslot+0x2c/0x2e\n    kvm_iommu_map_pages+0xfd/0x1c1\n    kvm_iommu_map_memslots+0x7c/0xbd\n    kvm_iommu_map_guest+0xaa/0xbf\n    kvm_vm_ioctl_assigned_device+0x2ef/0xa47\n    kvm_vm_ioctl+0x36c/0x3a2\n    do_vfs_ioctl+0x49e/0x4e4\n    sys_ioctl+0x5a/0x7c\n    system_call_fastpath+0x16/0x1b\n  RIP  gup_huge_pud+0xf2/0x159\n\nSigned-off-by: Youquan Song \u003cyouquan.song@intel.com\u003e\nReviewed-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0ee332c1451869963626bf9cac88f165a90990e1",
      "tree": "a40e6c9c6cfe39ecbca37a08019be3c9e56a4a9b",
      "parents": [
        "a2bf79e7dcc97b4e9654f273453f9264f49e41ff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Dec 08 10:22:09 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Dec 08 10:22:09 2011 -0800"
      },
      "message": "memblock: Kill early_node_map[]\n\nNow all ARCH_POPULATES_NODE_MAP archs select HAVE_MEBLOCK_NODE_MAP -\nthere\u0027s no user of early_node_map[] left.  Kill early_node_map[] and\nreplace ARCH_POPULATES_NODE_MAP with HAVE_MEMBLOCK_NODE_MAP.  Also,\nrelocate for_each_mem_pfn_range() and helper from mm.h to memblock.h\nas page_alloc.c would no longer host an alternative implementation.\n\nThis change is ultimately one to one mapping and shouldn\u0027t cause any\nobservable difference; however, after the recent changes, there are\nsome functions which now would fit memblock.c better than page_alloc.c\nand dependency on HAVE_MEMBLOCK_NODE_MAP instead of HAVE_MEMBLOCK\ndoesn\u0027t make much sense on some of them.  Further cleanups for\nfunctions inside HAVE_MEMBLOCK_NODE_MAP in mm.h would be nice.\n\n-v2: Fix compile bug introduced by mis-spelling\n CONFIG_HAVE_MEMBLOCK_NODE_MAP to CONFIG_MEMBLOCK_HAVE_NODE_MAP in\n mmzone.h.  Reported by Stephen Rothwell.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Chen Liqin \u003cliqin.chen@sunplusct.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "d4bbf7e7759afc172e2bfbc5c416324590049cdd",
      "tree": "7eab5ee5481cd3dcf1162329fec827177640018a",
      "parents": [
        "a150439c4a97db379f0ed6faa46fbbb6e7bf3cb2",
        "401d0069cb344f401bc9d264c31db55876ff78c0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 28 09:46:22 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 28 09:46:22 2011 -0800"
      },
      "message": "Merge branch \u0027master\u0027 into x86/memblock\n\nConflicts \u0026 resolutions:\n\n* arch/x86/xen/setup.c\n\n\tdc91c728fd \"xen: allow extra memory to be in multiple regions\"\n\t24aa07882b \"memblock, x86: Replace memblock_x86_reserve/free...\"\n\n\tconflicted on xen_add_extra_mem() updates.  The resolution is\n\ttrivial as the latter just want to replace\n\tmemblock_x86_reserve_range() with memblock_reserve().\n\n* drivers/pci/intel-iommu.c\n\n\t166e9278a3f \"x86/ia64: intel-iommu: move to drivers/iommu/\"\n\t5dfe8660a3d \"bootmem: Replace work_with_active_regions() with...\"\n\n\tconflicted as the former moved the file under drivers/iommu/.\n\tResolved by applying the chnages from the latter on the moved\n\tfile.\n\n* mm/Kconfig\n\n\t6661672053a \"memblock: add NO_BOOTMEM config symbol\"\n\tc378ddd53f9 \"memblock, x86: Make ARCH_DISCARD_MEMBLOCK a config option\"\n\n\tconflicted trivially.  Both added config options.  Just\n\tletting both add their own options resolves the conflict.\n\n* mm/memblock.c\n\n\td1f0ece6cdc \"mm/memblock.c: small function definition fixes\"\n\ted7b56a799c \"memblock: Remove memblock_memory_can_coalesce()\"\n\n\tconfliected.  The former updates function removed by the\n\tlatter.  Resolution is trivial.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "6416b9fa43537c01098f8faa5bcbebb4a275297d",
      "tree": "c970bac752f8ea0e0faa4273b459b2ae67d05c4d",
      "parents": [
        "7433f2b78cb35cacf1799faa3b068255a6ef5f1f"
      ],
      "author": {
        "name": "Wang Sheng-Hui",
        "email": "shhuiw@gmail.com",
        "time": "Thu Nov 17 10:53:50 2011 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Nov 17 10:53:50 2011 +0100"
      },
      "message": "mm: cleanup the comment for head/tail pages of compound pages in mm/page_alloc.c\n\nOnly tail pages point at the head page using their -\u003efirst_page fields.\n\nSigned-off-by: Wang Sheng-Hui \u003cshhuiw@gmail.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "3ee9a4f086716d792219c021e8509f91165a4128",
      "tree": "f85162b8e024624f07909eaba4e85b89df924ebb",
      "parents": [
        "06d5e032adcbc7d50c606a1396f00e2474e4213e"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Oct 31 17:08:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:48 2011 -0700"
      },
      "message": "mm: neaten warn_alloc_failed\n\nAdd __attribute__((format (printf...) to the function to validate format\nand arguments.  Use vsprintf extension %pV to avoid any possible message\ninterleaving.  Coalesce format string.  Convert printks/pr_warning to\npr_warn.\n\n[akpm@linux-foundation.org: use the __printf() macro]\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f31888c104687078f8d88c2f11eca1080c88464",
      "tree": "453bcfffe1955f6087156916eb102af1575206ee",
      "parents": [
        "f5fc870da2f8798edb5481cd2137a3b2d5bd1b19"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Mon Oct 31 17:07:24 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:45 2011 -0700"
      },
      "message": "mm: output a list of loaded modules when we hit bad_page()\n\nWhen we get a bad_page bug report, it\u0027s useful to see what modules the\nuser had loaded.\n\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dd48c085c1cdf9446f92826f1fd451167fb6c2fd",
      "tree": "d62870378cc08af36ea7a41531436bdebddec232",
      "parents": [
        "f48d1915b86f06a943087e5f9b29542a1ef4cd4d"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Aug 03 16:21:01 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 03 14:25:20 2011 -1000"
      },
      "message": "fault-injection: add ability to export fault_attr in arbitrary directory\n\ninit_fault_attr_dentries() is used to export fault_attr via debugfs.\nBut it can only export it in debugfs root directory.\n\nPer Forlin is working on mmc_fail_request which adds support to inject\ndata errors after a completed host transfer in MMC subsystem.\n\nThe fault_attr for mmc_fail_request should be defined per mmc host and\nexport it in debugfs directory per mmc host like\n/sys/kernel/debug/mmc0/mmc_fail_request.\n\ninit_fault_attr_dentries() doesn\u0027t help for mmc_fail_request.  So this\nintroduces fault_create_debugfs_attr() which is able to create a\ndirectory in the arbitrary directory and replace\ninit_fault_attr_dentries().\n\n[akpm@linux-foundation.org: extraneous semicolon, per Randy]\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nTested-by: Per Forlin \u003cper.forlin@linaro.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b2588c4b4c3c075e9b45d61065d86c60de2b6441",
      "tree": "66942e8a252101aaa7e1f0a2ee2c3d8288dda659",
      "parents": [
        "810f09b87b75d7cc3906ffffe4311003f37caa2a"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Tue Jul 26 16:09:03 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:46 2011 -0700"
      },
      "message": "fail_page_alloc: simplify debugfs initialization\n\nNow cleanup_fault_attr_dentries() recursively removes a directory, So we\ncan simplify the error handling in the initialization code and no need\nto hold dentry structs for each debugfs file.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f5ddcc8d3eaccd5e169fda738530f937509645e",
      "tree": "14f5581871040f98bbdab864314e1afc00a19a4c",
      "parents": [
        "8307fc257cf3931d87e172bd8663e80c3d1e56a3"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Tue Jul 26 16:09:02 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:46 2011 -0700"
      },
      "message": "fault-injection: use debugfs_remove_recursive\n\nUse debugfs_remove_recursive() to simplify initialization and\ndeinitialization of fault injection debugfs files.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "76d3fbf8fbf6cc78ceb63549e0e0c5bc8a88f838",
      "tree": "cebd9474333db6965fe6af7cc3f652d3091b658b",
      "parents": [
        "cd38b115d5ad79b0100ac6daa103c4fe2c50a913"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Jul 25 17:12:30 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 20:57:10 2011 -0700"
      },
      "message": "mm: page allocator: reconsider zones for allocation after direct reclaim\n\nWith zone_reclaim_mode enabled, it\u0027s possible for zones to be considered\nfull in the zonelist_cache so they are skipped in the future.  If the\nprocess enters direct reclaim, the ZLC may still consider zones to be full\neven after reclaiming pages.  Reconsider all zones for allocation if\ndirect reclaim returns successfully.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cd38b115d5ad79b0100ac6daa103c4fe2c50a913",
      "tree": "ffa8b05c42d0c53ffdd1dee6ce2570bba1d5db2f",
      "parents": [
        "1d65f86db14806cf7b1218c7b4ecb8b4db5af27d"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Jul 25 17:12:29 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 20:57:10 2011 -0700"
      },
      "message": "mm: page allocator: initialise ZLC for first zone eligible for zone_reclaim\n\nThere have been a small number of complaints about significant stalls\nwhile copying large amounts of data on NUMA machines reported on a\ndistribution bugzilla.  In these cases, zone_reclaim was enabled by\ndefault due to large NUMA distances.  In general, the complaints have not\nbeen about the workload itself unless it was a file server (in which case\nthe recommendation was disable zone_reclaim).\n\nThe stalls are mostly due to significant amounts of time spent scanning\nthe preferred zone for pages to free.  After a failure, it might fallback\nto another node (as zonelists are often node-ordered rather than\nzone-ordered) but stall quickly again when the next allocation attempt\noccurs.  In bad cases, each page allocated results in a full scan of the\npreferred zone.\n\nPatch 1 checks the preferred zone for recent allocation failure\n        which is particularly important if zone_reclaim has failed\n        recently.  This avoids rescanning the zone in the near future and\n        instead falling back to another node.  This may hurt node locality\n        in some cases but a failure to zone_reclaim is more expensive than\n        a remote access.\n\nPatch 2 clears the zlc information after direct reclaim.\n        Otherwise, zone_reclaim can mark zones full, direct reclaim can\n        reclaim enough pages but the zone is still not considered for\n        allocation.\n\nThis was tested on a 24-thread 2-node x86_64 machine.  The tests were\nfocused on large amounts of IO.  All tests were bound to the CPUs on\nnode-0 to avoid disturbances due to processes being scheduled on different\nnodes.  The kernels tested are\n\n3.0-rc6-vanilla\t\tVanilla 3.0-rc6\nzlcfirst\t\tPatch 1 applied\nzlcreconsider\t\tPatches 1+2 applied\n\nFS-Mark\n./fs_mark  -d  /tmp/fsmark-10813  -D  100  -N  5000  -n  208  -L  35  -t  24  -S0  -s  524288\n                fsmark-3.0-rc6       3.0-rc6       \t\t3.0-rc6\n                   vanilla\t\t\t zlcfirs \tzlcreconsider\nFiles/s  min          54.90 ( 0.00%)       49.80 (-10.24%)       49.10 (-11.81%)\nFiles/s  mean        100.11 ( 0.00%)      135.17 (25.94%)      146.93 (31.87%)\nFiles/s  stddev       57.51 ( 0.00%)      138.97 (58.62%)      158.69 (63.76%)\nFiles/s  max         361.10 ( 0.00%)      834.40 (56.72%)      802.40 (55.00%)\nOverhead min       76704.00 ( 0.00%)    76501.00 ( 0.27%)    77784.00 (-1.39%)\nOverhead mean    1485356.51 ( 0.00%)  1035797.83 (43.40%)  1594680.26 (-6.86%)\nOverhead stddev  1848122.53 ( 0.00%)   881489.88 (109.66%)  1772354.90 ( 4.27%)\nOverhead max     7989060.00 ( 0.00%)  3369118.00 (137.13%) 10135324.00 (-21.18%)\nMMTests Statistics: duration\nUser/Sys Time Running Test (seconds)        501.49    493.91    499.93\nTotal Elapsed Time (seconds)               2451.57   2257.48   2215.92\n\nMMTests Statistics: vmstat\nPage Ins                                       46268       63840       66008\nPage Outs                                   90821596    90671128    88043732\nSwap Ins                                           0           0           0\nSwap Outs                                          0           0           0\nDirect pages scanned                        13091697     8966863     8971790\nKswapd pages scanned                               0     1830011     1831116\nKswapd pages reclaimed                             0     1829068     1829930\nDirect pages reclaimed                      13037777     8956828     8648314\nKswapd efficiency                               100%         99%         99%\nKswapd velocity                                0.000     810.643     826.346\nDirect efficiency                                99%         99%         96%\nDirect velocity                             5340.128    3972.068    4048.788\nPercentage direct scans                         100%         83%         83%\nPage writes by reclaim                             0           3           0\nSlabs scanned                                 796672      720640      720256\nDirect inode steals                          7422667     7160012     7088638\nKswapd inode steals                                0     1736840     2021238\n\nTest completes far faster with a large increase in the number of files\ncreated per second.  Standard deviation is high as a small number of\niterations were much higher than the mean.  The number of pages scanned by\nzone_reclaim is reduced and kswapd is used for more work.\n\nLARGE DD\n               \t\t3.0-rc6       3.0-rc6       3.0-rc6\n                   \tvanilla     zlcfirst     zlcreconsider\ndownload tar           59 ( 0.00%)   59 ( 0.00%)   55 ( 7.27%)\ndd source files       527 ( 0.00%)  296 (78.04%)  320 (64.69%)\ndelete source          36 ( 0.00%)   19 (89.47%)   20 (80.00%)\nMMTests Statistics: duration\nUser/Sys Time Running Test (seconds)        125.03    118.98    122.01\nTotal Elapsed Time (seconds)                624.56    375.02    398.06\n\nMMTests Statistics: vmstat\nPage Ins                                     3594216      439368      407032\nPage Outs                                   23380832    23380488    23377444\nSwap Ins                                           0           0           0\nSwap Outs                                          0         436         287\nDirect pages scanned                        17482342    69315973    82864918\nKswapd pages scanned                               0      519123      575425\nKswapd pages reclaimed                             0      466501      522487\nDirect pages reclaimed                       5858054     2732949     2712547\nKswapd efficiency                               100%         89%         90%\nKswapd velocity                                0.000    1384.254    1445.574\nDirect efficiency                                33%          3%          3%\nDirect velocity                            27991.453  184832.737  208171.929\nPercentage direct scans                         100%         99%         99%\nPage writes by reclaim                             0        5082       13917\nSlabs scanned                                  17280       29952       35328\nDirect inode steals                           115257     1431122      332201\nKswapd inode steals                                0           0      979532\n\nThis test downloads a large tarfile and copies it with dd a number of\ntimes - similar to the most recent bug report I\u0027ve dealt with.  Time to\ncompletion is reduced.  The number of pages scanned directly is still\ndisturbingly high with a low efficiency but this is likely due to the\nnumber of dirty pages encountered.  The figures could probably be improved\nwith more work around how kswapd is used and how dirty pages are handled\nbut that is separate work and this result is significant on its own.\n\nStreaming Mapped Writer\nMMTests Statistics: duration\nUser/Sys Time Running Test (seconds)        124.47    111.67    112.64\nTotal Elapsed Time (seconds)               2138.14   1816.30   1867.56\n\nMMTests Statistics: vmstat\nPage Ins                                       90760       89124       89516\nPage Outs                                  121028340   120199524   120736696\nSwap Ins                                           0          86          55\nSwap Outs                                          0           0           0\nDirect pages scanned                       114989363    96461439    96330619\nKswapd pages scanned                        56430948    56965763    57075875\nKswapd pages reclaimed                      27743219    27752044    27766606\nDirect pages reclaimed                         49777       46884       36655\nKswapd efficiency                                49%         48%         48%\nKswapd velocity                            26392.541   31363.631   30561.736\nDirect efficiency                                 0%          0%          0%\nDirect velocity                            53780.091   53108.759   51581.004\nPercentage direct scans                          67%         62%         62%\nPage writes by reclaim                           385         122        1513\nSlabs scanned                                  43008       39040       42112\nDirect inode steals                                0          10           8\nKswapd inode steals                              733         534         477\n\nThis test just creates a large file mapping and writes to it linearly.\nTime to completion is again reduced.\n\nThe gains are mostly down to two things.  In many cases, there is less\nscanning as zone_reclaim simply gives up faster due to recent failures.\nThe second reason is that memory is used more efficiently.  Instead of\nscanning the preferred zone every time, the allocator falls back to\nanother zone and uses it instead improving overall memory utilisation.\n\nThis patch: initialise ZLC for first zone eligible for zone_reclaim.\n\nThe zonelist cache (ZLC) is used among other things to record if\nzone_reclaim() failed for a particular zone recently.  The intention is to\navoid a high cost scanning extremely long zonelists or scanning within the\nzone uselessly.\n\nCurrently the zonelist cache is setup only after the first zone has been\nconsidered and zone_reclaim() has been called.  The objective was to avoid\na costly setup but zone_reclaim is itself quite expensive.  If it is\nfailing regularly such as the first eligible zone having mostly mapped\npages, the cost in scanning and allocation stalls is far higher than the\nZLC initialisation step.\n\nThis patch initialises ZLC before the first eligible zone calls\nzone_reclaim().  Once initialised, it is checked whether the zone failed\nzone_reclaim recently.  If it has, the zone is skipped.  As the first zone\nis now being checked, additional care has to be taken about zones marked\nfull.  A zone can be marked \"full\" because it should not have enough\nunmapped pages for zone_reclaim but this is excessive as direct reclaim or\nkswapd may succeed where zone_reclaim fails.  Only mark zones \"full\" after\nzone_reclaim fails if it failed to reclaim enough pages after scanning.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7c0caeb866b0f648d91bb75b8bc6f86af95bb033",
      "tree": "042804fe716310a4de4effbbaa4461237e2b5d4a",
      "parents": [
        "67e24bcb725cabd15ef577bf301275d03d6086d7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 14 11:43:42 2011 +0200"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Thu Jul 14 11:47:43 2011 -0700"
      },
      "message": "memblock: Add optional region-\u003enid\n\nFrom 83103b92f3234ec830852bbc5c45911bd6cbdb20 Mon Sep 17 00:00:00 2001\nFrom: Tejun Heo \u003ctj@kernel.org\u003e\nDate: Thu, 14 Jul 2011 11:22:16 +0200\n\nAdd optional region-\u003enid which can be enabled by arch using\nCONFIG_HAVE_MEMBLOCK_NODE_MAP.  When enabled, memblock also carries\nNUMA node information and replaces early_node_map[].\n\nNewly added memblocks have MAX_NUMNODES as nid.  Arch can then call\nmemblock_set_node() to set node information.  memblock takes care of\nmerging and node affine allocations w.r.t. node information.\n\nWhen MEMBLOCK_NODE_MAP is enabled, early_node_map[], related data\nstructures and functions to manipulate and iterate it are disabled.\nmemblock version of __next_mem_pfn_range() is provided such that\nfor_each_mem_pfn_range() behaves the same and its users don\u0027t have to\nbe updated.\n\n-v2: Yinghai spotted section mismatch caused by missing\n     __init_memblock in memblock_set_node().  Fixed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/20110714094342.GF3455@htj.dyndns.org\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "eb40c4c27f1722f058e4713ccfedebac577d5190",
      "tree": "b471a4451c7cab125b3aafced4c77c7958fd711d",
      "parents": [
        "e64980405cc6aa74ef178d8d9aa4018c867ceed1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 12 10:46:35 2011 +0200"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Thu Jul 14 11:45:35 2011 -0700"
      },
      "message": "memblock, x86: Replace memblock_x86_find_in_range_node() with generic memblock calls\n\nWith the previous changes, generic NUMA aware memblock API has feature\nparity with memblock_x86_find_in_range_node().  There currently are\ntwo users - x86 setup_node_data() and __alloc_memory_core_early() in\nnobootmem.c.\n\nThis patch converts the former to use memblock_alloc_nid() and the\nlatter memblock_find_range_in_node(), and kills\nmemblock_x86_find_in_range_node() and related functions including\nfind_memory_early_core_early() in page_alloc.c.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/1310460395-30913-9-git-send-email-tj@kernel.org\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "c13291a536b835b2ab278ab201f2cb1ce22f2785",
      "tree": "6bb3a2fd47e22d75308314b14f3a0f0a4d338141",
      "parents": [
        "96e907d1360240d1958fe8ce3a3ac640733330d4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 12 10:46:30 2011 +0200"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Thu Jul 14 11:45:31 2011 -0700"
      },
      "message": "bootmem: Use for_each_mem_pfn_range() in page_alloc.c\n\nThe previous patch added for_each_mem_pfn_range() which is more\nversatile than for_each_active_range_index_in_nid().  This patch\nreplaces for_each_active_range_index_in_nid() and open coded\nearly_node_map[] walks with for_each_mem_pfn_range().\n\nAll conversions in this patch are straight-forward and shouldn\u0027t cause\nany functional difference.  After the conversions,\nfor_each_active_range_index_in_nid() doesn\u0027t have any user left and is\nremoved.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/1310460395-30913-4-git-send-email-tj@kernel.org\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "96e907d1360240d1958fe8ce3a3ac640733330d4",
      "tree": "ac1fec297f9b6d620a76dc0cd0476b74bc628a95",
      "parents": [
        "5dfe8660a3d7f1ee1265c3536433ee53da3f98a3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 12 10:46:29 2011 +0200"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Thu Jul 14 11:45:30 2011 -0700"
      },
      "message": "bootmem: Reimplement __absent_pages_in_range() using for_each_mem_pfn_range()\n\n__absent_pages_in_range() was needlessly complex.  Reimplement it\nusing for_each_mem_pfn_range().\n\nAlso, update zone_absent_pages_in_node() such that it doesn\u0027t call\n__absent_pages_in_range() with @zone_start_pfn which is larger than\n@zone_end_pfn.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/1310460395-30913-3-git-send-email-tj@kernel.org\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "5dfe8660a3d7f1ee1265c3536433ee53da3f98a3",
      "tree": "c58232b88741ba1d8cce417b62f3f658369ad9c2",
      "parents": [
        "fc769a8e70a3348d5de49e5f69f6aff810157360"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 14 09:46:10 2011 +0200"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Thu Jul 14 11:45:29 2011 -0700"
      },
      "message": "bootmem: Replace work_with_active_regions() with for_each_mem_pfn_range()\n\nCallback based iteration is cumbersome and much less useful than\nfor_each_*() iterator.  This patch implements for_each_mem_pfn_range()\nwhich replaces work_with_active_regions().  All the current users of\nwork_with_active_regions() are converted.\n\nThis simplifies walking over early_node_map and will allow converting\ninternal logics in page_alloc to use iterator instead of walking\nearly_node_map directly, which in turn will enable moving node\ninformation to memblock.\n\npowerpc change is only compile tested.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/20110714074610.GD3455@htj.dyndns.org\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "1f5026a7e21e409c2b9dd54f6dfb9446511fb7c5",
      "tree": "bcf0529d5f05ea8b685d6c0fddcb3197c2fab49c",
      "parents": [
        "348968eb151e2569ad0ebe19b2f9c3c25b5c816a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 12 09:58:09 2011 +0200"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Wed Jul 13 16:36:01 2011 -0700"
      },
      "message": "memblock: Kill MEMBLOCK_ERROR\n\n25818f0f28 (memblock: Make MEMBLOCK_ERROR be 0) thankfully made\nMEMBLOCK_ERROR 0 and there already are codes which expect error return\nto be 0.  There\u0027s no point in keeping MEMBLOCK_ERROR around.  End its\nmisery.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/1310457490-3356-6-git-send-email-tj@kernel.org\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "53348f27168534561c0c814843bbf181314374f4",
      "tree": "619f7945ecb15317dd211c68267eb6603295521f",
      "parents": [
        "bf61549a2d8e0326f5d6e4d1718883a7212d725f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 12 09:58:06 2011 +0200"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Wed Jul 13 16:35:56 2011 -0700"
      },
      "message": "bootmem: Fix __free_pages_bootmem() to use @order properly\n\na226f6c899 (FRV: Clean up bootmem allocator\u0027s page freeing algorithm)\nseparated out __free_pages_bootmem() from free_all_bootmem_core().\n__free_pages_bootmem() takes @order argument but it assumes @order is\neither 0 or ilog2(BITS_PER_LONG).  Note that all the current users\nmatch that assumption and this doesn\u0027t cause actual problems.\n\nFix it by using 1 \u003c\u003c order instead of BITS_PER_LONG.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/1310457490-3356-3-git-send-email-tj@kernel.org\nCc: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "1e01979c8f502ac13e3cdece4f38712c5944e6e8",
      "tree": "d47c4700bfdcffc3f7f68b19d50c588c20689b48",
      "parents": [
        "d0ead157387f19801beb1b419568723b2e9b7c79"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 12 09:45:34 2011 +0200"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Tue Jul 12 21:58:29 2011 -0700"
      },
      "message": "x86, numa: Implement pfn -\u003e nid mapping granularity check\n\nSPARSEMEM w/o VMEMMAP and DISCONTIGMEM, both used only on 32bit, use\nsections array to map pfn to nid which is limited in granularity.  If\nNUMA nodes are laid out such that the mapping cannot be accurate, boot\nwill fail triggering BUG_ON() in mminit_verify_page_links().\n\nOn 32bit, it\u0027s 512MiB w/ PAE and SPARSEMEM.  This seems to have been\ngranular enough until commit 2706a0bf7b (x86, NUMA: Enable\nCONFIG_AMD_NUMA on 32bit too).  Apparently, there is a machine which\naligns NUMA nodes to 128MiB and has only AMD NUMA but not SRAT.  This\nled to the following BUG_ON().\n\n On node 0 totalpages: 2096615\n   DMA zone: 32 pages used for memmap\n   DMA zone: 0 pages reserved\n   DMA zone: 3927 pages, LIFO batch:0\n   Normal zone: 1740 pages used for memmap\n   Normal zone: 220978 pages, LIFO batch:31\n   HighMem zone: 16405 pages used for memmap\n   HighMem zone: 1853533 pages, LIFO batch:31\n BUG: Int 6: CR2   (null)\n      EDI   (null)  ESI 00000002  EBP 00000002  ESP c1543ecc\n      EBX f2400000  EDX 00000006  ECX   (null)  EAX 00000001\n      err   (null)  EIP c16209aa   CS 00000060  flg 00010002\n Stack: f2400000 00220000 f7200800 c1620613 00220000 01000000 04400000 00238000\n          (null) f7200000 00000002 f7200b58 f7200800 c1620929 000375fe   (null)\n        f7200b80 c16395f0 00200a02 f7200a80   (null) 000375fe 00000002   (null)\n Pid: 0, comm: swapper Not tainted 2.6.39-rc5-00181-g2706a0b #17\n Call Trace:\n  [\u003cc136b1e5\u003e] ? early_fault+0x2e/0x2e\n  [\u003cc16209aa\u003e] ? mminit_verify_page_links+0x12/0x42\n  [\u003cc1620613\u003e] ? memmap_init_zone+0xaf/0x10c\n  [\u003cc1620929\u003e] ? free_area_init_node+0x2b9/0x2e3\n  [\u003cc1607e99\u003e] ? free_area_init_nodes+0x3f2/0x451\n  [\u003cc1601d80\u003e] ? paging_init+0x112/0x118\n  [\u003cc15f578d\u003e] ? setup_arch+0x791/0x82f\n  [\u003cc15f43d9\u003e] ? start_kernel+0x6a/0x257\n\nThis patch implements node_map_pfn_alignment() which determines\nmaximum internode alignment and update numa_register_memblks() to\nreject NUMA configuration if alignment exceeds the pfn -\u003e nid mapping\ngranularity of the memory model as determined by PAGES_PER_SECTION.\n\nThis makes the problematic machine boot w/ flatmem by rejecting the\nNUMA config and provides protection against crazy NUMA configurations.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/20110712074534.GB2872@htj.dyndns.org\nLKML-Reference: \u003c20110628174613.GP478@escobedo.osrc.amd.com\u003e\nReported-and-Tested-by: Hans Rosenfeld \u003chans.rosenfeld@amd.com\u003e\nCc: Conny Seidel \u003cconny.seidel@amd.com\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "1fa7b6a29c61358cc2ca6f64cef4aa0e1a7ca74c",
      "tree": "7318c8602f61c2052df308920bd681539f760555",
      "parents": [
        "f0f52a9463839c52a63c05d6e7d4a330d94a9794"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 02 06:11:24 2011 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 02 06:11:24 2011 +0900"
      },
      "message": "Revert \"mm: fail GFP_DMA allocations when ZONE_DMA is not configured\"\n\nThis reverts commit a197b59ae6e8bee56fcef37ea2482dc08414e2ac.\n\nAs rmk says:\n \"Commit a197b59ae6e8 (mm: fail GFP_DMA allocations when ZONE_DMA is not\n  configured) is causing regressions on ARM with various drivers which\n  use GFP_DMA.\n\n  The behaviour up until now has been to silently ignore that flag when\n  CONFIG_ZONE_DMA is not enabled, and to allocate from the normal zone.\n  However, as a result of the above commit, such allocations now fail\n  which causes drivers to fail.  These are regressions compared to the\n  previous kernel version.\"\n\nso just revert it.\n\nRequested-by: Russell King \u003clinux@arm.linux.org.uk\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "246e87a9393448c20873bc5dee64be68ed559e24",
      "tree": "a17016142b267fcba2e3be9908f8138c8dcb3f3a",
      "parents": [
        "889976dbcb1218119fdd950fb7819084e37d7d37"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu May 26 16:25:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: fix get_scan_count() for small targets\n\nDuring memory reclaim we determine the number of pages to be scanned per\nzone as\n\n\t(anon + file) \u003e\u003e priority.\nAssume\n\tscan \u003d (anon + file) \u003e\u003e priority.\n\nIf scan \u003c SWAP_CLUSTER_MAX, the scan will be skipped for this time and\npriority gets higher.  This has some problems.\n\n  1. This increases priority as 1 without any scan.\n     To do scan in this priority, amount of pages should be larger than 512M.\n     If pages\u003e\u003epriority \u003c SWAP_CLUSTER_MAX, it\u0027s recorded and scan will be\n     batched, later. (But we lose 1 priority.)\n     If memory size is below 16M, pages \u003e\u003e priority is 0 and no scan in\n     DEF_PRIORITY forever.\n\n  2. If zone-\u003eall_unreclaimabe\u003d\u003dtrue, it\u0027s scanned only when priority\u003d\u003d0.\n     So, x86\u0027s ZONE_DMA will never be recoverred until the user of pages\n     frees memory by itself.\n\n  3. With memcg, the limit of memory can be small. When using small memcg,\n     it gets priority \u003c DEF_PRIORITY-2 very easily and need to call\n     wait_iff_congested().\n     For doing scan before priorty\u003d9, 64MB of memory should be used.\n\nThen, this patch tries to scan SWAP_CLUSTER_MAX of pages in force...when\n\n  1. the target is enough small.\n  2. it\u0027s kswapd or memcg reclaim.\n\nThen we can avoid rapid priority drop and may be able to recover\nall_unreclaimable in a small zones.  And this patch removes nr_saved_scan.\n This will allow scanning in this priority even when pages \u003e\u003e priority is\nvery small.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Ying Han \u003cyinghan@google.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cfa54a0fcfc1017c6f122b6f21aaba36daa07f71",
      "tree": "c6bcc41b79475854254384b7b4912a2101364183",
      "parents": [
        "a539f3533b78e39a22723d6d3e1e11b6c14454d9"
      ],
      "author": {
        "name": "Andrew Barry",
        "email": "abarry@cray.com",
        "time": "Tue May 24 17:12:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:36 2011 -0700"
      },
      "message": "mm/page_alloc.c: prevent unending loop in __alloc_pages_slowpath()\n\nI believe I found a problem in __alloc_pages_slowpath, which allows a\nprocess to get stuck endlessly looping, even when lots of memory is\navailable.\n\nRunning an I/O and memory intensive stress-test I see a 0-order page\nallocation with __GFP_IO and __GFP_WAIT, running on a system with very\nlittle free memory.  Right about the same time that the stress-test gets\nkilled by the OOM-killer, the utility trying to allocate memory gets stuck\nin __alloc_pages_slowpath even though most of the systems memory was freed\nby the oom-kill of the stress-test.\n\nThe utility ends up looping from the rebalance label down through the\nwait_iff_congested continiously.  Because order\u003d0,\n__alloc_pages_direct_compact skips the call to get_page_from_freelist.\nBecause all of the reclaimable memory on the system has already been\nreclaimed, __alloc_pages_direct_reclaim skips the call to\nget_page_from_freelist.  Since there is no __GFP_FS flag, the block with\n__alloc_pages_may_oom is skipped.  The loop hits the wait_iff_congested,\nthen jumps back to rebalance without ever trying to\nget_page_from_freelist.  This loop repeats infinitely.\n\nThe test case is pretty pathological.  Running a mix of I/O stress-tests\nthat do a lot of fork() and consume all of the system memory, I can pretty\nreliably hit this on 600 nodes, in about 12 hours.  32GB/node.\n\nSigned-off-by: Andrew Barry \u003cabarry@cray.com\u003e\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Rik van Riel\u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a197b59ae6e8bee56fcef37ea2482dc08414e2ac",
      "tree": "ead0890373cc9c36321364efbad73a25898076ab",
      "parents": [
        "ba93fa81b5f2bf0076407a3a777fff122ce16220"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue May 24 17:12:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:29 2011 -0700"
      },
      "message": "mm: fail GFP_DMA allocations when ZONE_DMA is not configured\n\nThe page allocator will improperly return a page from ZONE_NORMAL even\nwhen __GFP_DMA is passed if CONFIG_ZONE_DMA is disabled.  The caller\nexpects DMA memory, perhaps for ISA devices with 16-bit address registers,\nand may get higher memory resulting in undefined behavior.\n\nThis patch causes the page allocator to return NULL in such circumstances\nwith a warning emitted to the kernel log on the first occurrence.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6d3163ce86dd386b4f7bda80241d7fea2bc0bb1d",
      "tree": "169f74df152fa593e5dc9adfff7f6f7e31061028",
      "parents": [
        "0091a47da0b720ca39511c7d90dcc768cafcaf58"
      ],
      "author": {
        "name": "Arve Hjønnevåg",
        "email": "arve@android.com",
        "time": "Tue May 24 17:12:24 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:24 2011 -0700"
      },
      "message": "mm: check if any page in a pageblock is reserved before marking it MIGRATE_RESERVE\n\nThis fixes a problem where the first pageblock got marked MIGRATE_RESERVE\neven though it only had a few free pages.  eg, On current ARM port, The\nkernel starts at offset 0x8000 to leave room for boot parameters, and the\nmemory is freed later.\n\nThis in turn caused no contiguous memory to be reserved and frequent\nkswapd wakeups that emptied the caches to get more contiguous memory.\n\nUnfortunatelly, ARM needs order-2 allocation for pgd (see\narm/mm/pgd.c#pgd_alloc()).  Therefore the issue is not minor nor easy\navoidable.\n\n[kosaki.motohiro@jp.fujitsu.com: added some explanation]\n[kosaki.motohiro@jp.fujitsu.com: add !pfn_valid_within() to check]\n[minchan.kim@gmail.com: check end_pfn in pageblock_is_reserved]\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\nSigned-off-by: Arve Hjønnevåg \u003carve@android.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a238ab5b0239575c179f4976064192c3f7409dad",
      "tree": "bed3d186bee49318e1984eeac489a614ad6acb1b",
      "parents": [
        "de03c72cfce5b263a674d04348b58475ec50163c"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "dave@linux.vnet.ibm.com",
        "time": "Tue May 24 17:12:16 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:21 2011 -0700"
      },
      "message": "mm: break out page allocation warning code\n\nThis originally started as a simple patch to give vmalloc() some more\nverbose output on failure on top of the plain page allocator messages.\nJohannes suggested that it might be nicer to lead with the vmalloc() info\n_before_ the page allocator messages.\n\nBut, I do think there\u0027s a lot of value in what __alloc_pages_slowpath()\ndoes with its filtering and so forth.\n\nThis patch creates a new function which other allocators can call instead\nof relying on the internal page allocator warnings.  It also gives this\nfunction private rate-limiting which separates it from other\nprintk_ratelimit() users.\n\nSigned-off-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Michal Nazarewicz \u003cmina86@mina86.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c6a140bf164829769499b5e50d380893da39b29e",
      "tree": "0cfcbd5356cd3cebabba2334dcfdaec6ea47d816",
      "parents": [
        "a6cccdc36c966e51fd969560d870cfd37afbfa9c"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Tue May 24 17:11:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:10 2011 -0700"
      },
      "message": "mm/compaction: reverse the change that forbade sync migraton with __GFP_NO_KSWAPD\n\nIt\u0027s uncertain this has been beneficial, so it\u0027s safer to undo it.  All\nother compaction users would still go in synchronous mode if a first\nattempt at async compaction failed.  Hopefully we don\u0027t need to force\nspecial behavior for THP (which is the only __GFP_NO_KSWAPD user so far\nand it\u0027s the easier to exercise and to be noticeable).  This also make\n__GFP_NO_KSWAPD return to its original strict semantics specific to bypass\nkswapd, as THP allocations have khugepaged for the async THP\nallocations/compactions.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Alex Villacis Lasso \u003cavillaci@fiec.espol.edu.ec\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a6cccdc36c966e51fd969560d870cfd37afbfa9c",
      "tree": "17c48382275e1852604e4a513121760a013dd2c6",
      "parents": [
        "1b79acc91115ba47e744b70bb166b77bd94f5855"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue May 24 17:11:33 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:09 2011 -0700"
      },
      "message": "mm, mem-hotplug: update pcp-\u003estat_threshold when memory hotplug occur\n\nCurrently, cpu hotplug updates pcp-\u003estat_threshold, but memory hotplug\ndoesn\u0027t.  There is no reason for this.\n\n[akpm@linux-foundation.org: fix CONFIG_SMP\u003dn build]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b79acc91115ba47e744b70bb166b77bd94f5855",
      "tree": "9097834522de3840845368312c09b5ad4a98e5e5",
      "parents": [
        "839a4fcc8af7412be2efd11f0bd0504757f79f08"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue May 24 17:11:32 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:09 2011 -0700"
      },
      "message": "mm, mem-hotplug: recalculate lowmem_reserve when memory hotplug occurs\n\nCurrently, memory hotplug calls setup_per_zone_wmarks() and\ncalculate_zone_inactive_ratio(), but doesn\u0027t call\nsetup_per_zone_lowmem_reserve().\n\nIt means the number of reserved pages aren\u0027t updated even if memory hot\nplug occur.  This patch fixes it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "839a4fcc8af7412be2efd11f0bd0504757f79f08",
      "tree": "8387ca9f25f2896dda53c222cd6c7a7cc41b9d74",
      "parents": [
        "37b23e0525d393d48a7d59f870b3bc061a30ccdb"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue May 24 17:11:31 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:08 2011 -0700"
      },
      "message": "mm, mem-hotplug: fix section mismatch. setup_per_zone_inactive_ratio() should be __meminit.\n\nCommit bce7394a3e (\"page-allocator: reset wmark_min and inactive ratio of\nzone when hotplug happens\") introduced invalid section references.  Now,\nsetup_per_zone_inactive_ratio() is marked __init and then it can\u0027t be\nreferenced from memory hotplug code.\n\nThis patch marks it as __meminit and also marks caller as __ref.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac3bbec5ec69b973317677e038de2d1a0c90c18c",
      "tree": "7df84a9ba812c1759a035428f6bad78b6e73b8a9",
      "parents": [
        "965f55dea0e331152fa53941a51e4e16f9f06fae"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Tue May 24 17:11:21 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:04 2011 -0700"
      },
      "message": "mm: remove unused zone_idx variable from set_migratetype_isolate\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7bf02ea22c6cdd09e2d3f1d3c3fe366b834ae9af",
      "tree": "c1c8aa415910e0f0deea1181759ddd2b5d6067fb",
      "parents": [
        "851cc856d73d1185243c149ed0c0839df8a1b2fe"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue May 24 17:11:16 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:03 2011 -0700"
      },
      "message": "arch, mm: filter disallowed nodes from arch specific show_mem functions\n\nArchitectures that implement their own show_mem() function did not pass\nthe filter argument to show_free_areas() to appropriately avoid emitting\nthe state of nodes that are disallowed in the current context.  This patch\nnow passes the filter argument to show_free_areas() so those nodes are now\navoided.\n\nThis patch also removes the show_free_areas() wrapper around\n__show_free_areas() and converts existing callers to pass an empty filter.\n\nia64 emits additional information for each node, so skip_free_areas_zone()\nmust be made global to filter disallowed nodes and it is converted to use\na nid argument rather than a zone for this use case.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Russell King \u003clinux@arm.linux.org.uk\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Fenghua Yu \u003cfenghua.yu@intel.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Helge Deller \u003cdeller@gmx.de\u003e\nCc: James Bottomley \u003cjejb@parisc-linux.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Guan Xuetao \u003cgxt@mprc.pku.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "57d19e80f459dd845fb3cfeba8e6df8471bac142",
      "tree": "8254766715720228db3d50f1ef3c7fe003c06d65",
      "parents": [
        "ee9ec4f82049c678373a611ce20ac67fe9ad836e",
        "e64851f5a0ad6ec991f74ebb3108c35aa0323d5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 09:12:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 09:12:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)\n  b43: fix comment typo reqest -\u003e request\n  Haavard Skinnemoen has left Atmel\n  cris: typo in mach-fs Makefile\n  Kconfig: fix copy/paste-ism for dell-wmi-aio driver\n  doc: timers-howto: fix a typo (\"unsgined\")\n  perf: Only include annotate.h once in tools/perf/util/ui/browsers/annotate.c\n  md, raid5: Fix spelling error in comment (\u0027Ofcourse\u0027 --\u003e \u0027Of course\u0027).\n  treewide: fix a few typos in comments\n  regulator: change debug statement be consistent with the style of the rest\n  Revert \"arm: mach-u300/gpio: Fix mem_region resource size miscalculations\"\n  audit: acquire creds selectively to reduce atomic op overhead\n  rtlwifi: don\u0027t touch with treewide double semicolon removal\n  treewide: cleanup continuations and remove logging message whitespace\n  ath9k_hw: don\u0027t touch with treewide double semicolon removal\n  include/linux/leds-regulator.h: fix syntax in example code\n  tty: fix typo in descripton of tty_termios_encode_baud_rate\n  xtensa: remove obsolete BKL kernel option from defconfig\n  m68k: fix comment typo \u0027occcured\u0027\n  arch:Kconfig.locks Remove unused config option.\n  treewide: remove extra semicolons\n  ...\n"
    },
    {
      "commit": "268bb0ce3e87872cb9290c322b0d35bce230d88f",
      "tree": "c8331ade4a3e24fc589c4eb62731bc2312d35333",
      "parents": [
        "257313b2a87795e07a0bdf58d0fffbdba8b31051"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 20 12:50:29 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 20 12:50:29 2011 -0700"
      },
      "message": "sanitize \u003clinux/prefetch.h\u003e usage\n\nCommit e66eed651fd1 (\"list: remove prefetching from regular list\niterators\") removed the include of prefetch.h from list.h, which\nuncovered several cases that had apparently relied on that rather\nobscure header file dependency.\n\nSo this fixes things up a bit, using\n\n   grep -L linux/prefetch.h $(git grep -l \u0027[^a-z_]prefetchw*(\u0027 -- \u0027*.[ch]\u0027)\n   grep -L \u0027prefetchw*(\u0027 $(git grep -l \u0027linux/prefetch.h\u0027 -- \u0027*.[ch]\u0027)\n\nto guide us in finding files that either need \u003clinux/prefetch.h\u003e\ninclusion, or have it despite not needing it.\n\nThere are more of them around (mostly network drivers), but this gets\nmany core ones.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5e6ab589d570ac79cc939517fab05c87a23c262",
      "tree": "db9014f2b0897c9f3ada5b4077995e679aa36fbb",
      "parents": [
        "93d2175d3d31f11ba04fcfa0e9a496a1b4bc8b34"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Mon May 16 13:16:54 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 16 18:34:30 2011 -0700"
      },
      "message": "mm: fix kernel-doc warning in page_alloc.c\n\nFix new kernel-doc warning in mm/page_alloc.c:\n\n  Warning(mm/page_alloc.c:2370): No description found for parameter \u0027nid\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ee85c2e1454603ebb9f8d87223ac79dcdc87fa32",
      "tree": "1e5f85fcd35083116e6bc88f6e995b4351e987f1",
      "parents": [
        "71a6d0af5b031d27029fda64fbab9b9d953d2b33"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed May 11 15:13:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 11 18:50:45 2011 -0700"
      },
      "message": "mm: add alloc_pages_exact_nid()\n\nAdd a alloc_pages_exact_nid() that allocates on a specific node.\n\nThe naming is quite broken, but fixing that would need a larger renaming\naction.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: tweak comment]\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8f389a99b652aab5b42297280bd94d95933ad12f",
      "tree": "a61c5507962055c9e495c469f805381c18bf06dc",
      "parents": [
        "bad49d9c89d8755a1289d68e6d0127a6ee79e119"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Wed May 11 15:13:32 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 11 18:50:44 2011 -0700"
      },
      "message": "mm: use alloc_bootmem_node_nopanic() on really needed path\n\nStefan found nobootmem does not work on his system that has only 8M of\nRAM.  This causes an early panic:\n\n  BIOS-provided physical RAM map:\n   BIOS-88: 0000000000000000 - 000000000009f000 (usable)\n   BIOS-88: 0000000000100000 - 0000000000840000 (usable)\n  bootconsole [earlyser0] enabled\n  Notice: NX (Execute Disable) protection missing in CPU or disabled in BIOS!\n  DMI not present or invalid.\n  last_pfn \u003d 0x840 max_arch_pfn \u003d 0x100000\n  init_memory_mapping: 0000000000000000-0000000000840000\n  8MB LOWMEM available.\n    mapped low ram: 0 - 00840000\n    low ram: 0 - 00840000\n  Zone PFN ranges:\n    DMA      0x00000001 -\u003e 0x00001000\n    Normal   empty\n  Movable zone start PFN for each node\n  early_node_map[2] active PFN ranges\n      0: 0x00000001 -\u003e 0x0000009f\n      0: 0x00000100 -\u003e 0x00000840\n  BUG: Int 6: CR2 (null)\n       EDI c034663c  ESI (null)  EBP c0329f38  ESP c0329ef4\n       EBX c0346380  EDX 00000006  ECX ffffffff  EAX fffffff4\n       err (null)  EIP c0353191   CS c0320060  flg 00010082\n  Stack: (null) c030c533 000007cd (null) c030c533 00000001 (null) (null)\n         00000003 0000083f 00000018 00000002 00000002 c0329f6c c03534d6 (null)\n         (null) 00000100 00000840 (null) c0329f64 00000001 00001000 (null)\n  Pid: 0, comm: swapper Not tainted 2.6.36 #5\n  Call Trace:\n   [\u003cc02e3707\u003e] ? 0xc02e3707\n   [\u003cc035e6e5\u003e] 0xc035e6e5\n   [\u003cc0353191\u003e] ? 0xc0353191\n   [\u003cc03534d6\u003e] 0xc03534d6\n   [\u003cc034f1cd\u003e] 0xc034f1cd\n   [\u003cc034a824\u003e] 0xc034a824\n   [\u003cc03513cb\u003e] ? 0xc03513cb\n   [\u003cc0349432\u003e] 0xc0349432\n   [\u003cc0349066\u003e] 0xc0349066\n\nIt turns out that we should ignore the low limit of 16M.\n\nUse alloc_bootmem_node_nopanic() in this case.\n\n[akpm@linux-foundation.org: less mess]\nSigned-off-by: Yinghai LU \u003cyinghai@kernel.org\u003e\nReported-by: Stefan Hellermann \u003cstefan@the2masters.de\u003e\nTested-by: Stefan Hellermann \u003cstefan@the2masters.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@linux.intel.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.34+]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "07f9479a40cc778bc1462ada11f95b01360ae4ff",
      "tree": "0676cf38df3844004bb3ebfd99dfa67a4a8998f5",
      "parents": [
        "9d5e6bdb3013acfb311ab407eeca0b6a6a3dedbf",
        "cd2e49e90f1cae7726c9a2c54488d881d7f1cd1c"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Apr 26 10:22:15 2011 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Apr 26 10:22:59 2011 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nFast-forwarded to current state of Linus\u0027 tree as there are patches to be\napplied for files that didn\u0027t exist on the old branch.\n"
    },
    {
      "commit": "9f6ae448bfc6cdf40279f43bb0b4fd159edc4e0a",
      "tree": "5878f724ac39a5a28127fecc912ff76621d2665d",
      "parents": [
        "c340b1d640001c8c9ecff74f68fd90422ae2448a"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Thu Apr 14 15:21:57 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 14 16:06:54 2011 -0700"
      },
      "message": "mm/page_alloc.c: silence build_all_zonelists() section mismatch\n\nThe memory hotplug case involves calling to build_all_zonelists() which\nin turns calls in to setup_zone_pageset().  The latter is marked\n__meminit while build_all_zonelists() itself has no particular\nannotation.  build_all_zonelists() is only handed a non-NULL pointer in\nthe case of memory hotplug through an existing __meminit path, so the\nsetup_zone_pageset() reference is always safe.\n\nThe options as such are either to flag build_all_zonelists() as __ref (as\nper __build_all_zonelists()), or to simply discard the __meminit\nannotation from setup_zone_pageset().\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "58c2ee4007bea04cc37041fcbd380fadb7b7be82",
      "tree": "becfb04e800b3a204a06cb31786e759d432738fc",
      "parents": [
        "8620d81fadc0747f567909aa7ae2eeb7135a64e9"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Tue Mar 15 10:59:02 2011 +0530"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Sun Apr 10 17:01:03 2011 +0200"
      },
      "message": "mm: Fix section mismatch for setup_zone_pageset()\n\nbuild_all_zonelists() which is not __meminit, calls setup_zone_pageset().\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "b2b755b5f10eb32fbdc73a9907c07006b17f714b",
      "tree": "444c7a93cc6c3dd109a4b23f1f76cdc38cf5eb10",
      "parents": [
        "e285c1746accb80620e511f9c72e9893beeedc0e"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Mar 24 15:18:15 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 17:49:37 2011 -0700"
      },
      "message": "lib, arch: add filter argument to show_mem and fix private implementations\n\nCommit ddd588b5dd55 (\"oom: suppress nodes that are not allowed from\nmeminfo on oom kill\") moved lib/show_mem.o out of lib/lib.a, which\nresulted in build warnings on all architectures that implement their own\nversions of show_mem():\n\n\tlib/lib.a(show_mem.o): In function `show_mem\u0027:\n\tshow_mem.c:(.text+0x1f4): multiple definition of `show_mem\u0027\n\tarch/sparc/mm/built-in.o:(.text+0xd70): first defined here\n\nThe fix is to remove __show_mem() and add its argument to show_mem() in\nall implementations to prevent this breakage.\n\nArchitectures that implement their own show_mem() actually don\u0027t do\nanything with the argument yet, but they could be made to filter nodes\nthat aren\u0027t allowed in the current context in the future just like the\ngeneric implementation.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nReported-by: James Bottomley \u003cJames.Bottomley@hansenpartnership.com\u003e\nSuggested-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f212ad7cf9c73f8a7fa160e223dcb3f074441a72",
      "tree": "95789ef7ce662e86a3e4aded5dfb97c51dc7b0a0",
      "parents": [
        "af4a662144884a7dbb19acbef70878b3b955f928"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Wed Mar 23 16:42:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:25 2011 -0700"
      },
      "message": "memcg: add memcg sanity checks at allocating and freeing pages\n\nAdd checks at allocating or freeing a page whether the page is used (iow,\ncharged) from the view point of memcg.\n\nThis check may be useful in debugging a problem and we did similar checks\nbefore the commit 52d4b9ac(memcg: allocate all page_cgroup at boot).\n\nThis patch adds some overheads at allocating or freeing memory, so it\u0027s\nenabled only when CONFIG_DEBUG_VM is enabled.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "84be48d84a53044e13aa8816aab201ab5480815d",
      "tree": "5b4208fee6bb357112e764e5f778adc8529d1b1b",
      "parents": [
        "a42931bf9c02fbf3628a27a2a5c55d2b83e4ff20"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill@shutemov.name",
        "time": "Tue Mar 22 16:33:41 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:09 2011 -0700"
      },
      "message": "mm/page_alloc.c: use list_move() instead of list_del()/list_add() combination\n\nSigned-off-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "78afd5612deb8268bafc8b6507d72341d5ed9aac",
      "tree": "b96131d6f237b9ce6848d95c8eccdd1f7855365c",
      "parents": [
        "11bc82d67d1150767901bca54a24466621d763d7"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Tue Mar 22 16:33:12 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:05 2011 -0700"
      },
      "message": "mm: add __GFP_OTHER_NODE flag\n\nAdd a new __GFP_OTHER_NODE flag to tell the low level numa statistics in\nzone_statistics() that an allocation is on behalf of another thread.  This\nway the local and remote counters can be still correct, even when\nbackground daemons like khugepaged are changing memory mappings.\n\nThis only affects the accounting, but I think it\u0027s worth doing that right\nto avoid confusing users.\n\nI first tried to just pass down the right node, but this required a lot of\nchanges to pass down this parameter and at least one addition of a 10th\nargument to a 9 argument function.  Using the flag is a lot less\nintrusive.\n\nOpen: should be also used for migration?\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "11bc82d67d1150767901bca54a24466621d763d7",
      "tree": "119442c599a82b35c553c6f54626c870e885ee50",
      "parents": [
        "b2eef8c0d09101bbbff2531c097543aedde0b525"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Tue Mar 22 16:33:11 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:05 2011 -0700"
      },
      "message": "mm: compaction: Use async migration for __GFP_NO_KSWAPD and enforce no writeback\n\n__GFP_NO_KSWAPD allocations are usually very expensive and not mandatory\nto succeed as they have graceful fallback.  Waiting for I/O in those,\ntends to be overkill in terms of latencies, so we can reduce their latency\nby disabling sync migrate.\n\nUnfortunately, even with async migration it\u0027s still possible for the\nprocess to be blocked waiting for a request slot (e.g.  get_request_wait\nin the block layer) when -\u003ewritepage is called.  To prevent\n__GFP_NO_KSWAPD blocking, this patch prevents -\u003ewritepage being called on\ndirty page cache for asynchronous migration.\n\nAddresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d31142\n\n[mel@csn.ul.ie: Avoid writebacks for NFS, retry locked pages, use bool]\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Arthur Marsh \u003carthur.marsh@internode.on.net\u003e\nCc: Clemens Ladisch \u003ccladisch@googlemail.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReported-by: Alex Villacis Lasso \u003cavillaci@ceibo.fiec.espol.edu.ec\u003e\nTested-by: Alex Villacis Lasso \u003cavillaci@ceibo.fiec.espol.edu.ec\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d16871d8c96deadc5f9753b6b096074f2cbcbe1",
      "tree": "9f3f0c5a60e7a5bf4bfa9f2bd4c9492db36cecfe",
      "parents": [
        "e64a782fec684c29a8204c51b3cb554dce588592"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Mar 22 16:32:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:02 2011 -0700"
      },
      "message": "mm: batch-free pcp list if possible\n\nfree_pcppages_bulk() frees pages from pcp lists in a round-robin fashion\nby keeping batch_free counter.  But it doesn\u0027t need to spin if there is\nonly one non-empty list.  This can be checked by batch_free \u003d\u003d\nMIGRATE_PCPTYPES.\n\n[akpm@linux-foundation.org: fix comment]\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cbf978bfb12d7deca97d7333f65eda0381a072de",
      "tree": "75a415ec997606460c0c851f43e29d008476f231",
      "parents": [
        "29423e77c06cee7d4e335ef4a7cbd949da978c91"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Mar 22 16:30:48 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:01 2011 -0700"
      },
      "message": "oom: suppress nodes that are not allowed from meminfo on page alloc failure\n\nDisplaying extremely verbose meminfo for all nodes on the system is\noverkill for page allocation failures when the context restricts that\nallocation to only a subset of nodes.  We don\u0027t particularly care about\nthe state of all nodes when some are not allowed in the current context,\nthey can have an abundance of memory but we can\u0027t allocate from that part\nof memory.\n\nThis patch suppresses disallowed nodes from the meminfo dump on a page\nallocation failure if the context requires it.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29423e77c06cee7d4e335ef4a7cbd949da978c91",
      "tree": "4020036f36a8fb93d4c1010f59caa36742ff5c25",
      "parents": [
        "ddd588b5dd55f14320379961e47683db4e4c1d90"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Mar 22 16:30:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:01 2011 -0700"
      },
      "message": "oom: suppress show_mem() for many nodes in irq context on page alloc failure\n\nWhen a page allocation failure occurs, show_mem() is called to dump the\nstate of the VM so users may understand what happened to get into that\ncondition.\n\nThis output, however, can be extremely verbose.  In irq context, it may\nresult in significant delays that incur NMI watchdog timeouts when the\nmachine is large (we use CONFIG_NODES_SHIFT \u003e 8 here to define a \"large\"\nmachine since the length of the show_mem() output is proportional to the\nnumber of possible nodes).\n\nThis patch suppresses the show_mem() call in irq context when the kernel\nhas CONFIG_NODES_SHIFT \u003e 8.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ddd588b5dd55f14320379961e47683db4e4c1d90",
      "tree": "09de73c51c8c5e701e644236890a5d205ec3cdc9",
      "parents": [
        "94dcf29a11b3d20a28790598d701f98484a969da"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Mar 22 16:30:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:01 2011 -0700"
      },
      "message": "oom: suppress nodes that are not allowed from meminfo on oom kill\n\nThe oom killer is extremely verbose for machines with a large number of\ncpus and/or nodes.  This verbosity can often be harmful if it causes other\nimportant messages to be scrolled from the kernel log and incurs a\nsignicant time delay, specifically for kernels with CONFIG_NODES_SHIFT \u003e\n8.\n\nThis patch causes only memory information to be displayed for nodes that\nare allowed by current\u0027s cpuset when dumping the VM state.  Information\nfor all other nodes is irrelevant to the oom condition; we don\u0027t care if\nthere\u0027s an abundance of memory elsewhere if we can\u0027t access it.\n\nThis only affects the behavior of dumping memory information when an oom\nis triggered.  Other dumps, such as for sysrq+m, still display the\nunfiltered form when using the existing show_mem() interface.\n\nAdditionally, the per-cpu pageset statistics are extremely verbose in oom\nkiller output, so it is now suppressed.  This removes\n\n\tnodes_weight(current-\u003emems_allowed) * (1 + nr_cpus)\n\nlines from the oom killer output.\n\nCallers may use __show_mem(SHOW_MEM_FILTER_NODES) to filter disallowed\nnodes.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef2b4b95a63a1d23958dcb99eb2c6898eddc87d0",
      "tree": "0a22745dba03926768552aa3006b166995e5342d",
      "parents": [
        "7b7adc4a016a1decb806eb71ecab98721fa7f146"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Fri Mar 18 00:16:35 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 17 16:31:13 2011 -0700"
      },
      "message": "mm: PageBuddy and mapcount robustness\n\nChange the _mapcount value indicating PageBuddy from -2 to -128 for\nmore robusteness against page_mapcount() undeflows.\n\nUse reset_page_mapcount instead of __ClearPageBuddy in bad_page to\nignore the previous retval of PageBuddy().\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReported-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8460b3e5bc64955aeefdd8357b3bf7b5ff79b3f2",
      "tree": "7e5f6d050b72ab08a4497e82a4a103fefb086e80",
      "parents": [
        "56396e6823fe9b42fe9cf9403d6ed67756255f70",
        "521cb40b0c44418a4fd36dc633f575813d59a43d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 15 08:29:44 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 15 08:29:44 2011 +0100"
      },
      "message": "Merge commit \u0027v2.6.38\u0027 into x86/mm\n\nConflicts:\n\tarch/x86/mm/numa_64.c\n\nMerge reason: Resolve the conflict, update the branch to .38.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cc28989437de5617875a2943697fe6ba51a0da8f",
      "tree": "e1b712bb20af9690eda044f70284f7dcb32a3975",
      "parents": [
        "1f565a896ee139a70e1a16f74a4ec29707691b0b"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Sat Feb 26 13:05:43 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 26 13:05:43 2011 +0100"
      },
      "message": "mm: Move early_node_map[] reverse scan helpers under HAVE_MEMBLOCK\n\nHeiko found recent memblock change triggers these warnings on s390:\n\n  mm/page_alloc.c:3623:22: warning: \u0027last_active_region_index_in_nid\u0027 defined but not used\n  mm/page_alloc.c:3638:22: warning: \u0027previous_active_region_index_in_nid\u0027 defined but not used\n\nNeed to move those two function under HAVE_MEMBLOCK with its only\nuser, find_memory_core_early().\n\n-tj: Minor updates to description.\n\nReported-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "29723fccc837d20039078f7a571e8d457eb0d6c6",
      "tree": "f11e37b20388eb12f04ae8718b247e931ce99379",
      "parents": [
        "a2d6d2fa90c0e1d2cc1d59ccb5bbe93bb28b7413"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Fri Feb 25 14:44:25 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 25 15:07:37 2011 -0800"
      },
      "message": "mm: fix dubious code in __count_immobile_pages()\n\nWhen pfn_valid_within() failed \u0027iter\u0027 was incremented twice.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bc1f91e1f0e977fb95b11d8fa686f5091888110",
      "tree": "e7c6369b20e5e37176b91a93a8ea621df8c9d893",
      "parents": [
        "e782ab421bbba1912c87934bd0e8998630736418"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Thu Feb 24 14:43:06 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 24 14:43:06 2011 +0100"
      },
      "message": "bootmem: Move __alloc_memory_core_early() to nobootmem.c\n\nNow that bootmem.c and nobootmem.c are separate, there\u0027s no reason to\ndefine __alloc_memory_core_early(), which is used only by nobootmem,\ninside #ifdef in page_alloc.c.  Move it to nobootmem.c and make it\nstatic.\n\nThis patch doesn\u0027t introduce any behavior change.\n\n-tj: Updated commit description.\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "e782ab421bbba1912c87934bd0e8998630736418",
      "tree": "496e4ccaeadf3551d4c516b9f36c7c087eef9e3b",
      "parents": [
        "0932587328d9bd5b500a640fbaff3290c8d4cabf"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Thu Feb 24 14:43:06 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 24 14:43:06 2011 +0100"
      },
      "message": "bootmem: Move contig_page_data definition to bootmem.c/nobootmem.c\n\nNow that bootmem.c and nobootmem.c are separate, it\u0027s cleaner to\ndefine contig_page_data in each file than in page_alloc.c with #ifdef.\nMove it.\n\nThis patch doesn\u0027t introduce any behavior change.\n\n-v2: According to Andrew, fixed the struct layout.\n-tj: Updated commit description.\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "d2137d5af4259f50c19addb8246a186c9ffac325",
      "tree": "2f7e309f9cf8ef2f2698532c226edda38021fe69",
      "parents": [
        "f005fe12b90c5b9fe180a09209a893e09affa8aa",
        "795abaf1e4e188c4171e3cd3dbb11a9fcacaf505"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 14 11:55:18 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 14 11:55:18 2011 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into x86/bootmem\n\nConflicts:\n\tarch/x86/mm/numa_64.c\n\nMerge reason: fix the conflict, update to latest -rc and pick up this\n              dependent fix from Yinghai:\n\n  e6d2e2b2b1e1: memblock: don\u0027t adjust size in memblock_find_base()\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2ff754fa8f416e82327f2d8f1354a033b66286df",
      "tree": "5da792406aa1f2d3d4fea34e9d45f9b2fc984ecc",
      "parents": [
        "f33261d75b88f55a08e6a9648cef73509979bfba"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jan 25 15:07:23 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 26 10:50:01 2011 +1000"
      },
      "message": "mm: clear pages_scanned only if draining a pcp adds pages to the buddy allocator\n\nCommit 0e093d99763e (\"writeback: do not sleep on the congestion queue if\nthere are no congested BDIs or if significant congestion is not being\nencountered in the current zone\") uncovered a livelock in the page\nallocator that resulted in tasks infinitely looping trying to find\nmemory and kswapd running at 100% cpu.\n\nThe issue occurs because drain_all_pages() is called immediately\nfollowing direct reclaim when no memory is freed and try_to_free_pages()\nreturns non-zero because all zones in the zonelist do not have their\nall_unreclaimable flag set.\n\nWhen draining the per-cpu pagesets back to the buddy allocator for each\nzone, the zone-\u003epages_scanned counter is cleared to avoid erroneously\nsetting zone-\u003eall_unreclaimable later.  The problem is that no pages may\nactually be drained and, thus, the unreclaimable logic never fails\ndirect reclaim so the oom killer may be invoked.\n\nThis apparently only manifested after wait_iff_congested() was\nintroduced and the zone was full of anonymous memory that would not\ncongest the backing store.  The page allocator would infinitely loop if\nthere were no other tasks waiting to be scheduled and clear\nzone-\u003epages_scanned because of drain_all_pages() as the result of this\nchange before kswapd could scan enough pages to trigger the reclaim\nlogic.  Additionally, with every loop of the page allocator and in the\nreclaim path, kswapd would be kicked and would end up running at 100%\ncpu.  In this scenario, current and kswapd are all running continuously\nwith kswapd incrementing zone-\u003epages_scanned and current clearing it.\n\nThe problem is even more pronounced when current swaps some of its\nmemory to swap cache and the reclaimable logic then considers all active\nanonymous memory in the all_unreclaimable logic, which requires a much\nhigher zone-\u003epages_scanned value for try_to_free_pages() to return zero\nthat is never attainable in this scenario.\n\nBefore wait_iff_congested(), the page allocator would incur an\nunconditional timeout and allow kswapd to elevate zone-\u003epages_scanned to\na level that the oom killer would be called the next time it loops.\n\nThe fix is to only attempt to drain pcp pages if there is actually a\nquantity to be drained.  The unconditional clearing of\nzone-\u003epages_scanned in free_pcppages_bulk() need not be changed since\nother callers already ensure that draining will occur.  This patch\nensures that free_pcppages_bulk() will actually free memory before\ncalling into it from drain_all_pages() so zone-\u003epages_scanned is only\ncleared if appropriate.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f33261d75b88f55a08e6a9648cef73509979bfba",
      "tree": "f3d8b4f41c860e9f6d054173870319a75c14c155",
      "parents": [
        "4f542e3dd90a96ee0f8fcb8173cb4104f5f753e6"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jan 25 15:07:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 26 10:50:00 2011 +1000"
      },
      "message": "mm: fix deferred congestion timeout if preferred zone is not allowed\n\nBefore 0e093d99763e (\"writeback: do not sleep on the congestion queue if\nthere are no congested BDIs or if significant congestion is not being\nencountered in the current zone\"), preferred_zone was only used for NUMA\nstatistics, to determine the zoneidx from which to allocate from given\nthe type requested, and whether to utilize memory compaction.\n\nwait_iff_congested(), though, uses preferred_zone to determine if the\ncongestion wait should be deferred because its dirty pages are backed by\na congested bdi.  This incorrectly defers the timeout and busy loops in\nthe page allocator with various cond_resched() calls if preferred_zone\nis not allowed in the current context, usually consuming 100% of a cpu.\n\nThis patch ensures preferred_zone is an allowed zone in the fastpath\ndepending on whether current is constrained by its cpuset or nodes in\nits mempolicy (when the nodemask passed is non-NULL).  This is correct\nsince the fastpath allocation always passes ALLOC_CPUSET when trying to\nallocate memory.  In the slowpath, this patch resets preferred_zone to\nthe first zone of the allowed type when the allocation is not\nconstrained by current\u0027s cpuset, i.e.  it does not pass ALLOC_CPUSET.\n\nThis patch also ensures preferred_zone is from the set of allowed nodes\nwhen called from within direct reclaim since allocations are always\nconstrained by cpusets in this context (it is blockable).\n\nBoth of these uses of cpuset_current_mems_allowed are protected by\nget_mems_allowed().\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c06b1fca18c3ad868bfcaca230146e3038583422",
      "tree": "3f9efb869931a6c6055579524bff8ad6505d074b",
      "parents": [
        "fd4a4663db293bfd5dc20fb4113977f62895e550"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Jan 13 15:47:32 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:49 2011 -0800"
      },
      "message": "mm/page_alloc.c: don\u0027t cache `current\u0027 in a local\n\nIt\u0027s old-fashioned and unneeded.\n\nakpm:/usr/src/25\u003e size mm/page_alloc.o\n   text    data     bss     dec     hex filename\n  39884 1241317   18808 1300009  13d629 mm/page_alloc.o (before)\n  39838 1241317   18808 1299963  13d5fb mm/page_alloc.o (after)\n\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "43506fad21ca3d8dc59e768ff458f7c5e5c01086",
      "tree": "b594f240a780e3547341530fedabb6ac4735ff41",
      "parents": [
        "5520e89485252c759ee60d313e9422447659947b"
      ],
      "author": {
        "name": "KyongHo Cho",
        "email": "pullip.cho@samsung.com",
        "time": "Thu Jan 13 15:47:24 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:48 2011 -0800"
      },
      "message": "mm/page_alloc.c: simplify calculation of combined index of adjacent buddy lists\n\nThe previous approach of calucation of combined index was\n\n\tpage_idx \u0026 ~(1 \u003c\u003c order))\n\nbut we have same result with\n\n\tpage_idx \u0026 buddy_idx\n\nThis reduces instructions slightly as well as enhances readability.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix used-unintialised warning]\nSigned-off-by: KyongHo Cho \u003cpullip.cho@samsung.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5f24ce5fd34c3ca1b3d10d30da754732da64d5c0",
      "tree": "c82d27461f2adda210e77808b7dd04eaec017f2f",
      "parents": [
        "21ae5b01750f14140809508a478a4413792e0261"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:00 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:43 2011 -0800"
      },
      "message": "thp: remove PG_buddy\n\nPG_buddy can be converted to _mapcount \u003d\u003d -2.  So the PG_compound_lock can\nbe added to page-\u003eflags without overflowing (because of the sparse section\nbits increasing) with CONFIG_X86_PAE\u003dy and CONFIG_X86_PAT\u003dy.  This also\nhas to move the memory hotplug code from _mapcount to lru.next to avoid\nany risk of clashes.  We can\u0027t use lru.next for PG_buddy removal, but\nmemory hotplug can use lru.next even more easily than the mapcount\ninstead.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5c3240d92e29ae7bfb9cb58a9b37e80ab40894ff",
      "tree": "fffa9f90492b61ef1578e1c41118024c81d77863",
      "parents": [
        "32dba98e085f8b2b4345887df9abf5e0e93bfc12"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:49 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:42 2011 -0800"
      },
      "message": "thp: don\u0027t alloc harder for gfp nomemalloc even if nowait\n\nNot worth throwing away the precious reserved free memory pool for\nallocations that can fail gracefully (either through mempool or because\nthey\u0027re transhuge allocations later falling back to 4k allocations).\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "32dba98e085f8b2b4345887df9abf5e0e93bfc12",
      "tree": "6789196797350911a1c370ce909bfde2556ccfc4",
      "parents": [
        "936a5fe6e6148c0b3ea0d792b903847d9b9931a1"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:49 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:41 2011 -0800"
      },
      "message": "thp: _GFP_NO_KSWAPD\n\nTransparent hugepage allocations must be allowed not to invoke kswapd or\nany other kind of indirect reclaim (especially when the defrag sysfs is\ncontrol disabled).  It\u0027s unacceptable to swap out anonymous pages\n(potentially anonymous transparent hugepages) in order to create new\ntransparent hugepages.  This is true for the MADV_HUGEPAGE areas too\n(swapping out a kvm virtual machine and so having it suffer an unbearable\nslowdown, so another one with guest physical memory marked MADV_HUGEPAGE\ncan run 30% faster if it is running memory intensive workloads, makes no\nsense).  If a transparent hugepage allocation fails the slowdown is minor\nand there is total fallback, so kswapd should never be asked to swapout\nmemory to allow the high order allocation to succeed.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "59ff421631295cd54dbf75dcc53d27e84af6d9c0",
      "tree": "2570c413cd0e5938ed5e9c09d00fe026bfa63ca4",
      "parents": [
        "14fd403f2146f740942d78af4e0ee59396ad8eab"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:38 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: comment reminder in destroy_compound_page\n\nWarn destroy_compound_page that __split_huge_page_refcount is heavily\ndependent on its internal behavior.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8dd60a3a65c1b057bf0031d28436d3447a3c545b",
      "tree": "19040d799dbf846191c8855450c662014ecec722",
      "parents": [
        "a5b338f2b0b1ff73ae20c66ab831201549eaec01"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:34 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: clear compound mapping\n\nClear compound mapping for anonymous compound pages like it already\nhappens for regular anonymous pages.  But crash if mapping is set for any\ntail page, also the PageAnon check is meaningless for tail pages.  This\ncheck only makes sense for the head page, for tail page it can only hide\nbugs and we definitely don\u0027t want to hide bugs.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e9f64c42d0ba5eb0c78569435ada4c224332ce4",
      "tree": "71df9e94a7f400755bd9ae02ed0c183e429f91cf",
      "parents": [
        "ae52a2adb5afa5ac5ec5fb5c7b24777f84b6c926"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:29 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:38 2011 -0800"
      },
      "message": "thp: fix bad_page to show the real reason the page is bad\n\npage_count shows the count of the head page, but the actual check is done\non the tail page, so show what is really being checked.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ecb256f815232b35ae8382cff36ca8ce0bbd077e",
      "tree": "4f488ba29b5bf860576a3a2e405607a9c32048bf",
      "parents": [
        "dc83edd941f412e938841b4989be24aa288a1aa6"
      ],
      "author": {
        "name": "Volodymyr G. Lukiianyk",
        "email": "volodymyrgl@gmail.com",
        "time": "Thu Jan 13 15:46:26 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:37 2011 -0800"
      },
      "message": "mm: set correct numa_zonelist_order string when configured on the kernel command line\n\nWhen numa_zonelist_order parameter is set to \"node\" or \"zone\" on the\ncommand line it\u0027s still showing as \"default\" in sysctl.  That\u0027s because\nearly_param parsing function changes only user_zonelist_order variable.\nFix this by copying user-provided string to numa_zonelist_order if it was\nsuccessfully parsed.\n\nSigned-off-by: Volodymyr G Lukiianyk \u003cvolodymyrgl@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9950474883e027e6e728cbcff25f7f2bf0c96530",
      "tree": "ecfdd3e68a25f1ef7822428c44f8375efbe9bc0c",
      "parents": [
        "c585a2678d83ba8fb02fa6b197de0ac7d67377f1"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:46:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:37 2011 -0800"
      },
      "message": "mm: kswapd: stop high-order balancing when any suitable zone is balanced\n\nSimon Kirby reported the following problem\n\n   We\u0027re seeing cases on a number of servers where cache never fully\n   grows to use all available memory.  Sometimes we see servers with 4 GB\n   of memory that never seem to have less than 1.5 GB free, even with a\n   constantly-active VM.  In some cases, these servers also swap out while\n   this happens, even though they are constantly reading the working set\n   into memory.  We have been seeing this happening for a long time; I\n   don\u0027t think it\u0027s anything recent, and it still happens on 2.6.36.\n\nAfter some debugging work by Simon, Dave Hansen and others, the prevaling\ntheory became that kswapd is reclaiming order-3 pages requested by SLUB\ntoo aggressive about it.\n\nThere are two apparent problems here.  On the target machine, there is a\nsmall Normal zone in comparison to DMA32.  As kswapd tries to balance all\nzones, it would continually try reclaiming for Normal even though DMA32\nwas balanced enough for callers.  The second problem is that\nsleeping_prematurely() does not use the same logic as balance_pgdat() when\ndeciding whether to sleep or not.  This keeps kswapd artifically awake.\n\nA number of tests were run and the figures from previous postings will\nlook very different for a few reasons.  One, the old figures were forcing\nmy network card to use GFP_ATOMIC in attempt to replicate Simon\u0027s problem.\n Second, I previous specified slub_min_order\u003d3 again in an attempt to\nreproduce Simon\u0027s problem.  In this posting, I\u0027m depending on Simon to say\nwhether his problem is fixed or not and these figures are to show the\nimpact to the ordinary cases.  Finally, the \"vmscan\" figures are taken\nfrom /proc/vmstat instead of the tracepoints.  There is less information\nbut recording is less disruptive.\n\nThe first test of relevance was postmark with a process running in the\nbackground reading a large amount of anonymous memory in blocks.  The\nobjective was to vaguely simulate what was happening on Simon\u0027s machine\nand it\u0027s memory intensive enough to have kswapd awake.\n\nPOSTMARK\n                                            traceonly          kanyzone\nTransactions per second:              156.00 ( 0.00%)   153.00 (-1.96%)\nData megabytes read per second:        21.51 ( 0.00%)    21.52 ( 0.05%)\nData megabytes written per second:     29.28 ( 0.00%)    29.11 (-0.58%)\nFiles created alone per second:       250.00 ( 0.00%)   416.00 (39.90%)\nFiles create/transact per second:      79.00 ( 0.00%)    76.00 (-3.95%)\nFiles deleted alone per second:       520.00 ( 0.00%)   420.00 (-23.81%)\nFiles delete/transact per second:      79.00 ( 0.00%)    76.00 (-3.95%)\n\nMMTests Statistics: duration\nUser/Sys Time Running Test (seconds)         16.58      17.4\nTotal Elapsed Time (seconds)                218.48    222.47\n\nVMstat Reclaim Statistics: vmscan\nDirect reclaims                                  0          4\nDirect reclaim pages scanned                     0        203\nDirect reclaim pages reclaimed                   0        184\nKswapd pages scanned                        326631     322018\nKswapd pages reclaimed                      312632     309784\nKswapd low wmark quickly                         1          4\nKswapd high wmark quickly                      122        475\nKswapd skip congestion_wait                      1          0\nPages activated                             700040     705317\nPages deactivated                           212113     203922\nPages written                                 9875       6363\n\nTotal pages scanned                         326631    322221\nTotal pages reclaimed                       312632    309968\n%age total pages scanned/reclaimed          95.71%    96.20%\n%age total pages scanned/written             3.02%     1.97%\n\nproc vmstat: Faults\nMajor Faults                                   300       254\nMinor Faults                                645183    660284\nPage ins                                    493588    486704\nPage outs                                  4960088   4986704\nSwap ins                                      1230       661\nSwap outs                                     9869      6355\n\nPerformance is mildly affected because kswapd is no longer doing as much\nwork and the background memory consumer process is getting in the way.\nNote that kswapd scanned and reclaimed fewer pages as it\u0027s less aggressive\nand overall fewer pages were scanned and reclaimed.  Swap in/out is\nparticularly reduced again reflecting kswapd throwing out fewer pages.\n\nThe slight performance impact is unfortunate here but it looks like a\ndirect result of kswapd being less aggressive.  As the bug report is about\ntoo many pages being freed by kswapd, it may have to be accepted for now.\n\nThe second test is a streaming IO benchmark that was previously used by\nJohannes to show regressions in page reclaim.\n\nMICRO\n\t\t\t\t\t traceonly  kanyzone\nUser/Sys Time Running Test (seconds)         29.29     28.87\nTotal Elapsed Time (seconds)                492.18    488.79\n\nVMstat Reclaim Statistics: vmscan\nDirect reclaims                               2128       1460\nDirect reclaim pages scanned               2284822    1496067\nDirect reclaim pages reclaimed              148919     110937\nKswapd pages scanned                      15450014   16202876\nKswapd pages reclaimed                     8503697    8537897\nKswapd low wmark quickly                      3100       3397\nKswapd high wmark quickly                     1860       7243\nKswapd skip congestion_wait                    708        801\nPages activated                               9635       9573\nPages deactivated                             1432       1271\nPages written                                  223       1130\n\nTotal pages scanned                       17734836  17698943\nTotal pages reclaimed                      8652616   8648834\n%age total pages scanned/reclaimed          48.79%    48.87%\n%age total pages scanned/written             0.00%     0.01%\n\nproc vmstat: Faults\nMajor Faults                                   165       221\nMinor Faults                               9655785   9656506\nPage ins                                      3880      7228\nPage outs                                 37692940  37480076\nSwap ins                                         0        69\nSwap outs                                       19        15\n\nAgain fewer pages are scanned and reclaimed as expected and this time the\ntest completed faster.  Note that kswapd is hitting its watermarks faster\n(low and high wmark quickly) which I expect is due to kswapd reclaiming\nfewer pages.\n\nI also ran fs-mark, iozone and sysbench but there is nothing interesting\nto report in the figures.  Performance is not significantly changed and\nthe reclaim statistics look reasonable.\n\nTgis patch:\n\nWhen the allocator enters its slow path, kswapd is woken up to balance the\nnode.  It continues working until all zones within the node are balanced.\nFor order-0 allocations, this makes perfect sense but for higher orders it\ncan have unintended side-effects.  If the zone sizes are imbalanced,\nkswapd may reclaim heavily within a smaller zone discarding an excessive\nnumber of pages.  The user-visible behaviour is that kswapd is awake and\nreclaiming even though plenty of pages are free from a suitable zone.\n\nThis patch alters the \"balance\" logic for high-order reclaim allowing\nkswapd to stop if any suitable zone becomes balanced to reduce the number\nof pages it reclaims from other zones.  kswapd still tries to ensure that\norder-0 watermarks for all zones are met before sleeping.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Simon Kirby \u003csim@hostway.ca\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "77f1fe6b08b13a87391549c8a820ddc817b6f50e",
      "tree": "720865bd0994da3787b6f37d33b2ee4c26a2de6c",
      "parents": [
        "3e7d344970673c5334cf7b5bb27c8c0942b06126"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:57 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:34 2011 -0800"
      },
      "message": "mm: migration: allow migration to operate asynchronously and avoid synchronous compaction in the faster path\n\nMigration synchronously waits for writeback if the initial passes fails.\nCallers of memory compaction do not necessarily want this behaviour if the\ncaller is latency sensitive or expects that synchronous migration is not\ngoing to have a significantly better success rate.\n\nThis patch adds a sync parameter to migrate_pages() allowing the caller to\nindicate if wait_on_page_writeback() is allowed within migration or not.\nFor reclaim/compaction, try_to_compact_pages() is first called\nasynchronously, direct reclaim runs and then try_to_compact_pages() is\ncalled synchronously as there is a greater expectation that it\u0027ll succeed.\n\n[akpm@linux-foundation.org: build/merge fix]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e7d344970673c5334cf7b5bb27c8c0942b06126",
      "tree": "832ecb4da5fd27efa5a503df5b96bfdee2a52ffd",
      "parents": [
        "ee64fc9354e515a79c7232cfde65c88ec627308b"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:33 2011 -0800"
      },
      "message": "mm: vmscan: reclaim order-0 and use compaction instead of lumpy reclaim\n\nLumpy reclaim is disruptive.  It reclaims a large number of pages and\nignores the age of the pages it reclaims.  This can incur significant\nstalls and potentially increase the number of major faults.\n\nCompaction has reached the point where it is considered reasonably stable\n(meaning it has passed a lot of testing) and is a potential candidate for\ndisplacing lumpy reclaim.  This patch introduces an alternative to lumpy\nreclaim whe compaction is available called reclaim/compaction.  The basic\noperation is very simple - instead of selecting a contiguous range of\npages to reclaim, a number of order-0 pages are reclaimed and then\ncompaction is later by either kswapd (compact_zone_order()) or direct\ncompaction (__alloc_pages_direct_compact()).\n\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: use conventional task_struct naming]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "88f5acf88ae6a9778f6d25d0d5d7ec2d57764a97"
}
