)]}'
{
  "log": [
    {
      "commit": "5c4b4be3b6b937256103a5ae49177e0c3a17cb8f",
      "tree": "f0b7a74e61af26576e48581b70b7bad0a82d0ee7",
      "parents": [
        "19ee151e140daa5183c4984981801e542e0544fb"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Mar 04 17:36:32 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 04 17:53:39 2011 -0800"
      },
      "message": "mm: use correct numa policy node for transparent hugepages\n\nPass down the correct node for a transparent hugepage allocation.  Most\ncallers continue to use the current node, however the hugepaged daemon\nnow uses the previous node of the first to be collapsed page instead.\nThis ensures that khugepaged does not mess up local memory for an\nexisting process which uses local policy.\n\nThe choice of node is somewhat primitive currently: it just uses the\nnode of the first page in the pmd range.  An alternative would be to\nlook at multiple pages and use the most popular node.  I used the\nsimplest variant for now which should work well enough for the case of\nall pages being on the same node.\n\n[akpm@linux-foundation.org: coding-style fixes]\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\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": "19ee151e140daa5183c4984981801e542e0544fb",
      "tree": "a3fbc4d50bec3a52dd90211e78289542f4b930ef",
      "parents": [
        "236344d6b417d05a3080477639234fd9ca97568d"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Mar 04 17:36:31 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 04 17:53:39 2011 -0800"
      },
      "message": "mm: preserve original node for transparent huge page copies\n\nThis makes a difference for LOCAL policy, where the node cannot be\ndetermined from the policy itself, but has to be gotten from the original\npage.\n\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\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": "2f5f9486f8c12e3aa40fe3775a18cb14efc5cea2",
      "tree": "362c21544db1bc65ffb65abf9f2b41b63621a124",
      "parents": [
        "b8bc1dd39722f7c306435d0682e9bf81abf52105"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Mar 04 17:36:29 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 04 17:53:39 2011 -0800"
      },
      "message": "mm: change alloc_pages_vma to pass down the policy node for local policy\n\nCurrently alloc_pages_vma() always uses the local node as policy node for\nthe LOCAL policy.  Pass this node down as an argument instead.\n\nNo behaviour change from this patch, but will be needed for followons.\n\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\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": "e5598f8bf5449bc09e4005600ead32e6f2a3e79b",
      "tree": "c9c26f9274668d2d47e444d512b2d3d892f9c314",
      "parents": [
        "8eac563c1c3a2047083022357ae63722b19e4e08"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Fri Feb 25 14:44:29 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 25 15:07:37 2011 -0800"
      },
      "message": "memcg: more mem_cgroup_uncharge() batching\n\nIt seems odd that truncate_inode_pages_range(), called not only when\ntruncating but also when evicting inodes, has mem_cgroup_uncharge_start\nand _end() batching in its second loop to clear up a few leftovers, but\nnot in its first loop that does almost all the work: add them there too.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8eac563c1c3a2047083022357ae63722b19e4e08",
      "tree": "724280edfbf6bd8206b0cc0337ee242d2a2518e0",
      "parents": [
        "7137c6bd455234bcb7560fd829e6ee49cae5fed6"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Feb 25 14:44:28 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 25 15:07:37 2011 -0800"
      },
      "message": "thp: fix interleaving for transparent hugepages\n\nThe THP code didn\u0027t pass the correct interleaving shift to the memory\npolicy code.  Fix this here by adjusting for the order.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nAcked-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": "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": "2876592f231d436c295b67726313f6f3cfb6e243",
      "tree": "e53c6db2aed6e672481c31083287d79f32ad45f4",
      "parents": [
        "ac3c8304190ed0daaa2fb01ce2a069be5e2a52a7"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Fri Feb 25 14:44:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 25 15:07:36 2011 -0800"
      },
      "message": "mm: vmscan: stop reclaim/compaction earlier due to insufficient progress if !__GFP_REPEAT\n\nshould_continue_reclaim() for reclaim/compaction allows scanning to\ncontinue even if pages are not being reclaimed until the full list is\nscanned.  In terms of allocation success, this makes sense but potentially\nit introduces unwanted latency for high-order allocations such as\ntransparent hugepages and network jumbo frames that would prefer to fail\nthe allocation attempt and fallback to order-0 pages.  Worse, there is a\npotential that the full LRU scan will clear all the young bits, distort\npage aging information and potentially push pages into swap that would\nhave otherwise remained resident.\n\nThis patch will stop reclaim/compaction if no pages were reclaimed in the\nlast SWAP_CLUSTER_MAX pages that were considered.  For allocations such as\nhugetlbfs that use __GFP_REPEAT and have fewer fallback options, the full\nLRU list may still be scanned.\n\nOrder-0 allocation should not be affected because RECLAIM_MODE_COMPACTION\nis not set so the following avoids the gfp_mask being examined:\n\n        if (!(sc-\u003ereclaim_mode \u0026 RECLAIM_MODE_COMPACTION))\n                return false;\n\nA tool was developed based on ftrace that tracked the latency of\nhigh-order allocations while transparent hugepage support was enabled and\nthree benchmarks were run.  The \"fix-infinite\" figures are 2.6.38-rc4 with\nJohannes\u0027s patch \"vmscan: fix zone shrinking exit when scan work is done\"\napplied.\n\n  STREAM Highorder Allocation Latency Statistics\n                 fix-infinite     break-early\n  1 :: Count            10298           10229\n  1 :: Min             0.4560          0.4640\n  1 :: Mean            1.0589          1.0183\n  1 :: Max            14.5990         11.7510\n  1 :: Stddev          0.5208          0.4719\n  2 :: Count                2               1\n  2 :: Min             1.8610          3.7240\n  2 :: Mean            3.4325          3.7240\n  2 :: Max             5.0040          3.7240\n  2 :: Stddev          1.5715          0.0000\n  9 :: Count           111696          111694\n  9 :: Min             0.5230          0.4110\n  9 :: Mean           10.5831         10.5718\n  9 :: Max            38.4480         43.2900\n  9 :: Stddev          1.1147          1.1325\n\nMean time for order-1 allocations is reduced.  order-2 looks increased but\nwith so few allocations, it\u0027s not particularly significant.  THP mean\nallocation latency is also reduced.  That said, allocation time varies so\nsignificantly that the reductions are within noise.\n\nMax allocation time is reduced by a significant amount for low-order\nallocations but reduced for THP allocations which presumably are now\nbreaking before reclaim has done enough work.\n\n  SysBench Highorder Allocation Latency Statistics\n                 fix-infinite     break-early\n  1 :: Count            15745           15677\n  1 :: Min             0.4250          0.4550\n  1 :: Mean            1.1023          1.0810\n  1 :: Max            14.4590         10.8220\n  1 :: Stddev          0.5117          0.5100\n  2 :: Count                1               1\n  2 :: Min             3.0040          2.1530\n  2 :: Mean            3.0040          2.1530\n  2 :: Max             3.0040          2.1530\n  2 :: Stddev          0.0000          0.0000\n  9 :: Count             2017            1931\n  9 :: Min             0.4980          0.7480\n  9 :: Mean           10.4717         10.3840\n  9 :: Max            24.9460         26.2500\n  9 :: Stddev          1.1726          1.1966\n\nAgain, mean time for order-1 allocations is reduced while order-2\nallocations are too few to draw conclusions from.  The mean time for THP\nallocations is also slightly reduced albeit the reductions are within\nvarianes.\n\nOnce again, our maximum allocation time is significantly reduced for\nlow-order allocations and slightly increased for THP allocations.\n\n  Anon stream mmap reference Highorder Allocation Latency Statistics\n  1 :: Count             1376            1790\n  1 :: Min             0.4940          0.5010\n  1 :: Mean            1.0289          0.9732\n  1 :: Max             6.2670          4.2540\n  1 :: Stddev          0.4142          0.2785\n  2 :: Count                1               -\n  2 :: Min             1.9060               -\n  2 :: Mean            1.9060               -\n  2 :: Max             1.9060               -\n  2 :: Stddev          0.0000               -\n  9 :: Count            11266           11257\n  9 :: Min             0.4990          0.4940\n  9 :: Mean        27250.4669      24256.1919\n  9 :: Max      11439211.0000    6008885.0000\n  9 :: Stddev     226427.4624     186298.1430\n\nThis benchmark creates one thread per CPU which references an amount of\nanonymous memory 1.5 times the size of physical RAM.  This pounds swap\nquite heavily and is intended to exercise THP a bit.\n\nMean allocation time for order-1 is reduced as before.  It\u0027s also reduced\nfor THP allocations but the variations here are pretty massive due to\nswap.  As before, maximum allocation times are significantly reduced.\n\nOverall, the patch reduces the mean and maximum allocation latencies for\nthe smaller high-order allocations.  This was with Slab configured so it\nwould be expected to be more significant with Slub which uses these size\nallocations more aggressively.\n\nThe mean allocation times for THP allocations are also slightly reduced.\nThe maximum latency was slightly increased as predicted by the comments\ndue to reclaim/compaction breaking early.  However, workloads care more\nabout the latency of lower-order allocations than THP so it\u0027s an\nacceptable trade-off.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Kent Overstreet \u003ckent.overstreet@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": "a879bf582dfb3a79d30d76ca3af2ae8a0f39010c",
      "tree": "6ca0b3f361f80a1a996af0d46378ae5943098656",
      "parents": [
        "22bacca48a1755f79b7e0f192ddb9fbb7fc6e64e"
      ],
      "author": {
        "name": "Greg Thelen",
        "email": "gthelen@google.com",
        "time": "Fri Feb 25 14:44:13 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 25 15:07:36 2011 -0800"
      },
      "message": "mm: grab rcu read lock in move_pages()\n\nThe move_pages() usage of find_task_by_vpid() requires rcu_read_lock() to\nprevent free_pid() from reclaiming the pid.\n\nWithout this patch, RCU warnings are printed in v2.6.38-rc4 move_pages()\nwith:\n\n  CONFIG_LOCKUP_DETECTOR\u003dy\n  CONFIG_PREEMPT\u003dy\n  CONFIG_LOCKDEP\u003dy\n  CONFIG_PROVE_LOCKING\u003dy\n  CONFIG_PROVE_RCU\u003dy\n\nPreviously, migrate_pages() went through a similar transformation\nreplacing usage of tasklist_lock with rcu read lock:\n\n  commit 55cfaa3cbdd29c4919ecb5fb8965c310f357e48c\n  Author: Zeng Zhaoming \u003czengzm.kernel@gmail.com\u003e\n  Date:   Thu Dec 2 14:31:13 2010 -0800\n\n      mm/mempolicy.c: add rcu read lock to protect pid structure\n\n  commit 1e50df39f6e2c3a4a3394df62baa8a213df16c54\n  Author: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\n  Date:   Thu Jan 13 15:46:14 2011 -0800\n\n      mempolicy: remove tasklist_lock from migrate_pages\n\nSigned-off-by: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Zeng Zhaoming \u003czengzm.kernel@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": "8074b26f67165bf045d92e778c9c10dc5e207fc6",
      "tree": "7f4870224b54121fbfea83cd77ea41f7ab3a00d8",
      "parents": [
        "3c522cedb572bb8d2e4867f358bdaa7d0c53d88c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Feb 24 15:49:53 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 24 08:55:01 2011 -0800"
      },
      "message": "mm: fix refcounting in swapon\n\nGrab a reference to bdev before calling blkdev_get(), which expects\nthe refcount to be already incremented and either returns success or\ndecrements the refcount and returns an error.\n\nThe bug was introduced by e525fd89 (block: make blkdev_get/put()\nhandle exclusive access), which didn\u0027t take into account this behavior\nof blkdev_get().\n\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3e8cc643d22d2c8ed36b9be7d9c9ca21efcf7f7",
      "tree": "d3a10397009baeb3cb1802286049111536dbc221",
      "parents": [
        "2aa15890f3c191326678f1bd68af61ec6b8753ec"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Feb 23 21:39:49 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 23 21:55:06 2011 -0800"
      },
      "message": "mm: fix possible cause of a page_mapped BUG\n\nRobert Swiecki reported a BUG_ON(page_mapped) from a fuzzer, punching\na hole with madvise(,, MADV_REMOVE).  That path is under mutex, and\ncannot be explained by lack of serialization in unmap_mapping_range().\n\nReviewing the code, I found one place where vm_truncate_count handling\nshould have been updated, when I switched at the last minute from one\nway of managing the restart_addr to another: mremap move changes the\nvirtual addresses, so it ought to adjust the restart_addr.\n\nBut rather than exporting the notion of restart_addr from memory.c, or\nconverting to restart_pgoff throughout, simply reset vm_truncate_count\nto 0 to force a rescan if mremap move races with preempted truncation.\n\nWe have no confirmation that this fixes Robert\u0027s BUG,\nbut it is a fix that\u0027s worth making anyway.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2aa15890f3c191326678f1bd68af61ec6b8753ec",
      "tree": "347f5fdcd0678b12be92f266cd2a5e7a74749403",
      "parents": [
        "78794b2cdeac37ac1fd950fc9c4454b56d88ac03"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Feb 23 13:49:47 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 23 19:52:52 2011 -0800"
      },
      "message": "mm: prevent concurrent unmap_mapping_range() on the same inode\n\nMichael Leun reported that running parallel opens on a fuse filesystem\ncan trigger a \"kernel BUG at mm/truncate.c:475\"\n\nGurudas Pai reported the same bug on NFS.\n\nThe reason is, unmap_mapping_range() is not prepared for more than\none concurrent invocation per inode.  For example:\n\n  thread1: going through a big range, stops in the middle of a vma and\n     stores the restart address in vm_truncate_count.\n\n  thread2: comes in with a small (e.g. single page) unmap request on\n     the same vma, somewhere before restart_address, finds that the\n     vma was already unmapped up to the restart address and happily\n     returns without doing anything.\n\nAnother scenario would be two big unmap requests, both having to\nrestart the unmapping and each one setting vm_truncate_count to its\nown value.  This could go on forever without any of them being able to\nfinish.\n\nTruncate and hole punching already serialize with i_mutex.  Other\ncallers of unmap_mapping_range() do not, and it\u0027s difficult to get\ni_mutex protection for all callers.  In particular -\u003ed_revalidate(),\nwhich calls invalidate_inode_pages2_range() in fuse, may be called\nwith or without i_mutex.\n\nThis patch adds a new mutex to \u0027struct address_space\u0027 to prevent\nrunning multiple concurrent unmap_mapping_range() on the same mapping.\n\n[ We\u0027ll hopefully get rid of all this with the upcoming mm\n  preemptibility series by Peter Zijlstra, the \"mm: Remove i_mmap_mutex\n  lockbreak\" patch in particular.  But that is for 2.6.39 ]\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nReported-by: Michael Leun \u003clkml20101129@newton.leun.net\u003e\nReported-by: Gurudas Pai \u003cgurudas.pai@oracle.com\u003e\nTested-by: Gurudas Pai \u003cgurudas.pai@oracle.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a7d6e4ecdb7648478ddec76d30d87d03d6e22b31",
      "tree": "1e0110780ac0a8eeef2629e1d5880602bd6003c0",
      "parents": [
        "09f586b35d8503b57de1e0e9b19bc6b38e0d7319"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Tue Feb 15 19:02:45 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 15 15:21:11 2011 -0800"
      },
      "message": "thp: prevent hugepages during args/env copying into the user stack\n\nTransparent hugepages can only be created if rmap is fully\nfunctional. So we must prevent hugepages to be created while\nis_vma_temporary_stack() is true.\n\nThis also optmizes away some harmless but unnecessary setting of\nkhugepaged_scan.address and it switches some BUG_ON to VM_BUG_ON.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "678ff896a37afdbca292c7846ec895463aed35a5",
      "tree": "40c25f8195b5291938bde28030c5c7440e504d31",
      "parents": [
        "f0fdc5e8e6f579310458aef43d1610a0bb5e81a4"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Feb 10 15:01:36 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 11 16:12:20 2011 -0800"
      },
      "message": "memcg: fix leak of accounting at failure path of hugepage collapsing\n\nmem_cgroup_uncharge_page() should be called in all failure cases after\nmem_cgroup_charge_newpage() is called in huge_memory.c::collapse_huge_page()\n\n [ 4209.076861] BUG: Bad page state in process khugepaged  pfn:1e9800\n [ 4209.077601] page:ffffea0006b14000 count:0 mapcount:0 mapping:          (null) index:0x2800\n [ 4209.078674] page flags: 0x40000000004000(head)\n [ 4209.079294] pc:ffff880214a30000 pc-\u003eflags:2146246697418756 pc-\u003emem_cgroup:ffffc9000177a000\n [ 4209.082177] (/A)\n [ 4209.082500] Pid: 31, comm: khugepaged Not tainted 2.6.38-rc3-mm1 #1\n [ 4209.083412] Call Trace:\n [ 4209.083678]  [\u003cffffffff810f4454\u003e] ? bad_page+0xe4/0x140\n [ 4209.084240]  [\u003cffffffff810f53e6\u003e] ? free_pages_prepare+0xd6/0x120\n [ 4209.084837]  [\u003cffffffff8155621d\u003e] ? rwsem_down_failed_common+0xbd/0x150\n [ 4209.085509]  [\u003cffffffff810f5462\u003e] ? __free_pages_ok+0x32/0xe0\n [ 4209.086110]  [\u003cffffffff810f552b\u003e] ? free_compound_page+0x1b/0x20\n [ 4209.086699]  [\u003cffffffff810fad6c\u003e] ? __put_compound_page+0x1c/0x30\n [ 4209.087333]  [\u003cffffffff810fae1d\u003e] ? put_compound_page+0x4d/0x200\n [ 4209.087935]  [\u003cffffffff810fb015\u003e] ? put_page+0x45/0x50\n [ 4209.097361]  [\u003cffffffff8113f779\u003e] ? khugepaged+0x9e9/0x1430\n [ 4209.098364]  [\u003cffffffff8107c870\u003e] ? autoremove_wake_function+0x0/0x40\n [ 4209.099121]  [\u003cffffffff8113ed90\u003e] ? khugepaged+0x0/0x1430\n [ 4209.099780]  [\u003cffffffff8107c236\u003e] ? kthread+0x96/0xa0\n [ 4209.100452]  [\u003cffffffff8100dda4\u003e] ? kernel_thread_helper+0x4/0x10\n [ 4209.101214]  [\u003cffffffff8107c1a0\u003e] ? kthread+0x0/0xa0\n [ 4209.101842]  [\u003cffffffff8100dda0\u003e] ? kernel_thread_helper+0x0/0x10\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\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": "f0fdc5e8e6f579310458aef43d1610a0bb5e81a4",
      "tree": "c3f9de434bf9065d2f1d7a5f4214f28efb4920c4",
      "parents": [
        "419d8c96dbfa558f00e623023917d0a5afc46129"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Thu Feb 10 15:01:34 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 11 16:12:20 2011 -0800"
      },
      "message": "vmscan: fix zone shrinking exit when scan work is done\n\nCommit 3e7d34497067 (\"mm: vmscan: reclaim order-0 and use compaction\ninstead of lumpy reclaim\") introduced an indefinite loop in\nshrink_zone().\n\nIt meant to break out of this loop when no pages had been reclaimed and\nnot a single page was even scanned.  The way it would detect the latter\nis by taking a snapshot of sc-\u003enr_scanned at the beginning of the\nfunction and comparing it against the new sc-\u003enr_scanned after the scan\nloop.  But it would re-iterate without updating that snapshot, looping\nforever if sc-\u003enr_scanned changed at least once since shrink_zone() was\ninvoked.\n\nThis is not the sole condition that would exit that loop, but it\nrequires other processes to change the zone state, as the reclaimer that\nis stuck obviously can not anymore.\n\nThis is only happening for higher-order allocations, where reclaim is\nrun back to back with compaction.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReported-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nTested-by: Kent Overstreet\u003ckent.overstreet@gmail.com\u003e\nReported-by: Kent Overstreet \u003ckent.overstreet@gmail.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\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": "419d8c96dbfa558f00e623023917d0a5afc46129",
      "tree": "74882b1ed7340d3d0e448b343c52fd12969ea518",
      "parents": [
        "e15f8c01af924e611bc7be1e45449c4a74e5dfdd"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Thu Feb 10 15:01:33 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 11 16:12:20 2011 -0800"
      },
      "message": "mlock: do not munlock pages in __do_fault()\n\nIf the page is going to be written to, __do_page needs to break COW.\n\nHowever, the old page (before breaking COW) was never mapped mapped into\nthe current pte (__do_fault is only called when the pte is not present),\nso vmscan can\u0027t have marked the old page as PageMlocked due to being\nmapped in __do_fault\u0027s VMA.  Therefore, __do_fault() does not need to\nworry about clearing PageMlocked() on the old page.\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.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": "e15f8c01af924e611bc7be1e45449c4a74e5dfdd",
      "tree": "7319b3d6834707996b16fd8d13ab745ad9b13a91",
      "parents": [
        "e6d2e2b2b1e1455df16d68a78f4a3874c7b3ad20"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Thu Feb 10 15:01:32 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 11 16:12:20 2011 -0800"
      },
      "message": "mlock: fix race when munlocking pages in do_wp_page()\n\nvmscan can lazily find pages that are mapped within VM_LOCKED vmas, and\nset the PageMlocked bit on these pages, transfering them onto the\nunevictable list.  When do_wp_page() breaks COW within a VM_LOCKED vma,\nit may need to clear PageMlocked on the old page and set it on the new\npage instead.\n\nThis change fixes an issue where do_wp_page() was clearing PageMlocked\non the old page while the pte was still pointing to it (as well as\nrmap).  Therefore, we were not protected against vmscan immediately\ntransfering the old page back onto the unevictable list.  This could\ncause pages to get stranded there forever.\n\nI propose to move the corresponding code to the end of do_wp_page(),\nafter the pte (and rmap) have been pointed to the new page.\nAdditionally, we can use munlock_vma_page() instead of\nclear_page_mlock(), so that the old page stays mlocked if there are\nstill other VM_LOCKED vmas mapping it.\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.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": "e6d2e2b2b1e1455df16d68a78f4a3874c7b3ad20",
      "tree": "1e7ebb055743db7638269a55b890d41de2b799ae",
      "parents": [
        "de1f016f882e52facc3c8609599f827bcdd14af9"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Thu Feb 10 15:01:30 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 11 16:12:20 2011 -0800"
      },
      "message": "memblock: don\u0027t adjust size in memblock_find_base()\n\nWhile applying patch to use memblock to find aperture for 64bit x86.\nIngo found system with 1g + force_iommu\n\n\u003e No AGP bridge found\n\u003e Node 0: aperture @ 38000000 size 32 MB\n\u003e Aperture pointing to e820 RAM. Ignoring.\n\u003e Your BIOS doesn\u0027t leave a aperture memory hole\n\u003e Please enable the IOMMU option in the BIOS setup\n\u003e This costs you 64 MB of RAM\n\u003e Cannot allocate aperture memory hole (0,65536K)\n\nthe corresponding code:\n\n\taddr \u003d memblock_find_in_range(0, 1ULL\u003c\u003c32, aper_size, 512ULL\u003c\u003c20);\n\tif (addr \u003d\u003d MEMBLOCK_ERROR || addr + aper_size \u003e 0xffffffff) {\n\t\tprintk(KERN_ERR\n\t\t\t\"Cannot allocate aperture memory hole (%lx,%uK)\\n\",\n\t\t\t\taddr, aper_size\u003e\u003e10);\n\t\treturn 0;\n\t}\n\tmemblock_x86_reserve_range(addr, addr + aper_size, \"aperture64\")\n\nfails because memblock core code align the size with 512M.  That could\nmake size way too big.\n\nSo don\u0027t align the size in that case.\n\nactually __memblock_alloc_base, the another caller already align that\nbefore calling that function.\n\nBTW. x86 does not use __memblock_alloc_base...\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Dave Airlie \u003cairlied@linux.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3751d60430fe4c26460a5ca8ad8672d32f93bcb1",
      "tree": "f0bbefb76a4fc328ca441bd71fc49a5a091bb323",
      "parents": [
        "8493ae439f7038b502df1d687e61dde54c27ca92"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Feb 01 15:52:45 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:19 2011 -0800"
      },
      "message": "memcg: fix event counting breakage from recent THP update\n\nChanges in e401f1761 (\"memcg: modify accounting function for supporting\nTHP better\") adds nr_pages to support multiple page size in\nmemory_cgroup_charge_statistics.\n\nBut counting the number of event nees abs(nr_pages) for increasing\ncounters.  This patch fixes event counting.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.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": "8493ae439f7038b502df1d687e61dde54c27ca92",
      "tree": "ba8dafa7eb3292c8d2ca4597ef6f2f06c7dcd6a6",
      "parents": [
        "19942822df65ee4a47c2e6d6d70cace1b7f01710"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Feb 01 15:52:44 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:19 2011 -0800"
      },
      "message": "memcg: never OOM when charging huge pages\n\nHuge page coverage should obviously have less priority than the continued\nexecution of a process.\n\nNever kill a process when charging it a huge page fails.  Instead, give up\nafter the first failed reclaim attempt and fall back to regular pages.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "19942822df65ee4a47c2e6d6d70cace1b7f01710",
      "tree": "1fe6fdcc92ae7e64014c04676fc91e0105bdf344",
      "parents": [
        "9221edb7120e2dc3ae90f1c58514979f7ba40e46"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Feb 01 15:52:43 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:19 2011 -0800"
      },
      "message": "memcg: prevent endless loop when charging huge pages to near-limit group\n\nIf reclaim after a failed charging was unsuccessful, the limits are\nchecked again, just in case they settled by means of other tasks.\n\nThis is all fine as long as every charge is of size PAGE_SIZE, because in\nthat case, being below the limit means having at least PAGE_SIZE bytes\navailable.\n\nBut with transparent huge pages, we may end up in an endless loop where\ncharging and reclaim fail, but we keep going because the limits are not\nyet exceeded, although not allowing for a huge page.\n\nFix this up by explicitely checking for enough room, not just whether we\nare within limits.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9221edb7120e2dc3ae90f1c58514979f7ba40e46",
      "tree": "73818b41f9b7d73cc20fb9f4efbbe73a89b25058",
      "parents": [
        "af241a083404acda7ba3690e5b7697949d729fcc"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Feb 01 15:52:42 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:19 2011 -0800"
      },
      "message": "memcg: prevent endless loop when charging huge pages\n\nThe charging code can encounter a charge size that is bigger than a\nregular page in two situations: one is a batched charge to fill the\nper-cpu stocks, the other is a huge page charge.\n\nThis code is distributed over two functions, however, and only the outer\none is aware of huge pages.  In case the charging fails, the inner\nfunction will tell the outer function to retry if the charge size is\nbigger than regular pages--assuming batched charging is the only case.\nAnd the outer function will retry forever charging a huge page.\n\nThis patch makes sure the inner function can distinguish between batch\ncharging and a single huge page charge.  It will only signal another\nattempt if batch charging failed, and go into regular reclaim when it is\ncalled on behalf of a huge page.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af241a083404acda7ba3690e5b7697949d729fcc",
      "tree": "f299ac844b38bc9a82e1477d8ef16648898f5584",
      "parents": [
        "a6d30dddae4648837be5a0c0cb2c0ae9ad0377db"
      ],
      "author": {
        "name": "Jin Dongming",
        "email": "jin.dongming@np.css.fujitsu.com",
        "time": "Tue Feb 01 15:52:41 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:19 2011 -0800"
      },
      "message": "thp: fix unsuitable behavior for hwpoisoned tail page\n\nWhen a tail page of THP is poisoned, memory-failure will do nothing except\nsetting PG_hwpoison, while the expected behavior is that the process, who\nis using the poisoned tail page, should be killed.\n\nThe above problem is caused by lru check of the poisoned tail page of THP.\nBecause PG_lru flag is only set on the head page of THP, the check always\nconsider the poisoned tail page as NON lru page.\n\nSo the lru check for the tail page of THP should be avoided, as like as\nhugetlb.\n\nThis patch adds !PageTransCompound() before lru check for THP, because of\nthe check (!PageHuge() \u0026\u0026 !PageTransCompound()) the whole branch could be\noptimized away at build time when both hugetlbfs and THP are set with \"N\"\n(or in archs not supporting either of those).\n\n[akpm@linux-foundation.org: fix unrelated typo in shake_page() comment]\nSigned-off-by: Jin Dongming \u003cjin.dongming@np.css.fujitsu.com\u003e\nReviewed-by: Hidetoshi Seto \u003cseto.hidetoshi@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a6d30dddae4648837be5a0c0cb2c0ae9ad0377db",
      "tree": "f04020b0442b8bfce45e159bde01a61f01c39c30",
      "parents": [
        "efeda7a41e09efce506a68c3549b60b16dd7dedd"
      ],
      "author": {
        "name": "Jin Dongming",
        "email": "jin.dongming@np.css.fujitsu.com",
        "time": "Tue Feb 01 15:52:40 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:19 2011 -0800"
      },
      "message": "thp: fix the wrong reported address of hwpoisoned hugepages\n\nWhen the tail page of THP is poisoned, the head page will be poisoned too.\n And the wrong address, address of head page, will be sent with sigbus\nalways.\n\nSo when the poisoned page is used by Guest OS which is running on KVM,\nafter the address changing(hva-\u003egpa) by qemu, the unexpected process on\nGuest OS will be killed by sigbus.\n\nWhat we expected is that the process using the poisoned tail page could be\nkilled on Guest OS, but not that the process using the healthy head page\nis killed.\n\nSince it is not good to poison the healthy page, avoid poisoning other\nthan the page which is really poisoned.\n  (While we poison all pages in a huge page in case of hugetlb,\n   we can do this for THP thanks to split_huge_page().)\n\nHere we fix two parts:\n  1. Isolate the poisoned page only to make sure\n     the reported address is the address of poisoned page.\n  2. make the poisoned page work as the poisoned regular page.\n\n[akpm@linux-foundation.org: fix spello in comment]\nSigned-off-by: Jin Dongming \u003cjin.dongming@np.css.fujitsu.com\u003e\nReviewed-by: Hidetoshi Seto \u003cseto.hidetoshi@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "efeda7a41e09efce506a68c3549b60b16dd7dedd",
      "tree": "aac3a6e4b1635dd4652bac9e4c3a94ff3962fe2e",
      "parents": [
        "b16957c643de958ef731c03e0b24c5537490f196"
      ],
      "author": {
        "name": "Jin Dongming",
        "email": "jin.dongming@np.css.fujitsu.com",
        "time": "Tue Feb 01 15:52:39 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:19 2011 -0800"
      },
      "message": "thp: fix splitting of hwpoisoned hugepages\n\nThe poisoned THP is now split with split_huge_page() in\ncollect_procs_anon().  If kmalloc() is failed in collect_procs(),\nsplit_huge_page() could not be called.  And the work after\nsplit_huge_page() for collecting the processes using poisoned page will\nnot be done, too.  So the processes using the poisoned page could not be\nkilled.\n\nThe condition becomes worse when CONFIG_DEBUG_VM \u003d\u003d \"Y\".  Because the\npoisoned THP could not be split, system panic will be caused by\nVM_BUG_ON(PageTransHuge(page)) in try_to_unmap().\n\nThis patch does:\n  1. move split_huge_page() to the place before collect_procs().\n     This can be sure the failure of splitting THP is caused by itself.\n  2. when splitting THP is failed, stop the operations after it.\n     This can avoid unexpected system panic or non sense works.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Jin Dongming \u003cjin.dongming@np.css.fujitsu.com\u003e\nReviewed-by: Hidetoshi Seto \u003cseto.hidetoshi@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "48db54ee2f41e8ae2faf330b55db34a9fffb5b3c",
      "tree": "5cdf936bf6996e379784e0b75b982a364f437368",
      "parents": [
        "57fc4a5ee322cde96c33f101d3c2d3b79011c05c"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Tue Feb 01 15:52:33 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:18 2011 -0800"
      },
      "message": "mm/migration: fix page corruption during hugepage migration\n\nIf migrate_huge_page by memory-failure fails , it calls put_page in itself\nto decrease page reference and caller of migrate_huge_page also calls\nputback_lru_pages.  It can do double free of page so it can make page\ncorruption on page holder.\n\nIn addtion, clean of pages on caller is consistent behavior with\nmigrate_pages by cf608ac19c (\"mm: compaction: fix COMPACTPAGEFAILED\ncounting\").\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Christoph Lameter \u003ccl@linux.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": "57fc4a5ee322cde96c33f101d3c2d3b79011c05c",
      "tree": "dc0fbf22dc90c93690de7cf0d115e5499222ff04",
      "parents": [
        "552b372ba9db85751e7db2998f07cca2e51f5865"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Tue Feb 01 15:52:32 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:18 2011 -0800"
      },
      "message": "mm: when migrate_pages returns 0, all pages must have been released\n\nIn some cases migrate_pages could return zero while still leaving a few\npages in the pagelist (and some caller wouldn\u0027t notice it has to call\nputback_lru_pages after commit cf608ac19c9 (\"mm: compaction: fix\nCOMPACTPAGEFAILED counting\")).\n\nAdd one missing putback_lru_pages not added by commit cf608ac19c95 (\"mm:\ncompaction: fix COMPACTPAGEFAILED counting\").\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux.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": "552b372ba9db85751e7db2998f07cca2e51f5865",
      "tree": "9d3aed4ed1959aeedc05be5436910ced5afc6928",
      "parents": [
        "fceda1bf498677501befc7da72fd2e4de7f18466"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue Feb 01 15:52:31 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:18 2011 -0800"
      },
      "message": "memsw: deprecate noswapaccount kernel parameter and schedule it for removal\n\nnoswapaccount couldn\u0027t be used to control memsw for both on/off cases so\nwe have added swapaccount[\u003d0|1] parameter.  This way we can turn the\nfeature in two ways noswapaccount resp.  swapaccount\u003d0.  We have kept the\noriginal noswapaccount but I think we should remove it after some time as\nit just makes more command line parameters without any advantages and also\nthe code to handle parameters is uglier if we want both parameters.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nRequested-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "fceda1bf498677501befc7da72fd2e4de7f18466",
      "tree": "c23057e5368fc00b0f1c662ea9bd4b3b123c370c",
      "parents": [
        "afe8a887550f7cc24eb16449670b93f6b43c32d8"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue Feb 01 15:52:30 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:18 2011 -0800"
      },
      "message": "memsw: handle swapaccount kernel parameter correctly\n\n__setup based kernel command line parameters handlers which are handled in\nobsolete_checksetup are provided with the parameter value including \u003d\n(more precisely everything right after the parameter name).\n\nThis means that the current implementation of swapaccount[\u003d1|0] doesn\u0027t\nwork at all because if there is a value for the parameter then we are\ntesting for \"0\" resp.  \"1\" but we are getting \"\u003d0\" resp.  \"\u003d1\" and if\nthere is no parameter value we are getting an empty string rather than\nNULL.\n\nThe original noswapccount parameter, which doesn\u0027t care about the value,\nworks correctly.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\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": "fdf4c587a793ba87935e38e7f25a9540bc9a7b95",
      "tree": "c134f1772c46e2c5214550aaf08c58b36d755a55",
      "parents": [
        "69bc70d4f97ce82153bed0afc9f432700c60390b"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Mon Jan 31 17:03:41 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 10:20:50 2011 +1100"
      },
      "message": "mlock: operate on any regions with protection !\u003d PROT_NONE\n\nAs Tao Ma noticed, change 5ecfda0 breaks blktrace. This is because\nblktrace mmaps a file with PROT_WRITE permissions but without PROT_READ,\nso my attempt to not unnecessarity break COW during mlock ended up\ncausing mlock to fail with a permission problem.\n\nI am proposing to let mlock ignore vma protection in all cases except\nPROT_NONE. In particular, mlock should not fail for PROT_WRITE regions\n(as in the blktrace case, which broke at 5ecfda0) or for PROT_EXEC\nregions (which seem to me like they were always broken).\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4fda116852fe21a3897c478ce64b77bb1ec6b3d6",
      "tree": "ae1dbc17d1223ba0debe3ca7f309e2eca82b6447",
      "parents": [
        "52cea8a4b0634421ddafcfef98c07cf5c378a71f",
        "6ae4bd1f0bc479984f30061b5e5116060c24a267"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 31 12:55:38 2011 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 31 12:55:38 2011 +1000"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-2.6-cm\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-2.6-cm:\n  kmemleak: Allow kmemleak metadata allocations to fail\n  kmemleak: remove memset by using kzalloc\n"
    },
    {
      "commit": "6ae4bd1f0bc479984f30061b5e5116060c24a267",
      "tree": "d697010cf38907785a6283a26c02a081f0ea1e96",
      "parents": [
        "0a08739e81671de2cb690774937fe510c000b27f"
      ],
      "author": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Thu Jan 27 10:30:26 2011 +0000"
      },
      "committer": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Thu Jan 27 18:32:06 2011 +0000"
      },
      "message": "kmemleak: Allow kmemleak metadata allocations to fail\n\nThis patch adds __GFP_NORETRY and __GFP_NOMEMALLOC flags to the kmemleak\nmetadata allocations so that it has a smaller effect on the users of the\nkernel slab allocator. Since kmemleak allocations can now fail more\noften, this patch also reduces the verbosity by passing __GFP_NOWARN and\nnot dumping the stack trace when a kmemleak allocation fails.\n\nSigned-off-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nReported-by: Toralf Förster \u003ctoralf.foerster@gmx.de\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Ted Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0a08739e81671de2cb690774937fe510c000b27f",
      "tree": "132c09b71ccb54cfbf26e7ee96f074783708b9c6",
      "parents": [
        "3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Sat Oct 30 23:43:05 2010 +0200"
      },
      "committer": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Thu Jan 27 18:31:51 2011 +0000"
      },
      "message": "kmemleak: remove memset by using kzalloc\n\nWe don\u0027t need to memset if we just use kzalloc() rather than kmalloc() in\nkmemleak_test_init().\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\n"
    },
    {
      "commit": "52dbb9050936fd33ceb45f10529dbc992507c058",
      "tree": "1c3663f50b7dec0bd852b02d76095b9a5618d7b7",
      "parents": [
        "3d37c4a9199920964ffdfaec6335d93b9dcf9ca5"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Jan 25 15:07:29 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 26 10:50:04 2011 +1000"
      },
      "message": "memcg: fix race at move_parent around compound_order()\n\nA fix up mem_cgroup_move_parent() which use compound_order() in\nasynchronous manner.  This compound_order() may return unknown value\nbecause we don\u0027t take lock.  Use PageTransHuge() and HPAGE_SIZE instead\nof it.\n\nAlso clean up for mem_cgroup_move_parent().\n - remove unnecessary initialization of local variable.\n - rename charge_size -\u003e page_size\n - remove unnecessary (wrong) comment.\n - added a comment about THP.\n\nNote:\n Current design take compound_page_lock() in caller of move_account().\n This should be revisited when we implement direct move_task of hugepage\n without splitting.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.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": "3d37c4a9199920964ffdfaec6335d93b9dcf9ca5",
      "tree": "ee37989687d869817aa870a7fb4c405b7907c030",
      "parents": [
        "01c88e2d6b7330c0cc5867fe2297e7d826e1337d"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Jan 25 15:07:28 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 26 10:50:03 2011 +1000"
      },
      "message": "memcg: bugfix check mem_cgroup_disabled() at split fixup\n\nmem_cgroup_disabled() should be checked at splitting.  If disabled, no\nheavy work is necesary.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbalbir@in.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": "01c88e2d6b7330c0cc5867fe2297e7d826e1337d",
      "tree": "0a905aa1558af7fd401d768ead121e2b11a4a2f4",
      "parents": [
        "28bd65781c848d95ba6a7f58b5c4b8265a804ec6"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Jan 25 15:07:27 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 26 10:50:03 2011 +1000"
      },
      "message": "memcg: fix account leak at failure of memsw acconting\n\nCommit 4b53433468 (\"memcg: clean up try_charge main loop\") removes a\ncancel of charge at case: memory charge-\u003e success.  mem+swap charge-\u003e\nfailure.\n\nThis leaks usage of memory.  Fix it.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\t[2.6.36+]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28bd65781c848d95ba6a7f58b5c4b8265a804ec6",
      "tree": "158a70f9b08644e1c3ca958dc376a853759e3745",
      "parents": [
        "33a938774fdb9933e9c77504b035f4f87c0859df"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Tue Jan 25 15:07:26 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 26 10:50:02 2011 +1000"
      },
      "message": "mm: migration: clarify migrate_pages() comment\n\nCallers of migrate_pages should putback_lru_pages to return pages\nisolated to LRU or free list.  Now comment is rather confusing.  It says\ncaller always have to call it.\n\nIt is more clear to point out that the caller has to call it if\nmigrate_pages\u0027s return value isn\u0027t zero.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux.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": "33a938774fdb9933e9c77504b035f4f87c0859df",
      "tree": "fad15b1b98845672b130c6b5e5fb26dcb2f2aef1",
      "parents": [
        "8dba474f034c322d96ada39cb20cac711d80dcb2"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Tue Jan 25 15:07:25 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 26 10:50:02 2011 +1000"
      },
      "message": "mm: compaction: don\u0027t depend on HUGETLB_PAGE\n\nCommit 5d6892407 (\"thp: select CONFIG_COMPACTION if TRANSPARENT_HUGEPAGE\nenabled\") causes this warning during the configuration process:\n\n  warning: (TRANSPARENT_HUGEPAGE) selects COMPACTION which has unmet\n  direct dependencies (EXPERIMENTAL \u0026\u0026 HUGETLB_PAGE \u0026\u0026 MMU)\n\nCOMPACTION doesn\u0027t depend on HUGETLB_PAGE, it doesn\u0027t depend on THP\neither, it is also useful for regular alloc_pages(order \u003e 0) including\nthe very kernel stack during fork (THREAD_ORDER \u003d 1).  It\u0027s always\nbetter to enable COMPACTION.\n\nThe warning should be an error because we would end up with MIGRATION\nnot selected, and COMPACTION wouldn\u0027t work without migration (despite it\nseems to build with an inline migrate_pages returning -ENOSYS).\n\nI\u0027d also like to remove EXPERIMENTAL: compaction has been in the kernel\nfor some releases (for full safety the default remains disabled which I\nthink is enough).\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReported-by: Luca Tettamanti \u003ckronos.it@gmail.com\u003e\nTested-by: Luca Tettamanti \u003ckronos.it@gmail.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": "8dba474f034c322d96ada39cb20cac711d80dcb2",
      "tree": "ef007c5c3088b2ef83be074a7720892b6b8e5e4b",
      "parents": [
        "2ff754fa8f416e82327f2d8f1354a033b66286df"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Tue Jan 25 15:07:24 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 26 10:50:01 2011 +1000"
      },
      "message": "mm/memcontrol.c: fix uninitialized variable use in mem_cgroup_move_parent()\n\nIn mm/memcontrol.c::mem_cgroup_move_parent() there\u0027s a path that jumps\nto the \u0027put_back\u0027 label\n\n  \tret \u003d __mem_cgroup_try_charge(NULL, gfp_mask, \u0026parent, false, charge);\n  \tif (ret || !parent)\n  \t\tgoto put_back;\n\nwhere we\u0027ll\n\n  \tif (charge \u003e PAGE_SIZE)\n  \t\tcompound_unlock_irqrestore(page, flags);\n\nbut, we have not assigned anything to \u0027flags\u0027 at this point, nor have we\ncalled \u0027compound_lock_irqsave()\u0027 (which is what sets \u0027flags\u0027).  The\n\u0027put_back\u0027 label should be moved below the call to\ncompound_unlock_irqrestore() as per this patch.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill@shutemov.name\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "f95ba941d1bee594d536cdcbf879a0865381b903",
      "tree": "985a30f836333e3e4eddea8e8d4d041e1f267b11",
      "parents": [
        "cacf061c5e42a040200463afccd9178ace680322"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Jan 25 15:07:11 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 26 10:49:58 2011 +1000"
      },
      "message": "mm/pgtable-generic.c: fix CONFIG_SWAP\u003dn build\n\nmips (and sparc32):\n\n  In file included from arch/mips/include/asm/tlb.h:21,\n                   from mm/pgtable-generic.c:9:\n  include/asm-generic/tlb.h: In function `tlb_flush_mmu\u0027:\n  include/asm-generic/tlb.h:76: error: implicit declaration of function `release_pages\u0027\n  include/asm-generic/tlb.h: In function `tlb_remove_page\u0027:\n  include/asm-generic/tlb.h:105: error: implicit declaration of function `page_cache_release\u0027\n\nfree_pages_and_swap_cache() and free_page_and_swap_cache() are macros\nwhich call release_pages() and page_cache_release().  The obvious fix is\nto include pagemap.h in swap.h, where those macros are defined.  But that\nbreaks sparc for weird reasons.\n\nSo fix it within mm/pgtable-generic.c instead.\n\nReported-by: Yoichi Yuasa \u003cyuasa@linux-mips.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nAcked-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Sergei Shtylyov \u003csshtylyov@mvista.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "713735b4233fad3ae35b5cad656baa41413887ca",
      "tree": "bba0310f23fb911106e04d75eebe1c6ee7e8d423",
      "parents": [
        "2550326ac7a062fdfc204f9a3b98bdb9179638fc"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Thu Jan 20 14:44:31 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 20 17:02:06 2011 -0800"
      },
      "message": "memcg: correctly order reading PCG_USED and pc-\u003emem_cgroup\n\nThe placement of the read-side barrier is confused: the writer first\nsets pc-\u003emem_cgroup, then PCG_USED.  The read-side barrier has to be\nbetween testing PCG_USED and reading pc-\u003emem_cgroup.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@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": "382e27daa542ce97c500dc357841c6416c735cc2",
      "tree": "1fc6d8375848ef3e756e3b9bc1fe9da7dcfa8a3e",
      "parents": [
        "987eba66e0e6aa654d60881a14731a353ee0acb4"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Jan 20 14:44:26 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 20 17:02:06 2011 -0800"
      },
      "message": "mm: fix truncate_setsize() comment\n\nContrary to what the comment says, truncate_setsize() should be called\n*before* filesystem truncated blocks.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "987eba66e0e6aa654d60881a14731a353ee0acb4",
      "tree": "04138f68481ccd3e8f9447037c3737c568fa3330",
      "parents": [
        "ece35ca810326946ddc930c43356312ad5de44d4"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Jan 20 14:44:25 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 20 17:02:06 2011 -0800"
      },
      "message": "memcg: fix rmdir, force_empty with THP\n\nNow, when THP is enabled, memcg\u0027s rmdir() function is broken because\nmove_account() for THP page is not supported.\n\nThis will cause account leak or -EBUSY issue at rmdir().\nThis patch fixes the issue by supporting move_account() THP pages.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.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": "ece35ca810326946ddc930c43356312ad5de44d4",
      "tree": "7e9138fbd0da696f695b45dddd8baa587bd284a4",
      "parents": [
        "ca3e021417eed30ec2b64ce88eb0acf64aa9bc29"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Jan 20 14:44:24 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 20 17:02:06 2011 -0800"
      },
      "message": "memcg: fix LRU accounting with THP\n\nmemory cgroup\u0027s LRU stat should take care of size of pages because\nTransparent Hugepage inserts hugepage into LRU.  If this value is the\nnumber wrong, memory reclaim will not work well.\n\nNote: only head page of THP\u0027s huge page is linked into LRU.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.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": "ca3e021417eed30ec2b64ce88eb0acf64aa9bc29",
      "tree": "710590e51764d56c12d00744c402ab15c0d14a6b",
      "parents": [
        "e401f1761c0b01966e36e41e2c385d455a7b44ee"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Jan 20 14:44:24 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 20 17:02:06 2011 -0800"
      },
      "message": "memcg: fix USED bit handling at uncharge in THP\n\nNow, under THP:\n\nat charge:\n  - PageCgroupUsed bit is set to all page_cgroup on a hugepage.\n    ....set to 512 pages.\nat uncharge\n  - PageCgroupUsed bit is unset on the head page.\n\nSo, some pages will remain with \"Used\" bit.\n\nThis patch fixes that Used bit is set only to the head page.\nUsed bits for tail pages will be set at splitting if necessary.\n\nThis patch adds this lock order:\n   compound_lock() -\u003e page_cgroup_move_lock().\n\n[akpm@linux-foundation.org: fix warning]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.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": "e401f1761c0b01966e36e41e2c385d455a7b44ee",
      "tree": "3b1ac772f0708ba0b1c963663ce6d0d0f79884b6",
      "parents": [
        "20d9600cb407b0b55fef6ee814b60345c6f58264"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Jan 20 14:44:23 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 20 17:02:05 2011 -0800"
      },
      "message": "memcg: modify accounting function for supporting THP better\n\nmem_cgroup_charge_statisics() was designed for charging a page but now, we\nhave transparent hugepage.  To fix problems (in following patch) it\u0027s\nrequired to change the function to get the number of pages as its\narguments.\n\nThe new function gets following as argument.\n  - type of page rather than \u0027pc\u0027\n  - size of page which is accounted.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.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": "82478fb7bca28e3ca2f3c55c14e690f749dd4dbb",
      "tree": "71023f480667dc3bfd255673437c76db77a05aa0",
      "parents": [
        "3305de51bf612603c9a4e4dc98ceb839ef933749"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Thu Jan 20 14:44:21 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 20 17:02:05 2011 -0800"
      },
      "message": "mm: compaction: prevent division-by-zero during user-requested compaction\n\nUp until 3e7d344 (\"mm: vmscan: reclaim order-0 and use compaction instead\nof lumpy reclaim\"), compaction skipped calculating the fragmentation index\nof a zone when compaction was explicitely requested through the procfs\nknob.\n\nHowever, when compaction_suitable was introduced, it did not come with an\nextra check for order \u003d\u003d -1, set on explicit compaction requests, and\npassed this order on to the fragmentation index calculation, where it\novershifts the number of requested pages, leading to a division by zero.\n\nThis patch makes sure that order \u003d\u003d -1 is recognized as the flag it is\nrather than passing it along as valid order parameter.\n\n[akpm@linux-foundation.org: add comment, per Mel]\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-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": "3305de51bf612603c9a4e4dc98ceb839ef933749",
      "tree": "83c1f03790d6a658d736f6a5e4067aefb604b293",
      "parents": [
        "abb65272a190660790096628859e752172d822fd"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Thu Jan 20 14:44:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 20 17:02:05 2011 -0800"
      },
      "message": "mm/vmscan.c: remove duplicate include of compaction.h\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "abb65272a190660790096628859e752172d822fd",
      "tree": "c600b517ec0446b0ae95430b6c65d864c7dd0efb",
      "parents": [
        "453c719261c0b4030b2676124adb6e81c5fb6833"
      ],
      "author": {
        "name": "Tomi Valkeinen",
        "email": "tomi.valkeinen@nokia.com",
        "time": "Thu Jan 20 14:44:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 20 17:02:05 2011 -0800"
      },
      "message": "memblock: fix memblock_is_region_memory()\n\nmemblock_is_region_memory() uses reserved memblocks to search for the\ngiven region, while it should use the memory memblocks.\n\nI encountered the problem with OMAP\u0027s framebuffer ram allocation.\nNormally the ram is allocated dynamically, and this function is not\ncalled.  However, if we want to pass the framebuffer from the bootloader\nto the kernel (to retain the boot image), this function is used to check\nthe validity of the kernel parameters for the framebuffer ram area.\n\nSigned-off-by: Tomi Valkeinen \u003ctomi.valkeinen@nokia.com\u003e\nAcked-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "453c719261c0b4030b2676124adb6e81c5fb6833",
      "tree": "a90af16797ccb11133046fccdeb52725e2f09167",
      "parents": [
        "6a108a14fa356ef607be308b68337939e56ea94e"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Thu Jan 20 14:44:18 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 20 17:02:05 2011 -0800"
      },
      "message": "thp: keep highpte mapped until it is no longer needed\n\nTwo users reported THP-related crashes on 32-bit x86 machines.  Their oops\nreports indicated an invalid pte, and subsequent code inspection showed\nthat the highpte is actually used after unmap.\n\nThe fix is to unmap the pte only after all operations against it are\nfinished.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReported-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\nReported-by: werner \u003cw.landgraf@ru.ru\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nTested-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\nTested-by: Steven Rostedt \u003crostedt@goodmis.org\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83896fb5e51594281720d145164f866ba769abd5",
      "tree": "422ecdf66c63eebec522b8b59b18616fb3af091d",
      "parents": [
        "7a608572a282a74978e10fd6cd63090aebe29f5c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 17 14:42:34 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 17 14:42:34 2011 -0800"
      },
      "message": "Revert \"mm: simplify code of swap.c\"\n\nThis reverts commit d8505dee1a87b8d41b9c4ee1325cd72258226fbc.\n\nChris Mason ended up chasing down some page allocation errors and pages\nstuck waiting on the IO scheduler, and was able to narrow it down to two\ncommits: commit 744ed1442757 (\"mm: batch activate_page() to reduce lock\ncontention\") and d8505dee1a87 (\"mm: simplify code of swap.c\").\n\nThis reverts the second one.\n\nReported-and-debugged-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jens Axboe \u003cjaxboe@fusionio.com\u003e\nCc: linux-mm \u003clinux-mm@kvack.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a608572a282a74978e10fd6cd63090aebe29f5c",
      "tree": "03e52f73d7c35ffcea8f46e14ec569da818a7631",
      "parents": [
        "9e8a462a0141b12e22c4a2f0c12e0542770401f0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 17 14:42:19 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 17 14:42:19 2011 -0800"
      },
      "message": "Revert \"mm: batch activate_page() to reduce lock contention\"\n\nThis reverts commit 744ed1442757767ffede5008bb13e0805085902e.\n\nChris Mason ended up chasing down some page allocation errors and pages\nstuck waiting on the IO scheduler, and was able to narrow it down to two\ncommits: commit 744ed1442757 (\"mm: batch activate_page() to reduce lock\ncontention\") and d8505dee1a87 (\"mm: simplify code of swap.c\").\n\nThis reverts the first of them.\n\nReported-and-debugged-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jens Axboe \u003cjaxboe@fusionio.com\u003e\nCc: linux-mm \u003clinux-mm@kvack.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b3697c0255d9d73eaaa4deb4512e3f0ff97b3b71",
      "tree": "59f7c5aa4c6ac509381071997f0888e2687cebd5",
      "parents": [
        "7e3d0eb0b028ed9e9384e6afcae2f22993bbdf25"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Sun Jan 16 13:10:39 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 16 15:05:44 2011 -0800"
      },
      "message": "fix non-x86 build failure in pmdp_get_and_clear\n\npmdp_get_and_clear/pmdp_clear_flush/pmdp_splitting_flush were trapped as\nBUG() and they were defined only to diminish the risk of build issues on\nnot-x86 archs and to be consistent with the generic pte methods previously\ndefined in include/asm-generic/pgtable.h.\n\nBut they are causing more trouble than they were supposed to solve, so\nit\u0027s simpler not to define them when THP is off.\n\nThis is also correcting the export of pmdp_splitting_flush which is\ncurrently unused (x86 isn\u0027t using the generic implementation in\nmm/pgtable-generic.c and no other arch needs that [yet]).\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68a1b1955957e222d890f550d2a44ae598db3de9",
      "tree": "809e8420b4c54da4d179fa69aacc269020e486ec",
      "parents": [
        "597fb188cbee2d371246e1669bbc6051bb666aa9"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Tue Jan 11 17:49:32 2011 -0600"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jan 15 13:28:36 2011 +0200"
      },
      "message": "mm/slab.c: make local symbols static\n\nLocal symbols should be static.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "597fb188cbee2d371246e1669bbc6051bb666aa9",
      "tree": "fd9cb605050ca15274cf391dc6bd4073d04808df",
      "parents": [
        "38567333a6dabd0f2b4150e9fb6dd8e3ba2985e5",
        "04d94879c8a4973b5499dc26b9d38acee8928791"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jan 15 13:28:17 2011 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Jan 15 13:28:17 2011 +0200"
      },
      "message": "Merge branch \u0027slub/hotplug\u0027 into slab/urgent\n"
    },
    {
      "commit": "52cfd503ad7176d23a5dd7af3981744feb60622f",
      "tree": "0a8aeaaf4acbc86ac682f18632b8070c1c6b7ba1",
      "parents": [
        "dc8e7e3ec60bd5ef7868aa88755e9d4c948dc5cc",
        "4263d9a3ae4d15785897d0543bb59316c84ee605"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 20:15:35 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 20:15:35 2011 -0800"
      },
      "message": "Merge branch \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6\n\n* \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (59 commits)\n  ACPI / PM: Fix build problems for !CONFIG_ACPI related to NVS rework\n  ACPI: fix resource check message\n  ACPI / Battery: Update information on info notification and resume\n  ACPI: Drop device flag wake_capable\n  ACPI: Always check if _PRW is present before trying to evaluate it\n  ACPI / PM: Check status of power resources under mutexes\n  ACPI / PM: Rename acpi_power_off_device()\n  ACPI / PM: Drop acpi_power_nocheck\n  ACPI / PM: Drop acpi_bus_get_power()\n  Platform / x86: Make fujitsu_laptop use acpi_bus_update_power()\n  ACPI / Fan: Rework the handling of power resources\n  ACPI / PM: Register power resource devices as soon as they are needed\n  ACPI / PM: Register acpi_power_driver early\n  ACPI / PM: Add function for updating device power state consistently\n  ACPI / PM: Add function for device power state initialization\n  ACPI / PM: Introduce __acpi_bus_get_power()\n  ACPI / PM: Introduce function for refcounting device power resources\n  ACPI / PM: Add functions for manipulating lists of power resources\n  ACPI / PM: Prevent acpi_power_get_inferred_state() from making changes\n  ACPICA: Update version to 20101209\n  ...\n"
    },
    {
      "commit": "50de1dd967d4ba3b8a90ebe7a4f5feca24191317",
      "tree": "ed2aa4352ae3c2887a90ef6279588a7048397d1b",
      "parents": [
        "17295c88a160c6eea3fcf46cec9d08a0fcb02db9"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Thu Jan 13 15:47:43 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:51 2011 -0800"
      },
      "message": "memcg: fix memory migration of shmem swapcache\n\nIn the current implementation mem_cgroup_end_migration() decides whether\nthe page migration has succeeded or not by checking \"oldpage-\u003emapping\".\n\nBut if we are tring to migrate a shmem swapcache, the page-\u003emapping of it\nis NULL from the begining, so the check would be invalid.  As a result,\nmem_cgroup_end_migration() assumes the migration has succeeded even if\nit\u0027s not, so \"newpage\" would be freed while it\u0027s not uncharged.\n\nThis patch fixes it by passing mem_cgroup_end_migration() the result of\nthe page migration.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.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": "17295c88a160c6eea3fcf46cec9d08a0fcb02db9",
      "tree": "35fe45824b5ddd6d406d2d7d7562438a4725e57e",
      "parents": [
        "dfe076b0971a783469bc2066e85d46e23c8acb1c"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Thu Jan 13 15:47:42 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:51 2011 -0800"
      },
      "message": "memcg: use [kv]zalloc[_node] rather than [kv]malloc+memset\n\nIn mem_cgroup_alloc() we currently do either kmalloc() or vmalloc() then\nfollowed by memset() to zero the memory.  This can be more efficiently\nachieved by using kzalloc() and vzalloc().  There\u0027s also one situation\nwhere we can use kzalloc_node() - this is what\u0027s new in this version of\nthe patch.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Li Zefan \u003clizf@cn.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": "dfe076b0971a783469bc2066e85d46e23c8acb1c",
      "tree": "ee0856c119ed898212da2555f936fb3284c5ff59",
      "parents": [
        "043d18b1e5bdfc4870b8a19d00f0d5c636a5c231"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Thu Jan 13 15:47:41 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:51 2011 -0800"
      },
      "message": "memcg: fix deadlock between cpuset and memcg\n\nCommit b1dd693e (\"memcg: avoid deadlock between move charge and\ntry_charge()\") can cause another deadlock about mmap_sem on task migration\nif cpuset and memcg are mounted onto the same mount point.\n\nAfter the commit, cgroup_attach_task() has sequence like:\n\ncgroup_attach_task()\n  ss-\u003ecan_attach()\n    cpuset_can_attach()\n    mem_cgroup_can_attach()\n      down_read(\u0026mmap_sem)        (1)\n  ss-\u003eattach()\n    cpuset_attach()\n      mpol_rebind_mm()\n        down_write(\u0026mmap_sem)     (2)\n        up_write(\u0026mmap_sem)\n      cpuset_migrate_mm()\n        do_migrate_pages()\n          down_read(\u0026mmap_sem)\n          up_read(\u0026mmap_sem)\n    mem_cgroup_move_task()\n      mem_cgroup_clear_mc()\n        up_read(\u0026mmap_sem)\n\nWe can cause deadlock at (2) because we\u0027ve already aquire the mmap_sem at (1).\n\nBut the commit itself is necessary to fix deadlocks which have existed\nbefore the commit like:\n\nEx.1)\n                move charge             |        try charge\n  --------------------------------------+------------------------------\n    mem_cgroup_can_attach()             |  down_write(\u0026mmap_sem)\n      mc.moving_task \u003d current          |    ..\n      mem_cgroup_precharge_mc()         |  __mem_cgroup_try_charge()\n        mem_cgroup_count_precharge()    |    prepare_to_wait()\n          down_read(\u0026mmap_sem)          |    if (mc.moving_task)\n          -\u003e cannot aquire the lock     |    -\u003e true\n                                        |      schedule()\n                                        |      -\u003e move charge should wake it up\n\nEx.2)\n                move charge             |        try charge\n  --------------------------------------+------------------------------\n    mem_cgroup_can_attach()             |\n      mc.moving_task \u003d current          |\n      mem_cgroup_precharge_mc()         |\n        mem_cgroup_count_precharge()    |\n          down_read(\u0026mmap_sem)          |\n          ..                            |\n          up_read(\u0026mmap_sem)            |\n                                        |  down_write(\u0026mmap_sem)\n    mem_cgroup_move_task()              |    ..\n      mem_cgroup_move_charge()          |  __mem_cgroup_try_charge()\n        down_read(\u0026mmap_sem)            |    prepare_to_wait()\n        -\u003e cannot aquire the lock       |    if (mc.moving_task)\n                                        |    -\u003e true\n                                        |      schedule()\n                                        |      -\u003e move charge should wake it up\n\nThis patch fixes all of these problems by:\n1. revert the commit.\n2. To fix the Ex.1, we set mc.moving_task after mem_cgroup_count_precharge()\n   has released the mmap_sem.\n3. To fix the Ex.2, we use down_read_trylock() instead of down_read() in\n   mem_cgroup_move_charge() and, if it has failed to aquire the lock, cancel\n   all extra charges, wake up all waiters, and retry trylock.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReported-by: Ben Blum \u003cbblum@andrew.cmu.edu\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Hiroyuki Kamezawa \u003ckamezawa.hiroyuki@gmail.com\u003e\nCc: Balbir Singh \u003cbalbir@in.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": "043d18b1e5bdfc4870b8a19d00f0d5c636a5c231",
      "tree": "c2392e1fb2c1f7b23446ae4c59aa2d35134ab3d3",
      "parents": [
        "f3e8eb70b1807d1b30aa6972af0cf30077c40112"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Thu Jan 13 15:47:40 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:50 2011 -0800"
      },
      "message": "memcg: remove unnecessary return from void-returning mem_cgroup_del_lru_list()\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.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": "f3e8eb70b1807d1b30aa6972af0cf30077c40112",
      "tree": "5b541e4850fa6a9922b288e9efd7c632021657f6",
      "parents": [
        "dbd4ea78f002df283c95d9774837041735fa1bf9"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Thu Jan 13 15:47:39 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:50 2011 -0800"
      },
      "message": "memcg: fix unit mismatch in memcg oom limit calculation\n\nAdding the number of swap pages to the byte limit of a memory control\ngroup makes no sense.  Convert the pages to bytes before adding them.\n\nThe only user of this code is the OOM killer, and the way it is used means\nthat the error results in a higher OOM badness value.  Since the cgroup\nlimit is the same for all tasks in the cgroup, the error should have no\npractical impact at the moment.\n\nBut let\u0027s not wait for future or changing users to trip over it.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dbd4ea78f002df283c95d9774837041735fa1bf9",
      "tree": "e709c6c5c026b1c230bb87ddcfe8415aaf255820",
      "parents": [
        "2a7106f2cb0768d00fe8c1eb42a754a7d8518f08"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Jan 13 15:47:38 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:50 2011 -0800"
      },
      "message": "memcg: add lock to synchronize page accounting and migration\n\nIntroduce a new bit spin lock, PCG_MOVE_LOCK, to synchronize the page\naccounting and migration code.  This reworks the locking scheme of\n_update_stat() and _move_account() by adding new lock bit PCG_MOVE_LOCK,\nwhich is always taken under IRQ disable.\n\n1. If pages are being migrated from a memcg, then updates to that\n   memcg page statistics are protected by grabbing PCG_MOVE_LOCK using\n   move_lock_page_cgroup().  In an upcoming commit, memcg dirty page\n   accounting will be updating memcg page accounting (specifically: num\n   writeback pages) from IRQ context (softirq).  Avoid a deadlocking\n   nested spin lock attempt by disabling irq on the local processor when\n   grabbing the PCG_MOVE_LOCK.\n\n2. lock for update_page_stat is used only for avoiding race with\n   move_account().  So, IRQ awareness of lock_page_cgroup() itself is not\n   a problem.  The problem is between mem_cgroup_update_page_stat() and\n   mem_cgroup_move_account_page().\n\nTrade-off:\n  * Changing lock_page_cgroup() to always disable IRQ (or\n    local_bh) has some impacts on performance and I think\n    it\u0027s bad to disable IRQ when it\u0027s not necessary.\n  * adding a new lock makes move_account() slower.  Score is\n    here.\n\nPerformance Impact: moving a 8G anon process.\n\nBefore:\n\treal    0m0.792s\n\tuser    0m0.000s\n\tsys     0m0.780s\n\nAfter:\n\treal    0m0.854s\n\tuser    0m0.000s\n\tsys     0m0.842s\n\nThis score is bad but planned patches for optimization can reduce\nthis impact.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Greg Thelen \u003cgthelen@google.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Andrea Righi \u003carighi@develer.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2a7106f2cb0768d00fe8c1eb42a754a7d8518f08",
      "tree": "730bef06e752c1edcb2d475fd193f94bea00bf6a",
      "parents": [
        "ece72400c2a27a3d726cb0854449f991d9fcd2da"
      ],
      "author": {
        "name": "Greg Thelen",
        "email": "gthelen@google.com",
        "time": "Thu Jan 13 15:47:37 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:50 2011 -0800"
      },
      "message": "memcg: create extensible page stat update routines\n\nReplace usage of the mem_cgroup_update_file_mapped() memcg\nstatistic update routine with two new routines:\n* mem_cgroup_inc_page_stat()\n* mem_cgroup_dec_page_stat()\n\nAs before, only the file_mapped statistic is managed.  However, these more\ngeneral interfaces allow for new statistics to be more easily added.  New\nstatistics are added with memcg dirty page accounting.\n\nSigned-off-by: Greg Thelen \u003cgthelen@google.com\u003e\nSigned-off-by: Andrea Righi \u003carighi@develer.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "744ed1442757767ffede5008bb13e0805085902e",
      "tree": "75af93524570b40056f2367059dfa84ba7d90186",
      "parents": [
        "d8505dee1a87b8d41b9c4ee1325cd72258226fbc"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Jan 13 15:47:34 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:50 2011 -0800"
      },
      "message": "mm: batch activate_page() to reduce lock contention\n\nThe zone-\u003elru_lock is heavily contented in workload where activate_page()\nis frequently used.  We could do batch activate_page() to reduce the lock\ncontention.  The batched pages will be added into zone list when the pool\nis full or page reclaim is trying to drain them.\n\nFor example, in a 4 socket 64 CPU system, create a sparse file and 64\nprocesses, processes shared map to the file.  Each process read access the\nwhole file and then exit.  The process exit will do unmap_vmas() and cause\na lot of activate_page() call.  In such workload, we saw about 58% total\ntime reduction with below patch.  Other workloads with a lot of\nactivate_page also benefits a lot too.\n\nI tested some microbenchmarks:\ncase-anon-cow-rand-mt\t\t0.58%\ncase-anon-cow-rand\t\t-3.30%\ncase-anon-cow-seq-mt\t\t-0.51%\ncase-anon-cow-seq\t\t-5.68%\ncase-anon-r-rand-mt\t\t0.23%\ncase-anon-r-rand\t\t0.81%\ncase-anon-r-seq-mt\t\t-0.71%\ncase-anon-r-seq\t\t\t-1.99%\ncase-anon-rx-rand-mt\t\t2.11%\ncase-anon-rx-seq-mt\t\t3.46%\ncase-anon-w-rand-mt\t\t-0.03%\ncase-anon-w-rand\t\t-0.50%\ncase-anon-w-seq-mt\t\t-1.08%\ncase-anon-w-seq\t\t\t-0.12%\ncase-anon-wx-rand-mt\t\t-5.02%\ncase-anon-wx-seq-mt\t\t-1.43%\ncase-fork\t\t\t1.65%\ncase-fork-sleep\t\t\t-0.07%\ncase-fork-withmem\t\t1.39%\ncase-hugetlb\t\t\t-0.59%\ncase-lru-file-mmap-read-mt\t-0.54%\ncase-lru-file-mmap-read\t\t0.61%\ncase-lru-file-mmap-read-rand\t-2.24%\ncase-lru-file-readonce\t\t-0.64%\ncase-lru-file-readtwice\t\t-11.69%\ncase-lru-memcg\t\t\t-1.35%\ncase-mmap-pread-rand-mt\t\t1.88%\ncase-mmap-pread-rand\t\t-15.26%\ncase-mmap-pread-seq-mt\t\t0.89%\ncase-mmap-pread-seq\t\t-69.72%\ncase-mmap-xread-rand-mt\t\t0.71%\ncase-mmap-xread-seq-mt\t\t0.38%\n\nThe most significent are:\ncase-lru-file-readtwice\t\t-11.69%\ncase-mmap-pread-rand\t\t-15.26%\ncase-mmap-pread-seq\t\t-69.72%\n\nwhich use activate_page a lot.  others are basically variations because\neach run has slightly difference.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@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": "d8505dee1a87b8d41b9c4ee1325cd72258226fbc",
      "tree": "292c67a565c67495e78c8a403e2c2a74228d116b",
      "parents": [
        "c06b1fca18c3ad868bfcaca230146e3038583422"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Jan 13 15:47:33 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:50 2011 -0800"
      },
      "message": "mm: simplify code of swap.c\n\nClean up code and remove duplicate code.  Next patch will use\npagevec_lru_move_fn introduced here too.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@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": "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": "fd4a4663db293bfd5dc20fb4113977f62895e550",
      "tree": "a161c087d714042b5402b858b9a6ee75392ecab2",
      "parents": [
        "1ce82b69e96c838d007f316b8347b911fdfa9842"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Thu Jan 13 15:47:31 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:49 2011 -0800"
      },
      "message": "mm: fix hugepage migration\n\n2.6.37 added an unmap_and_move_huge_page() for memory failure recovery,\nbut its anon_vma handling was still based around the 2.6.35 conventions.\nUpdate it to use page_lock_anon_vma, get_anon_vma, page_unlock_anon_vma,\ndrop_anon_vma in the same way as we\u0027re now changing unmap_and_move().\n\nI don\u0027t particularly like to propose this for stable when I\u0027ve not seen\nits problems in practice nor tested the solution: but it\u0027s clearly out of\nsynch at present.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: \"Jun\u0027ichi Nomura\" \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: \u003cstable@kernel.org\u003e [2.6.37, 2.6.36]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1ce82b69e96c838d007f316b8347b911fdfa9842",
      "tree": "be34e7c88a2544e620638834c8120b14b277d64a",
      "parents": [
        "2919bfd0758257c469abef8c26c3e516bbebb851"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Thu Jan 13 15:47:30 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:49 2011 -0800"
      },
      "message": "mm: fix migration hangs on anon_vma lock\n\nIncreased usage of page migration in mmotm reveals that the anon_vma\nlocking in unmap_and_move() has been deficient since 2.6.36 (or even\nearlier).  Review at the time of f18194275c39835cb84563500995e0d503a32d9a\n(\"mm: fix hang on anon_vma-\u003eroot-\u003elock\") missed the issue here: the\nanon_vma to which we get a reference may already have been freed back to\nits slab (it is in use when we check page_mapped, but that can change),\nand so its anon_vma-\u003eroot may be switched at any moment by reuse in\nanon_vma_prepare.\n\nPerhaps we could fix that with a get_anon_vma_unless_zero(), but let\u0027s\nnot: just rely on page_lock_anon_vma() to do all the hard thinking for us,\nthen we don\u0027t need any rcu read locking over here.\n\nIn removing the rcu_unlock label: since PageAnon is a bit in\npage-\u003emapping, it\u0027s impossible for a !page-\u003emapping page to be anon; but\ninsert VM_BUG_ON in case the implementation ever changes.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: \"Jun\u0027ichi Nomura\" \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: \u003cstable@kernel.org\u003e [2.6.37, 2.6.36]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2919bfd0758257c469abef8c26c3e516bbebb851",
      "tree": "093244c121dcbb91423f119cea9abc50e11ad078",
      "parents": [
        "73ae31e5986a4c0ee84bfd13ccd9b57a98956f6f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Thu Jan 13 15:47:29 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:49 2011 -0800"
      },
      "message": "ksm: drain pagevecs to lru\n\nIt was hard to explain the page counts which were causing new LTP tests\nof KSM to fail: we need to drain the per-cpu pagevecs to LRU occasionally.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReported-by: CAI Qian \u003ccaiqian@redhat.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": "73ae31e5986a4c0ee84bfd13ccd9b57a98956f6f",
      "tree": "03e8c6e4559d5f77ec8f0fdf79addeecbef65ed9",
      "parents": [
        "adbe8726dc2a3805630d517270db17e3af86e526"
      ],
      "author": {
        "name": "Eric B Munson",
        "email": "emunson@mgebm.net",
        "time": "Thu Jan 13 15:47:28 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:49 2011 -0800"
      },
      "message": "hugetlb: fix handling of parse errors in sysfs\n\nWhen parsing changes to the huge page pool sizes made from userspace via\nthe sysfs interface, bogus input values are being covered up by\nnr_hugepages_store_common and nr_overcommit_hugepages_store returning 0\nwhen strict_strtoul returns an error.  This can cause an infinite loop in\nthe nr_hugepages_store code.  This patch changes the return value for\nthese functions to -EINVAL when strict_strtoul returns an error.\n\nSigned-off-by: Eric B Munson \u003cemunson@mgebm.net\u003e\nReported-by: CAI Qian \u003ccaiqian@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Nishanth Aravamudan \u003cnacc@us.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": "adbe8726dc2a3805630d517270db17e3af86e526",
      "tree": "9558dc935030fa9eaec390ec56080d585b438f51",
      "parents": [
        "08d4a24659f1284f33e574211435aa12ce968477"
      ],
      "author": {
        "name": "Eric B Munson",
        "email": "emunson@mgebm.net",
        "time": "Thu Jan 13 15:47:27 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:49 2011 -0800"
      },
      "message": "hugetlb: do not allow pagesize \u003e\u003d MAX_ORDER pool adjustment\n\nHuge pages with order \u003e\u003d MAX_ORDER must be allocated at boot via the\nkernel command line, they cannot be allocated or freed once the kernel is\nup and running.  Currently we allow values to be written to the sysfs and\nsysctl files controling pool size for these huge page sizes.  This patch\nmakes the store functions for nr_hugepages and nr_overcommit_hugepages\nreturn -EINVAL when the pool for a page size \u003e\u003d MAX_ORDER is changed.\n\n[akpm@linux-foundation.org: avoid multiple return paths in nr_hugepages_store_common()]\n[caiqian@redhat.com: add checking in hugetlb_overcommit_handler()]\nSigned-off-by: Eric B Munson \u003cemunson@mgebm.net\u003e\nReported-by: CAI Qian \u003ccaiqian@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Nishanth Aravamudan \u003cnacc@us.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": "08d4a24659f1284f33e574211435aa12ce968477",
      "tree": "a3bfdee153157acd502452635aa33f842c0f97eb",
      "parents": [
        "cb9ef8d5e394f70db64bda79c20d3569a20d2574"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Thu Jan 13 15:47:26 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:49 2011 -0800"
      },
      "message": "hugetlb: check the return value of string conversion in sysctl handler\n\nproc_doulongvec_minmax may fail if the given buffer doesn\u0027t represent a\nvalid number.  If we provide something invalid we will initialize the\nresulting value (nr_overcommit_huge_pages in this case) to a random value\nfrom the stack.\n\nThe issue was introduced by a3d0c6aa when the default handler has been\nreplaced by the helper function where we do not check the return value.\n\nReproducer:\necho \"\" \u003e /proc/sys/vm/nr_overcommit_hugepages\n\n[akpm@linux-foundation.org: correctly propagate proc_doulongvec_minmax return code]\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: CAI Qian \u003ccaiqian@redhat.com\u003e\nCc: Nishanth Aravamudan \u003cnacc@us.ibm.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": "684265d4a30f133162f06ddb2e5010608e60e4bb",
      "tree": "f4eb3cab6bdbebf48360a8bc8696588483ac0e52",
      "parents": [
        "84bc227d7fde049a568cd58a5610613feedc0dff"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Jan 13 15:47:25 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:48 2011 -0800"
      },
      "message": "mm/dmapool.c: use TASK_UNINTERRUPTIBLE in dma_pool_alloc()\n\nAs it stands this code will degenerate into a busy-wait if the calling task\nhas signal_pending().\n\nCc: Rolf Eike Beer \u003ceike-kernel@sf-tec.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "84bc227d7fde049a568cd58a5610613feedc0dff",
      "tree": "89957d8ef4dba3fe8d609bd90619f7bf6f15ec0f",
      "parents": [
        "43506fad21ca3d8dc59e768ff458f7c5e5c01086"
      ],
      "author": {
        "name": "Rolf Eike Beer",
        "email": "eike-kernel@sf-tec.de",
        "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/dmapool.c: take lock only once in dma_pool_free()\n\ndma_pool_free() scans for the page to free in the pool list holding the\npool lock.  Then it releases the lock basically to acquire it immediately\nagain.  Modify the code to only take the lock once.\n\nThis will do some additional loops and computations with the lock held in\nif memory debugging is activated.  If it is not activated the only new\noperations with this lock is one if and one substraction.\n\nSigned-off-by: Rolf Eike Beer \u003ceike-kernel@sf-tec.de\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": "5520e89485252c759ee60d313e9422447659947b",
      "tree": "cae55e5e44e86a19af4103ec129d887004d26b5b",
      "parents": [
        "32d6feadf4e17ea9b98071be9bbf402a74a4f818"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Jan 13 15:47:23 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:48 2011 -0800"
      },
      "message": "brk: fix min_brk lower bound computation for COMPAT_BRK\n\nEven if CONFIG_COMPAT_BRK is set in the kernel configuration, it can still\nbe overriden by randomize_va_space sysctl.\n\nIf this is the case, the min_brk computation in sys_brk() implementation\nis wrong, as it solely takes into account COMPAT_BRK setting, assuming\nthat brk start is not randomized.  But that might not be the case if\nrandomize_va_space sysctl has been set to \u00272\u0027 at the time the binary has\nbeen loaded from disk.\n\nIn such case, the check has to be done in a same way as in\n!CONFIG_COMPAT_BRK case.\n\nIn addition to that, the check for the COMPAT_BRK case introduced back in\na5b4592c (\"brk: make sys_brk() honor COMPAT_BRK when computing lower\nbound\") is slightly wrong -- the lower bound shouldn\u0027t be mm-\u003eend_code,\nbut mm-\u003eend_data instead, as that\u0027s where the legacy applications expect\nbrk section to start (i.e.  immediately after last global variable).\n\n[akpm@linux-foundation.org: fix comment]\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "32d6feadf4e17ea9b98071be9bbf402a74a4f818",
      "tree": "62427ca91992c87399211fec6294533fac0e7464",
      "parents": [
        "29c1f677d424e8c5683a837fc4f03fc9f19201d7"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Thu Jan 13 15:47:22 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:48 2011 -0800"
      },
      "message": "mm/hugetlb.c: fix error-path memory leak in nr_hugepages_store_common()\n\nThe NODEMASK_ALLOC macro may dynamically allocate memory for its second\nargument (\u0027nodes_allowed\u0027 in this context).\n\nIn nr_hugepages_store_common() we may abort early if strict_strtoul()\nfails, but in that case we do not free the memory already allocated to\n\u0027nodes_allowed\u0027, causing a memory leak.\n\nThis patch closes the leak by freeing the memory in the error path.\n\n[akpm@linux-foundation.org: use NODEMASK_FREE, per Minchan Kim]\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\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": "29c1f677d424e8c5683a837fc4f03fc9f19201d7",
      "tree": "97f257ab279cc000e02a1a58fa0869fb405f26cd",
      "parents": [
        "22e5c47ee238abe636655c3862ed28d6eb084ad4"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:47:21 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:48 2011 -0800"
      },
      "message": "mm: migration: use rcu_dereference_protected when dereferencing the radix tree slot during file page migration\n\nmigrate_pages() -\u003e unmap_and_move() only calls rcu_read_lock() for\nanonymous pages, as introduced by git commit\n989f89c57e6361e7d16fbd9572b5da7d313b073d (\"fix rcu_read_lock() in page\nmigraton\").  The point of the RCU protection there is part of getting a\nstable reference to anon_vma and is only held for anon pages as file pages\nare locked which is sufficient protection against freeing.\n\nHowever, while a file page\u0027s mapping is being migrated, the radix tree is\ndouble checked to ensure it is the expected page.  This uses\nradix_tree_deref_slot() -\u003e rcu_dereference() without the RCU lock held\ntriggering the following warning.\n\n[  173.674290] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[  173.676016] [ INFO: suspicious rcu_dereference_check() usage. ]\n[  173.676016] ---------------------------------------------------\n[  173.676016] include/linux/radix-tree.h:145 invoked rcu_dereference_check() without protection!\n[  173.676016]\n[  173.676016] other info that might help us debug this:\n[  173.676016]\n[  173.676016]\n[  173.676016] rcu_scheduler_active \u003d 1, debug_locks \u003d 0\n[  173.676016] 1 lock held by hugeadm/2899:\n[  173.676016]  #0:  (\u0026(\u0026inode-\u003ei_data.tree_lock)-\u003erlock){..-.-.}, at: [\u003cc10e3d2b\u003e] migrate_page_move_mapping+0x40/0x1ab\n[  173.676016]\n[  173.676016] stack backtrace:\n[  173.676016] Pid: 2899, comm: hugeadm Not tainted 2.6.37-rc5-autobuild\n[  173.676016] Call Trace:\n[  173.676016]  [\u003cc128cc01\u003e] ? printk+0x14/0x1b\n[  173.676016]  [\u003cc1063502\u003e] lockdep_rcu_dereference+0x7d/0x86\n[  173.676016]  [\u003cc10e3db5\u003e] migrate_page_move_mapping+0xca/0x1ab\n[  173.676016]  [\u003cc10e41ad\u003e] migrate_page+0x23/0x39\n[  173.676016]  [\u003cc10e491b\u003e] buffer_migrate_page+0x22/0x107\n[  173.676016]  [\u003cc10e48f9\u003e] ? buffer_migrate_page+0x0/0x107\n[  173.676016]  [\u003cc10e425d\u003e] move_to_new_page+0x9a/0x1ae\n[  173.676016]  [\u003cc10e47e6\u003e] migrate_pages+0x1e7/0x2fa\n\nThis patch introduces radix_tree_deref_slot_protected() which calls\nrcu_dereference_protected().  Users of it must pass in the\nmapping-\u003etree_lock that is protecting this dereference.  Holding the tree\nlock protects against parallel updaters of the radix tree meaning that\nrcu_dereference_protected is allowable.\n\n[akpm@linux-foundation.org: remove unneeded casts]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Milton Miller \u003cmiltonm@bga.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.37.early]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "22e5c47ee238abe636655c3862ed28d6eb084ad4",
      "tree": "4a4e7d330cbef6c99a8914de482eb0e8daba2485",
      "parents": [
        "29ad768cfc08611a4c1070d0f13f82eeea2bac7b"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:48 2011 -0800"
      },
      "message": "thp: add compound_trans_head() helper\n\nCleanup some code with common compound_trans_head helper.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Avi Kivity \u003cavi@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": "29ad768cfc08611a4c1070d0f13f82eeea2bac7b",
      "tree": "a1cc7326d3a12bed79071559e2d4e8d43fb14814",
      "parents": [
        "60ab3244ec85c44276c585a2a20d3750402e1cf4"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:19 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:48 2011 -0800"
      },
      "message": "thp: KSM on THP\n\nThis makes KSM full operational with THP pages.  Subpages are scanned\nwhile the hugepage is still in place and delivering max cpu performance,\nand only if there\u0027s a match and we\u0027re going to deduplicate memory, the\nsingle hugepages with the subpage match is split.\n\nThere will be no false sharing between ksmd and khugepaged.  khugepaged\nwon\u0027t collapse 2m virtual regions with KSM pages inside.  ksmd also should\nonly split pages when the checksum matches and we\u0027re likely to split an\nhugepage for some long living ksm page (usual ksm heuristic to avoid\nsharing pages that get de-cowed).\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.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": "60ab3244ec85c44276c585a2a20d3750402e1cf4",
      "tree": "e69e866b370243fc58a6fc721e5347a265e8fd4f",
      "parents": [
        "a664b2d8555c659127bf8fe049a58449d394a707"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:18 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:47 2011 -0800"
      },
      "message": "thp: khugepaged: make khugepaged aware about madvise\n\nMADV_HUGEPAGE and MADV_NOHUGEPAGE were fully effective only if run after\nmmap and before touching the memory.  While this is enough for most\nusages, it\u0027s little effort to make madvise more dynamic at runtime on an\nexisting mapping by making khugepaged aware about madvise.\n\nMADV_HUGEPAGE: register in khugepaged immediately without waiting a page\nfault (that may not ever happen if all pages are already mapped and the\n\"enabled\" knob was set to madvise during the initial page faults).\n\nMADV_NOHUGEPAGE: skip vmas marked VM_NOHUGEPAGE in khugepaged to stop\ncollapsing pages where not needed.\n\n[akpm@linux-foundation.org: tweak comment]\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@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": "a664b2d8555c659127bf8fe049a58449d394a707",
      "tree": "14771f4ab93a9dda98174f21e0361a77e2aebfa6",
      "parents": [
        "1ddd6db43a08cba56c7ee920800980862086f1c3"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:17 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:47 2011 -0800"
      },
      "message": "thp: madvise(MADV_NOHUGEPAGE)\n\nAdd madvise MADV_NOHUGEPAGE to mark regions that are not important to be\nhugepage backed.  Return -EINVAL if the vma is not of an anonymous type,\nor the feature isn\u0027t built into the kernel.  Never silently return\nsuccess.\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": "37c2ac7872a9387542616f658d20ac25f5bdb32e",
      "tree": "d115915db4a61e261012bf0f9c4cf14630243d71",
      "parents": [
        "91600e9e592e48736e630851c83da2ad6bf0e91f"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:16 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:47 2011 -0800"
      },
      "message": "thp: compound_trans_order\n\nRead compound_trans_order safe. Noop for CONFIG_TRANSPARENT_HUGEPAGE\u003dn.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: 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": "91600e9e592e48736e630851c83da2ad6bf0e91f",
      "tree": "5b17c58699eed9c7440812f0f2f29f4c80972973",
      "parents": [
        "14d1a55cd26f1860f837f37ae42520c7c13b1347"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:16 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:47 2011 -0800"
      },
      "message": "thp: fix memory-failure hugetlbfs vs THP collision\n\nhugetlbfs was changed to allow memory failure to migrate the hugetlbfs\npages and that broke THP as split_huge_page was then called on hugetlbfs\npages too.\n\ncompound_head/order was also run unsafe on THP pages that can be splitted\nat any time.\n\nAll compound_head() invocations in memory-failure.c that are run on pages\nthat aren\u0027t pinned and that can be freed and reused from under us (while\ncompound_head is running) are buggy because compound_head can return a\ndangling pointer, but I\u0027m not fixing this as this is a generic\nmemory-failure bug not specific to THP but it applies to hugetlbfs too, so\nI can fix it later after THP is merged upstream.\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": "14d1a55cd26f1860f837f37ae42520c7c13b1347",
      "tree": "b80634a6a2a5f306fd1c3fc408993dd9fc98202b",
      "parents": [
        "05b258e99725112c4febeab4fad23ea2c8908a3a"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:15 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:47 2011 -0800"
      },
      "message": "thp: add debug checks for mapcount related invariants\n\nAdd debug checks for invariants that if broken could lead to mapcount vs\npage_mapcount debug checks to trigger later in split_huge_page.\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": "9992af102974f3f8a02a1f2729c3461881539e26",
      "tree": "40958e1a8bd7efc7c9a4d28e2b77d86bb8688734",
      "parents": [
        "2c888cfbc1b45508a44763d85ba2e8ac43faff5f"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Thu Jan 13 15:47:13 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:46 2011 -0800"
      },
      "message": "thp: scale nr_rotated to balance memory pressure\n\nMake sure we scale up nr_rotated when we encounter a referenced\ntransparent huge page.  This ensures pageout scanning balance is not\ndistorted when there are huge pages on the LRU.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\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": "2c888cfbc1b45508a44763d85ba2e8ac43faff5f",
      "tree": "9a7f2214e5d6a01d5724ae63d4d50cddeb2293ff",
      "parents": [
        "97562cd243298acf573620c764a1037bd545c9bc"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Thu Jan 13 15:47:13 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:46 2011 -0800"
      },
      "message": "thp: fix anon memory statistics with transparent hugepages\n\nCount each transparent hugepage as HPAGE_PMD_NR pages in the LRU\nstatistics, so the Active(anon) and Inactive(anon) statistics in\n/proc/meminfo are correct.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\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": "97562cd243298acf573620c764a1037bd545c9bc",
      "tree": "79af6409724ae185e07bce4d9eaedef034bc83f8",
      "parents": [
        "c5a73c3d55be1faadba35b41a862e036a3b12ddb"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Thu Jan 13 15:47:12 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:46 2011 -0800"
      },
      "message": "thp: disable transparent hugepages by default on small systems\n\nOn small systems, the extra memory used by the anti-fragmentation memory\nreserve and simply because huge pages are smaller than large pages can\neasily outweigh the benefits of less TLB misses.\n\nA less obvious concern is if run on a NUMA machine with asymmetric node\nsizes and one of them is very small.  The reserve could make the node\nunusable.\n\nIn case of the crashdump kernel, OOMs have been observed due to the\nanti-fragmentation memory reserve taking up a large fraction of the\ncrashdump image.\n\nThis patch disables transparent hugepages on systems with less than 1GB of\nRAM, but the hugepage subsystem is fully initialized so administrators can\nenable THP through /sys if desired.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Avi Kiviti \u003cavi@redhat.com\u003e\nSigned-off-by: Andrea Arcangeli \u003caarcange@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": "c5a73c3d55be1faadba35b41a862e036a3b12ddb",
      "tree": "65cd54e5995b6dae2edd80393f9c0317a0a11ebc",
      "parents": [
        "5a03b051ed87e72b959f32a86054e1142ac4cf55"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:11 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:46 2011 -0800"
      },
      "message": "thp: use compaction for all allocation orders\n\nIt makes no sense not to enable compaction for small order pages as we\ndon\u0027t want to end up with bad order 2 allocations and good and graceful\norder 9 allocations.\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": "5a03b051ed87e72b959f32a86054e1142ac4cf55",
      "tree": "31f0e8efb86d48b0292f8a7ea4bd9cf7c930a0ab",
      "parents": [
        "878aee7d6b5504e01b9caffce080e792b6b8d090"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:11 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:46 2011 -0800"
      },
      "message": "thp: use compaction in kswapd for GFP_ATOMIC order \u003e 0\n\nThis takes advantage of memory compaction to properly generate pages of\norder \u003e 0 if regular page reclaim fails and priority level becomes more\nsevere and we don\u0027t reach the proper watermarks.\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": "878aee7d6b5504e01b9caffce080e792b6b8d090",
      "tree": "c4a01a78885c25b6b3b1e0c74af7cb83c98a07c5",
      "parents": [
        "8ee53820edfd1f3b6554c593f337148dd3d7fc91"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:10 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:46 2011 -0800"
      },
      "message": "thp: freeze khugepaged and ksmd\n\nIt\u0027s unclear why schedule friendly kernel threads can\u0027t be taken away by\nthe CPU through the scheduler itself.  It\u0027s safer to stop them as they can\ntrigger memory allocation, if kswapd also freezes itself to avoid\ngenerating I/O they have too.\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": "8ee53820edfd1f3b6554c593f337148dd3d7fc91",
      "tree": "ca69957e928cd3efa1b47f92dcfb00591702684c",
      "parents": [
        "4b7167b9ff9b7f3f528cbc4c7d02ebd275b9b10c"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:10 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:46 2011 -0800"
      },
      "message": "thp: mmu_notifier_test_young\n\nFor GRU and EPT, we need gup-fast to set referenced bit too (this is why\nit\u0027s correct to return 0 when shadow_access_mask is zero, it requires\ngup-fast to set the referenced bit).  qemu-kvm access already sets the\nyoung bit in the pte if it isn\u0027t zero-copy, if it\u0027s zero copy or a shadow\npaging EPT minor fault we relay on gup-fast to signal the page is in\nuse...\n\nWe also need to check the young bits on the secondary pagetables for NPT\nand not nested shadow mmu as the data may never get accessed again by the\nprimary pte.\n\nWithout this closer accuracy, we\u0027d have to remove the heuristic that\navoids collapsing hugepages in hugepage virtual regions that have not even\na single subpage in use.\n\n-\u003etest_young is full backwards compatible with GRU and other usages that\ndon\u0027t have young bits in pagetables set by the hardware and that should\nnuke the secondary mmu mappings when -\u003eclear_flush_young runs just like\nEPT does.\n\nRemoving the heuristic that checks the young bit in\nkhugepaged/collapse_huge_page completely isn\u0027t so bad either probably but\nI thought it was worth it and this makes it reliable.\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": "4b7167b9ff9b7f3f528cbc4c7d02ebd275b9b10c",
      "tree": "ad2c23c28b9dea009daf3719aefeb79103e2c152",
      "parents": [
        "94fcc585fb85ad7b059c70872489b50044d401f3"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:09 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:45 2011 -0800"
      },
      "message": "thp: don\u0027t allow transparent hugepage support without PSE\n\nArchs implementing Transparent Hugepage Support must implement a function\ncalled has_transparent_hugepage to be sure the virtual or physical CPU\nsupports Transparent Hugepages.\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": "94fcc585fb85ad7b059c70872489b50044d401f3",
      "tree": "67efce3803149bec77df1f50a06f384deae02ba6",
      "parents": [
        "bc835011afbea3957217ee716093d791fb2fe44f"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:08 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:45 2011 -0800"
      },
      "message": "thp: avoid breaking huge pmd invariants in case of vma_adjust failures\n\nAn huge pmd can only be mapped if the corresponding 2M virtual range is\nfully contained in the vma.  At times the VM calls split_vma twice, if the\nfirst split_vma succeeds and the second fail, the first split_vma remains\nin effect and it\u0027s not rolled back.  For split_vma or vma_adjust to fail\nan allocation failure is needed so it\u0027s a very unlikely event (the out of\nmemory killer would normally fire before any allocation failure is visible\nto kernel and userland and if an out of memory condition happens it\u0027s\nunlikely to happen exactly here).  Nevertheless it\u0027s safer to ensure that\nno huge pmd can be left around if the vma is adjusted in a way that can\u0027t\nfit hugepages anymore at the new vm_start/vm_end address.\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": "bc835011afbea3957217ee716093d791fb2fe44f",
      "tree": "50d1f2ffb4c1ff8cef4c9fb7fb115faeed0d0339",
      "parents": [
        "5d6892407cab23d4bf2f6de065ca351a53849323"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:08 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:45 2011 -0800"
      },
      "message": "thp: transhuge isolate_migratepages()\n\nIt\u0027s not worth migrating transparent hugepages during compaction.  Those\nhugepages don\u0027t create fragmentation.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@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": "5d6892407cab23d4bf2f6de065ca351a53849323",
      "tree": "fd1a32bd669b787ed1a651cc68c9f4def1fbd41e",
      "parents": [
        "13ece886d99cd668483113f7238e419d5331af26"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:07 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:45 2011 -0800"
      },
      "message": "thp: select CONFIG_COMPACTION if TRANSPARENT_HUGEPAGE enabled\n\nWith transparent hugepage support we need compaction for the \"defrag\"\nsysfs controls to be effective.\n\nAt the moment THP hangs the system if COMPACTION isn\u0027t selected, as\nwithout COMPACTION lumpy reclaim wouldn\u0027t be entirely disabled.  So at the\nmoment it\u0027s not orthogonal.  When lumpy will be removed from the VM I can\nremove the select COMPACTION in theory, but then 99% of THP users would be\nstill doing a mistake in disabling compaction, even if the mistake won\u0027t\nreturn in fatal runtime but just slightly degraded performance.  So from a\ntheoretical standpoing forcing the below select is not needed (the\ndependency isn\u0027t strict nor at compile time nor at runtime) but from a\npractical standpoint it is safer.\n\nIf anybody really wants THP to run without compaction, it\u0027d be such a\nweird setup that editing the Kconfig file to allow it will be surely not a\nproblem.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@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": "13ece886d99cd668483113f7238e419d5331af26",
      "tree": "44a1c65870ba4463316f943f52d898bb3763ab81",
      "parents": [
        "ce83d2174ea9c3d72d5821cf3ebc974e36391bf7"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:07 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:45 2011 -0800"
      },
      "message": "thp: transparent hugepage config choice\n\nAllow to choose between the always|madvise default for page faults and\nkhugepaged at config time.  madvise guarantees zero risk of higher memory\nfootprint for applications (applications using madvise(MADV_HUGEPAGE)\nwon\u0027t risk to use any more memory by backing their virtual regions with\nhugepages).\n\nInitially set the default to N and don\u0027t depend on EMBEDDED.\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": "ce83d2174ea9c3d72d5821cf3ebc974e36391bf7",
      "tree": "5e31167f84110551cf00ed3335b2cc3af317b33a",
      "parents": [
        "0bbbc0b33d141f78a0d9218a54a47f50621220d3"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:06 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:45 2011 -0800"
      },
      "message": "thp: allocate memory in khugepaged outside of mmap_sem write mode\n\nThis tries to be more friendly to filesystem in userland, with userland\nbackends that allocate memory in the I/O paths and that could deadlock if\nkhugepaged holds the mmap_sem write mode of the userland backend while\nallocating memory.  Memory allocation may wait for writeback I/O\ncompletion from the daemon that may be blocked in the mmap_sem read mode\nif a page fault happens and the daemon wasn\u0027t using mlock for the memory\nrequired for the I/O submission and completion.\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": "0bbbc0b33d141f78a0d9218a54a47f50621220d3",
      "tree": "3ef3363c189ac536926119731eb86dcf989f4adb",
      "parents": [
        "d39d33c332c611094f84cee39715866f4cbf79e2"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:05 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:45 2011 -0800"
      },
      "message": "thp: add numa awareness to hugepage allocations\n\nIt\u0027s mostly a matter of replacing alloc_pages with alloc_pages_vma after\nintroducing alloc_pages_vma.  khugepaged needs special handling as the\nallocation has to happen inside collapse_huge_page where the vma is known\nand an error has to be returned to the outer loop to sleep\nalloc_sleep_millisecs in case of failure.  But it retains the more\nefficient logic of handling allocation failures in khugepaged in case of\nCONFIG_NUMA\u003dn.\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"
    }
  ],
  "next": "d39d33c332c611094f84cee39715866f4cbf79e2"
}
