)]}'
{
  "log": [
    {
      "commit": "a3d0c6aa1bb342b9b2c7b123b52ac2f48a4d4d0a",
      "tree": "0c6766dd2add1f08c6153769c655e46ddff82a42",
      "parents": [
        "ac74c00e499ed276a965e5b5600667d5dc04a84a"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Fri Feb 08 04:18:18 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:23 2008 -0800"
      },
      "message": "hugetlb: add locking for overcommit sysctl\n\nWhen I replaced hugetlb_dynamic_pool with nr_overcommit_hugepages I used\nproc_doulongvec_minmax() directly.  However, hugetlb.c\u0027s locking rules\nrequire that all counter modifications occur under the hugetlb_lock.  Add a\ncallback into the hugetlb code similar to the one for nr_hugepages.  Grab\nthe lock around the manipulation of nr_overcommit_hugepages in\nproc_doulongvec_minmax().\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.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": "0ed361dec36945f3116ee1338638ada9a8920905",
      "tree": "3e0fc6319ef49f6cac82e8203a8aa199302ab9c5",
      "parents": [
        "62e1c55300f306e06478f460a7eefba085206e0b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Feb 04 22:29:34 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "mm: fix PageUptodate data race\n\nAfter running SetPageUptodate, preceeding stores to the page contents to\nactually bring it uptodate may not be ordered with the store to set the\npage uptodate.\n\nTherefore, another CPU which checks PageUptodate is true, then reads the\npage contents can get stale data.\n\nFix this by having an smp_wmb before SetPageUptodate, and smp_rmb after\nPageUptodate.\n\nMany places that test PageUptodate, do so with the page locked, and this\nwould be enough to ensure memory ordering in those places if\nSetPageUptodate were only called while the page is locked.  Unfortunately\nthat is not always the case for some filesystems, but it could be an idea\nfor the future.\n\nAlso bring the handling of anonymous page uptodateness in line with that of\nfile backed page management, by marking anon pages as uptodate when they\n_are_ uptodate, rather than when our implementation requires that they be\nmarked as such.  Doing allows us to get rid of the smp_wmb\u0027s in the page\ncopying functions, which were especially added for anonymous pages for an\nanalogous memory ordering problem.  Both file and anonymous pages are\nhandled with the same barriers.\n\nFAQ:\nQ. Why not do this in flush_dcache_page?\nA. Firstly, flush_dcache_page handles only one side (the smb side) of the\nordering protocol; we\u0027d still need smp_rmb somewhere. Secondly, hiding away\nmemory barriers in a completely unrelated function is nasty; at least in the\nPageUptodate macros, they are located together with (half) the operations\ninvolved in the ordering. Thirdly, the smp_wmb is only required when first\nbringing the page uptodate, wheras flush_dcache_page should be called each time\nit is written to through the kernel mapping. It is logically the wrong place to\nput it.\n\nQ. Why does this increase my text size / reduce my performance / etc.\nA. Because it is adding the necessary instructions to eliminate the data-race.\n\nQ. Can it be improved?\nA. Yes, eg. if you were to create a rule that all SetPageUptodate operations\nrun under the page lock, we could avoid the smp_rmb places where PageUptodate\nis queried under the page lock. Requires audit of all filesystems and at least\nsome would need reworking. That\u0027s great you\u0027re interested, I\u0027m eagerly awaiting\nyour patches.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c5c99429fa57dcf6e05203ebe3676db1ec646793",
      "tree": "0be05b59713e87a42274c0fe76da48f423f148e1",
      "parents": [
        "c2f3dabefa73fe3307578553f456e93f0a1bca08"
      ],
      "author": {
        "name": "Larry Woodman",
        "email": "lwoodman@redhat.com",
        "time": "Thu Jan 24 05:49:25 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jan 24 08:07:27 2008 -0800"
      },
      "message": "fix hugepages leak due to pagetable page sharing\n\nThe shared page table code for hugetlb memory on x86 and x86_64\nis causing a leak.  When a user of hugepages exits using this code\nthe system leaks some of the hugepages.\n\n-------------------------------------------------------\nPart of /proc/meminfo just before database startup:\nHugePages_Total:  5500\nHugePages_Free:   5500\nHugePages_Rsvd:      0\nHugepagesize:     2048 kB\n\nJust before shutdown:\nHugePages_Total:  5500\nHugePages_Free:   4475\nHugePages_Rsvd:      0\nHugepagesize:     2048 kB\n\nAfter shutdown:\nHugePages_Total:  5500\nHugePages_Free:   4988\nHugePages_Rsvd:\n0 Hugepagesize:     2048 kB\n----------------------------------------------------------\n\nThe problem occurs durring a fork, in copy_hugetlb_page_range().  It\nlocates the dst_pte using huge_pte_alloc().  Since huge_pte_alloc() calls\nhuge_pmd_share() it will share the pmd page if can, yet the main loop in\ncopy_hugetlb_page_range() does a get_page() on every hugepage.  This is a\nviolation of the shared hugepmd pagetable protocol and creates additional\nreferenced to the hugepages causing a leak when the unmap of the VMA\noccurs.  We can skip the entire replication of the ptes when the hugepage\npagetables are shared.  The attached patch skips copying the ptes and the\nget_page() calls if the hugetlbpage pagetable is shared.\n\n[akpm@linux-foundation.org: coding-style cleanups]\nSigned-off-by: Larry Woodman \u003clwoodman@redhat.com\u003e\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68842c9b94560e647e8e7cc75cbb3dbe59f6fcb5",
      "tree": "58220ff2840a62155d3e7f934bc39e4cea673b39",
      "parents": [
        "747d016e7e25e216b31022fe2b012508d99fb682"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Mon Jan 14 00:55:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jan 14 08:52:23 2008 -0800"
      },
      "message": "hugetlbfs: fix quota leak\n\nIn the error path of both shared and private hugetlb page allocation,\nthe file system quota is never undone, leading to fs quota leak.  Fix\nthem up.\n\n[akpm@linux-foundation.org: cleanup, micro-optimise]\nSigned-off-by: Ken Chen \u003ckenchen@google.com\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "368d2c6358c3c62b3820a8a73f9fe9c8b540cdea",
      "tree": "43c9c0958897de5ecedf26c3ba8433dd252d24f7",
      "parents": [
        "d1c3fb1f8f29c41b0d098d7cfb3c32939043631f"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Mon Dec 17 16:20:22 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Dec 17 19:28:17 2007 -0800"
      },
      "message": "Revert \"hugetlb: Add hugetlb_dynamic_pool sysctl\"\n\nThis reverts commit 54f9f80d6543fb7b157d3b11e2e7911dc1379790 (\"hugetlb:\nAdd hugetlb_dynamic_pool sysctl\")\n\nGiven the new sysctl nr_overcommit_hugepages, the boolean dynamic pool\nsysctl is not needed, as its semantics can be expressed by 0 in the\novercommit sysctl (no dynamic pool) and non-0 in the overcommit sysctl\n(pool enabled).\n\n(Needed in 2.6.24 since it reverts a post-2.6.23 userspace-visible change)\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d1c3fb1f8f29c41b0d098d7cfb3c32939043631f",
      "tree": "b91983662da7ec4c28ac0788e835c2d51eea20e1",
      "parents": [
        "7a3f595cc8298df14a7c71b0d876bafd8e9e1cbf"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Mon Dec 17 16:20:12 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Dec 17 19:28:17 2007 -0800"
      },
      "message": "hugetlb: introduce nr_overcommit_hugepages sysctl\n\nhugetlb: introduce nr_overcommit_hugepages sysctl\n\nWhile examining the code to support /proc/sys/vm/hugetlb_dynamic_pool, I\nbecame convinced that having a boolean sysctl was insufficient:\n\n1) To support per-node control of hugepages, I have previously submitted\npatches to add a sysfs attribute related to nr_hugepages. However, with\na boolean global value and per-mount quota enforcement constraining the\ndynamic pool, adding corresponding control of the dynamic pool on a\nper-node basis seems inconsistent to me.\n\n2) Administration of the hugetlb dynamic pool with multiple hugetlbfs\nmount points is, arguably, more arduous than it needs to be. Each quota\nwould need to be set separately, and the sum would need to be monitored.\n\nTo ease the administration, and to help make the way for per-node\ncontrol of the static \u0026 dynamic hugepage pool, I added a separate\nsysctl, nr_overcommit_hugepages. This value serves as a high watermark\nfor the overall hugepage pool, while nr_hugepages serves as a low\nwatermark. The boolean sysctl can then be removed, as the condition\n\n\tnr_overcommit_hugepages \u003e 0\n\nindicates the same administrative setting as\n\n\thugetlb_dynamic_pool \u003d\u003d 1\n\nQuotas still serve as local enforcement of the size of the pool on a\nper-mount basis.\n\nA few caveats:\n\n1) There is a race whereby the global surplus huge page counter is\nincremented before a hugepage has allocated. Another process could then\ntry grow the pool, and fail to convert a surplus huge page to a normal\nhuge page and instead allocate a fresh huge page. I believe this is\nbenign, as no memory is leaked (the actual pages are still tracked\ncorrectly) and the counters won\u0027t go out of sync.\n\n2) Shrinking the static pool while a surplus is in effect will allow the\nnumber of surplus huge pages to exceed the overcommit value. As long as\nthis condition holds, however, no more surplus huge pages will be\nallowed on the system until one of the two sysctls are increased\nsufficiently, or the surplus huge pages go out of use and are freed.\n\nSuccessfully tested on x86_64 with the current libhugetlbfs snapshot,\nmodified to use the new sysctl.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72fad7139b6829f71d7f41f39eb30da5760d90a8",
      "tree": "4f33b824f37923b8f65f2a0542a2e9dcb110c22e",
      "parents": [
        "8805f2387086a7e6a9647d0713fc075694130d6c"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Mon Dec 10 15:49:28 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Dec 10 19:43:55 2007 -0800"
      },
      "message": "hugetlb: handle write-protection faults in follow_hugetlb_page\n\nThe follow_hugetlb_page() fix I posted (merged as git commit\n5b23dbe8173c212d6a326e35347b038705603d39) missed one case.  If the pte is\npresent, but not writable and write access is requested by the caller to\nget_user_pages(), the code will do the wrong thing.  Rather than calling\nhugetlb_fault to make the pte writable, it notes the presence of the pte\nand continues.\n\nThis simple one-liner makes sure we also fault on the pte for this case.\nPlease apply.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: Dave Kleikamp \u003cshaggy@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": "45c682a68a87251d9a01383ce076ab21ee09812e",
      "tree": "d9fa6a02263c50ef97e1c525b91b29b6aedf9e40",
      "parents": [
        "8cde045c7ee97573be6ce495b8f7c918182a2c7a"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Wed Nov 14 16:59:44 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:40 2007 -0800"
      },
      "message": "hugetlb: fix i_blocks accounting\n\nFor administrative purpose, we want to query actual block usage for\nhugetlbfs file via fstat.  Currently, hugetlbfs always return 0.  Fix that\nup since kernel already has all the information to track it properly.\n\nSigned-off-by: Ken Chen \u003ckenchen@google.com\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8cde045c7ee97573be6ce495b8f7c918182a2c7a",
      "tree": "3370af8536058f1d91e793f150e10b4099d68be5",
      "parents": [
        "90d8b7e6129e8f4e5b3bc1a2cfbe585372ce8646"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Nov 14 16:59:43 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:40 2007 -0800"
      },
      "message": "mm/hugetlb.c: make a function static\n\nreturn_unused_surplus_pages() can become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nAcked-by: Adam Litke \u003cagl@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": "90d8b7e6129e8f4e5b3bc1a2cfbe585372ce8646",
      "tree": "7a078249e1a468dc3ec5973c14f8f6a95cb0620f",
      "parents": [
        "9a119c056dc2a9970901954a6d561d50a95e528d"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Wed Nov 14 16:59:42 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:40 2007 -0800"
      },
      "message": "hugetlb: enforce quotas during reservation for shared mappings\n\nWhen a MAP_SHARED mmap of a hugetlbfs file succeeds, huge pages are reserved\nto guarantee no problems will occur later when instantiating pages.  If quotas\nare in force, page instantiation could fail due to a race with another process\nor an oversized (but approved) shared mapping.\n\nTo prevent these scenarios, debit the quota for the full reservation amount up\nfront and credit the unused quota when the reservation is released.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: David Gibson \u003chermes@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9a119c056dc2a9970901954a6d561d50a95e528d",
      "tree": "22ca1f97f18f8a788757825bd4623d52d97a5abb",
      "parents": [
        "2fc39cec6a9b5b41727d3386b780b69422a15152"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Wed Nov 14 16:59:41 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:40 2007 -0800"
      },
      "message": "hugetlb: allow bulk updating in hugetlb_*_quota()\n\nAdd a second parameter \u0027delta\u0027 to hugetlb_get_quota and hugetlb_put_quota to\nallow bulk updating of the sbinfo-\u003efree_blocks counter.  This will be used by\nthe next patch in the series.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: David Gibson \u003chermes@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2fc39cec6a9b5b41727d3386b780b69422a15152",
      "tree": "4b01dcef394a109ae3ff83189f7386ff3cdb3f61",
      "parents": [
        "c79fb75e5a514a5a35f22c229042aa29f4237e3a"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Wed Nov 14 16:59:39 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:40 2007 -0800"
      },
      "message": "hugetlb: debit quota in alloc_huge_page\n\nNow that quota is credited by free_huge_page(), calls to hugetlb_get_quota()\nseem out of place.  The alloc/free API is unbalanced because we handle the\nhugetlb_put_quota() but expect the caller to open-code hugetlb_get_quota().\nMove the get inside alloc_huge_page to clean up this disparity.\n\nThis patch has been kept apart from the previous patch because of the somewhat\ndodgy ERR_PTR() use herein.  Moving the quota logic means that\nalloc_huge_page() has two failure modes.  Quota failure must result in a\nSIGBUS while a standard allocation failure is OOM.  Unfortunately, ERR_PTR()\ndoesn\u0027t like the small positive errnos we have in VM_FAULT_* so they must be\nnegated before they are used.\n\nDoes anyone take issue with the way I am using PTR_ERR.  If so, what are your\nthoughts on how to clean this up (without needing an if,else if,else block at\neach alloc_huge_page() callsite)?\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: David Gibson \u003chermes@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c79fb75e5a514a5a35f22c229042aa29f4237e3a",
      "tree": "012e5610e814ed938628af84ffa7c4775db113e2",
      "parents": [
        "348ea204cc23cda35faf962414b674c57da647d7"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Wed Nov 14 16:59:38 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:40 2007 -0800"
      },
      "message": "hugetlb: fix quota management for private mappings\n\nThe hugetlbfs quota management system was never taught to handle MAP_PRIVATE\nmappings when that support was added.  Currently, quota is debited at page\ninstantiation and credited at file truncation.  This approach works correctly\nfor shared pages but is incomplete for private pages.  In addition to\nhugetlb_no_page(), private pages can be instantiated by hugetlb_cow(); but\nthis function does not respect quotas.\n\nPrivate huge pages are treated very much like normal, anonymous pages.  They\nare not \"backed\" by the hugetlbfs file and are not stored in the mapping\u0027s\nradix tree.  This means that private pages are invisible to\ntruncate_hugepages() so that function will not credit the quota.\n\nThis patch (based on a prototype provided by Ken Chen) moves quota crediting\nfor all pages into free_huge_page().  page-\u003eprivate is used to store a pointer\nto the mapping to which this page belongs.  This is used to credit quota on\nthe appropriate hugetlbfs instance.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: David Gibson \u003chermes@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "348ea204cc23cda35faf962414b674c57da647d7",
      "tree": "fb27a17c13ca745bd3f0fb15d0d967bc5d5bc088",
      "parents": [
        "6c55be8b962f1bdc592d579e81fc27b11ea53dfc"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Wed Nov 14 16:59:37 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:39 2007 -0800"
      },
      "message": "hugetlb: split alloc_huge_page into private and shared components\n\nHugetlbfs implements a quota system which can limit the amount of memory that\ncan be used by the filesystem.  Before allocating a new huge page for a file,\nthe quota is checked and debited.  The quota is then credited when truncating\nthe file.  I found a few bugs in the code for both MAP_PRIVATE and MAP_SHARED\nmappings.  Before detailing the problems and my proposed solutions, we should\nagree on a definition of quotas that properly addresses both private and\nshared pages.  Since the purpose of quotas is to limit total memory\nconsumption on a per-filesystem basis, I argue that all pages allocated by the\nfs (private and shared) should be charged against quota.\n\nPrivate Mappings\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe current code will debit quota for private pages sometimes, but will never\ncredit it.  At a minimum, this causes a leak in the quota accounting which\nrenders the accounting essentially useless as it is.  Shared pages have a one\nto one mapping with a hugetlbfs file and are easy to account by debiting on\nallocation and crediting on truncate.  Private pages are anonymous in nature\nand have a many to one relationship with their hugetlbfs files (due to copy on\nwrite).  Because private pages are not indexed by the mapping\u0027s radix tree,\nthier quota cannot be credited at file truncation time.  Crediting must be\ndone when the page is unmapped and freed.\n\nShared Pages\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nI discovered an issue concerning the interaction between the MAP_SHARED\nreservation system and quotas.  Since quota is not checked until page\ninstantiation, an over-quota mmap/reservation will initially succeed.  When\ninstantiating the first over-quota page, the program will receive SIGBUS.\nThis is inconsistent since the reservation is supposed to be a guarantee.  The\nsolution is to debit the full amount of quota at reservation time and credit\nthe unused portion when the reservation is released.\n\nThis patch series brings quotas back in line by making the following\nmodifications:\n * Private pages\n   - Debit quota in alloc_huge_page()\n   - Credit quota in free_huge_page()\n * Shared pages\n   - Debit quota for entire reservation at mmap time\n   - Credit quota for instantiated pages in free_huge_page()\n   - Credit quota for unused reservation at munmap time\n\nThis patch:\n\nThe shared page reservation and dynamic pool resizing features have made the\nallocation of private vs.  shared huge pages quite different.  By splitting\nout the private/shared-specific portions of the process into their own\nfunctions, readability is greatly improved.  alloc_huge_page now calls the\nproper helper and performs common operations.\n\n[akpm@linux-foundation.org: coding-style cleanups]\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: David Gibson \u003chermes@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b23dbe8173c212d6a326e35347b038705603d39",
      "tree": "a971d3cbab8911e7cbd5bec66f50d093f3f45976",
      "parents": [
        "19cd7537bdae6685c31677a01e08850612ba87f6"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Wed Nov 14 16:59:33 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:39 2007 -0800"
      },
      "message": "hugetlb: follow_hugetlb_page() for write access\n\nWhen calling get_user_pages(), a write flag is passed in by the caller to\nindicate if write access is required on the faulted-in pages.  Currently,\nfollow_hugetlb_page() ignores this flag and always faults pages for\nread-only access.  This can cause data corruption because a device driver\nthat calls get_user_pages() with write set will not expect COW faults to\noccur on the returned pages.\n\nThis patch passes the write flag down to follow_hugetlb_page() and makes\nsure hugetlb_fault() is called with the right write_access parameter.\n\n[ezk@cs.sunysb.edu: build fix]\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nReviewed-by: Ken Chen \u003ckenchen@google.com\u003e\nCc: David Gibson \u003chermes@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "183ff22bb6bd8188c904ebfb479656ae52230b72",
      "tree": "425207fc9cdca03df64ee8241ba764c75db4d8d1",
      "parents": [
        "676b1855de0a18100b3c340084eb8ef72bde4fb1"
      ],
      "author": {
        "name": "Simon Arlott",
        "email": "simon@fire.lp0.eux",
        "time": "Sat Oct 20 01:27:18 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sat Oct 20 01:27:18 2007 +0200"
      },
      "message": "spelling fixes: mm/\n\nSpelling fixes in mm/.\n\nSigned-off-by: Simon Arlott \u003csimon@fire.lp0.eu\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "c80544dc0b87bb65038355e7aafdc30be16b26ab",
      "tree": "176349304bec88a9de16e650c9919462e0dd453c",
      "parents": [
        "0e9663ee452ffce0d429656ebbcfe69417a30e92"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@linux-foundation.org",
        "time": "Thu Oct 18 03:07:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Oct 18 14:37:31 2007 -0700"
      },
      "message": "sparse pointer use of zero as null\n\nGet rid of sparse related warnings from places that use integer as NULL\npointer.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Stephen Hemminger \u003cshemminger@linux-foundation.org\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af767cbdd78f293485c294113885d95e7f1da123",
      "tree": "934d5c6180e808ee2062d8d2ef2ed758c452286d",
      "parents": [
        "63b4613c3f0d4b724ba259dc6c201bb68b884e1a"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Tue Oct 16 01:26:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:03 2007 -0700"
      },
      "message": "hugetlb: fix dynamic pool resize failure case\n\nWhen gather_surplus_pages() fails to allocate enough huge pages to satisfy\nthe requested reservation, it frees what it did allocate back to the buddy\nallocator.  put_page() should be called instead of update_and_free_page()\nto ensure that pool counters are updated as appropriate and the page\u0027s\nrefcount is decremented.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: David Gibson \u003chermes@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "63b4613c3f0d4b724ba259dc6c201bb68b884e1a",
      "tree": "878818a47052fd204aa0a5d34e592967732d59f9",
      "parents": [
        "6b0c880dfefecedb9ad353014ed41505c32aca82"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Tue Oct 16 01:26:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:03 2007 -0700"
      },
      "message": "hugetlb: fix hugepage allocation with memoryless nodes\n\nAnton found a problem with the hugetlb pool allocation when some nodes have\nno memory (http://marc.info/?l\u003dlinux-mm\u0026m\u003d118133042025995\u0026w\u003d2).  Lee worked\non versions that tried to fix it, but none were accepted.  Christoph has\ncreated a set of patches which allow for GFP_THISNODE allocations to fail\nif the node has no memory.\n\nCurrently, alloc_fresh_huge_page() returns NULL when it is not able to\nallocate a huge page on the current node, as specified by its custom\ninterleave variable.  The callers of this function, though, assume that a\nfailure in alloc_fresh_huge_page() indicates no hugepages can be allocated\non the system period.  This might not be the case, for instance, if we have\nan uneven NUMA system, and we happen to try to allocate a hugepage on a\nnode with less memory and fail, while there is still plenty of free memory\non the other nodes.\n\nTo correct this, make alloc_fresh_huge_page() search through all online\nnodes before deciding no hugepages can be allocated.  Add a helper function\nfor actually allocating the hugepage.  Use a new global nid iterator to\ncontrol which nid to allocate on.\n\nNote: we expect particular semantics for __GFP_THISNODE, which are now\nenforced even for memoryless nodes.  That is, there is should be no\nfallback to other nodes.  Therefore, we rely on the nid passed into\nalloc_pages_node() to be the nid the page comes from.  If this is\nincorrect, accounting will break.\n\nTested on x86 !NUMA, x86 NUMA, x86_64 NUMA and ppc64 NUMA (with 2\nmemoryless nodes).\n\nBefore on the ppc64 box:\nTrying to clear the hugetlb pool\nDone.       0 free\nTrying to resize the pool to 100\nNode 0 HugePages_Free:     25\nNode 1 HugePages_Free:     75\nNode 2 HugePages_Free:      0\nNode 3 HugePages_Free:      0\nDone. Initially     100 free\nTrying to resize the pool to 200\nNode 0 HugePages_Free:     50\nNode 1 HugePages_Free:    150\nNode 2 HugePages_Free:      0\nNode 3 HugePages_Free:      0\nDone.     200 free\n\nAfter:\nTrying to clear the hugetlb pool\nDone.       0 free\nTrying to resize the pool to 100\nNode 0 HugePages_Free:     50\nNode 1 HugePages_Free:     50\nNode 2 HugePages_Free:      0\nNode 3 HugePages_Free:      0\nDone. Initially     100 free\nTrying to resize the pool to 200\nNode 0 HugePages_Free:    100\nNode 1 HugePages_Free:    100\nNode 2 HugePages_Free:      0\nNode 3 HugePages_Free:      0\nDone.     200 free\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003chermes@gibson.dropbear.id.au\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\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": "6b0c880dfefecedb9ad353014ed41505c32aca82",
      "tree": "2cf472a539f6de265deede9fb580be821bf9dda1",
      "parents": [
        "e63e1e5a6b75416ab758025fd80e247c4f103b1b"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Tue Oct 16 01:26:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:03 2007 -0700"
      },
      "message": "hugetlb: fix pool resizing corner case\n\nWhen shrinking the size of the hugetlb pool via the nr_hugepages sysctl, we\nare careful to keep enough pages around to satisfy reservations.  But the\ncalculation is flawed for the following scenario:\n\nAction                          Pool Counters (Total, Free, Resv)\n\u003d\u003d\u003d\u003d\u003d\u003d                          \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nSet pool to 1 page              1 1 0\nMap 1 page MAP_PRIVATE          1 1 0\nTouch the page to fault it in   1 0 0\nSet pool to 3 pages             3 2 0\nMap 2 pages MAP_SHARED          3 2 2\nSet pool to 2 pages             2 1 2 \u003c-- Mistake, should be 3 2 2\nTouch the 2 shared pages        2 0 1 \u003c-- Program crashes here\n\nThe last touch above will terminate the process due to lack of huge pages.\n\nThis patch corrects the calculation so that it factors in pages being used\nfor private mappings.  Andrew, this is a standalone fix suitable for\nmainline.  It is also now corrected in my latest dynamic pool resizing\npatchset which I will send out soon.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: Ken Chen \u003ckenchen@google.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54f9f80d6543fb7b157d3b11e2e7911dc1379790",
      "tree": "70d34e45f4d1694609db25da0ccad90b4b0ad473",
      "parents": [
        "e4e574b767ba63101cfda2b42d72f38546319297"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Tue Oct 16 01:26:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:02 2007 -0700"
      },
      "message": "hugetlb: Add hugetlb_dynamic_pool sysctl\n\nThe maximum size of the huge page pool can be controlled using the overall\nsize of the hugetlb filesystem (via its \u0027size\u0027 mount option).  However in the\ncommon case the this will not be set as the pool is traditionally fixed in\nsize at boot time.  In order to maintain the expected semantics, we need to\nprevent the pool expanding by default.\n\nThis patch introduces a new sysctl controlling dynamic pool resizing.  When\nthis is enabled the pool will expand beyond its base size up to the size of\nthe hugetlb filesystem.  It is disabled by default.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Dave McCracken \u003cdave.mccracken@oracle.com\u003e\nCc: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: Badari Pulavarty \u003cpbadari@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": "e4e574b767ba63101cfda2b42d72f38546319297",
      "tree": "084b94d01c71ccd898f8df0ec441e6726e657e75",
      "parents": [
        "7893d1d505d59db9d4f35165c8b6d3c6dff40a32"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Tue Oct 16 01:26:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:02 2007 -0700"
      },
      "message": "hugetlb: Try to grow hugetlb pool for MAP_SHARED mappings\n\nShared mappings require special handling because the huge pages needed to\nfully populate the VMA must be reserved at mmap time.  If not enough pages are\navailable when making the reservation, allocate all of the shortfall at once\nfrom the buddy allocator and add the pages directly to the hugetlb pool.  If\nthey cannot be allocated, then fail the mapping.  The page surplus is\naccounted for in the same way as for private mappings; faulted surplus pages\nwill be freed at unmap time.  Reserved, surplus pages that have not been used\nmust be freed separately when their reservation has been released.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Dave McCracken \u003cdave.mccracken@oracle.com\u003e\nCc: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: Badari Pulavarty \u003cpbadari@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": "7893d1d505d59db9d4f35165c8b6d3c6dff40a32",
      "tree": "6bea3b41e111b1d1774980296a032012a3926e9c",
      "parents": [
        "6af2acb6619688046039234f716fd003e6ed2b3f"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Tue Oct 16 01:26:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:02 2007 -0700"
      },
      "message": "hugetlb: Try to grow hugetlb pool for MAP_PRIVATE mappings\n\nBecause we overcommit hugepages for MAP_PRIVATE mappings, it is possible that\nthe hugetlb pool will be exhausted or completely reserved when a hugepage is\nneeded to satisfy a page fault.  Before killing the process in this situation,\ntry to allocate a hugepage directly from the buddy allocator.\n\nThe explicitly configured pool size becomes a low watermark.  When dynamically\ngrown, the allocated huge pages are accounted as a surplus over the watermark.\n As huge pages are freed on a node, surplus pages are released to the buddy\nallocator so that the pool will shrink back to the watermark.\n\nSurplus accounting also allows for friendlier explicit pool resizing.  When\nshrinking a pool that is fully in-use, increase the surplus so pages will be\nreturned to the buddy allocator as soon as they are freed.  When growing a\npool that has a surplus, consume the surplus first and then allocate new\npages.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Dave McCracken \u003cdave.mccracken@oracle.com\u003e\nCc: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: Badari Pulavarty \u003cpbadari@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": "6af2acb6619688046039234f716fd003e6ed2b3f",
      "tree": "6afd273778dcbc4b2706a793c756a1ccd00a44f3",
      "parents": [
        "98f3cfc1dc7a53b629d43b7844a9b3f786213048"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Tue Oct 16 01:26:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:02 2007 -0700"
      },
      "message": "hugetlb: Move update_and_free_page\n\nDynamic huge page pool resizing.\n\nIn most real-world scenarios, configuring the size of the hugetlb pool\ncorrectly is a difficult task.  If too few pages are allocated to the pool,\napplications using MAP_SHARED may fail to mmap() a hugepage region and\napplications using MAP_PRIVATE may receive SIGBUS.  Isolating too much memory\nin the hugetlb pool means it is not available for other uses, especially those\nprograms not using huge pages.\n\nThe obvious answer is to let the hugetlb pool grow and shrink in response to\nthe runtime demand for huge pages.  The work Mel Gorman has been doing to\nestablish a memory zone for movable memory allocations makes dynamically\nresizing the hugetlb pool reliable within the limits of that zone.  This patch\nseries implements dynamic pool resizing for private and shared mappings while\nbeing careful to maintain existing semantics.  Please reply with your comments\nand feedback; even just to say whether it would be a useful feature to you.\nThanks.\n\nHow it works\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nUpon depletion of the hugetlb pool, rather than reporting an error immediately,\nfirst try and allocate the needed huge pages directly from the buddy allocator.\nCare must be taken to avoid unbounded growth of the hugetlb pool, so the\nhugetlb filesystem quota is used to limit overall pool size.\n\nThe real work begins when we decide there is a shortage of huge pages.  What\nhappens next depends on whether the pages are for a private or shared mapping.\nPrivate mappings are straightforward.  At fault time, if alloc_huge_page()\nfails, we allocate a page from the buddy allocator and increment the source\nnode\u0027s surplus_huge_pages counter.  When free_huge_page() is called for a page\non a node with a surplus, the page is freed directly to the buddy allocator\ninstead of the hugetlb pool.\n\nBecause shared mappings require all of the pages to be reserved up front, some\nadditional work must be done at mmap() to support them.  We determine the\nreservation shortage and allocate the required number of pages all at once.\nThese pages are then added to the hugetlb pool and marked reserved.  Where that\nis not possible the mmap() will fail.  As with private mappings, the\nappropriate surplus counters are updated.  Since reserved huge pages won\u0027t\nnecessarily be used by the process, we can\u0027t be sure that free_huge_page() will\nalways be called to return surplus pages to the buddy allocator.  To prevent\nthe huge page pool from bloating, we must free unused surplus pages when their\nreservation has ended.\n\nControlling it\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nWith the entire patch series applied, pool resizing is off by default so unless\nspecific action is taken, the semantics are unchanged.\n\nTo take advantage of the flexibility afforded by this patch series one must\ntolerate a change in semantics.  To control hugetlb pool growth, the following\ntechniques can be employed:\n\n * A sysctl tunable to enable/disable the feature entirely\n * The size\u003d mount option for hugetlbfs filesystems to limit pool size\n\nPerformance\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nWhen contiguous memory is readily available, it is expected that the cost of\ndynamicly resizing the pool will be small.  This series has been performance\ntested with \u0027stream\u0027 to measure this cost.\n\nStream (http://www.cs.virginia.edu/stream/) was linked with libhugetlbfs to\nenable remapping of the text and data/bss segments into huge pages.\n\nStream with small array\n-----------------------\nBaseline: \tnr_hugepages \u003d 0, No libhugetlbfs segment remapping\nPreallocated:\tnr_hugepages \u003d 5, Text and data/bss remapping\nDynamic:\tnr_hugepages \u003d 0, Text and data/bss remapping\n\n\t\t\t\tRate (MB/s)\nFunction\tBaseline\tPreallocated\tDynamic\nCopy:\t\t4695.6266\t5942.8371\t5982.2287\nScale:\t\t4451.5776\t5017.1419\t5658.7843\nAdd:\t\t5815.8849\t7927.7827\t8119.3552\nTriad:\t\t5949.4144\t8527.6492\t8110.6903\n\nStream with large array\n-----------------------\nBaseline: \tnr_hugepages \u003d  0, No libhugetlbfs segment remapping\nPreallocated:\tnr_hugepages \u003d 67, Text and data/bss remapping\nDynamic:\tnr_hugepages \u003d  0, Text and data/bss remapping\n\n\t\t\t\tRate (MB/s)\nFunction\tBaseline\tPreallocated\tDynamic\nCopy:\t\t2227.8281\t2544.2732\t2546.4947\nScale:\t\t2136.3208\t2430.7294\t2421.2074\nAdd:\t\t2773.1449\t4004.0021\t3999.4331\nTriad:\t\t2748.4502\t3777.0109\t3773.4970\n\n* All numbers are averages taken from 10 consecutive runs with a maximum\n  standard deviation of 1.3 percent noted.\n\nThis patch:\n\nSimply move update_and_free_page() so that it can be reused later in this\npatch series.  The implementation is not changed.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Dave McCracken \u003cdave.mccracken@oracle.com\u003e\nAcked-by: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: Badari Pulavarty \u003cpbadari@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": "954ffcb35f5aca428661d29b96c4eee82b3c19cd",
      "tree": "2dd8aaf26a8ae81b461b6d5d824ae8744690e483",
      "parents": [
        "97ee052461446526e1de7236497e6f1b1ffedf8c"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Oct 16 01:25:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:59 2007 -0700"
      },
      "message": "flush icache before set_pte() on ia64: flush icache at set_pte\n\nCurrent ia64 kernel flushes icache by lazy_mmu_prot_update() *after*\nset_pte().  This is too late.  This patch removes lazy_mmu_prot_update and\nadd modfied set_pte() for flushing if necessary.\n\nThis patch flush icache of a page when\n\tnew pte has exec bit.\n\t\u0026\u0026 new pte has present bit\n\t\u0026\u0026 new pte is user\u0027s page.\n\t\u0026\u0026 (old *ptep is not present\n            || new pte\u0027s pfn is not same to old *ptep\u0027s ptn)\n\t\u0026\u0026 new pte\u0027s page has no Pg_arch_1 bit.\n\t   Pg_arch_1 is set when a page is cache consistent.\n\nI think this condition checks are much easier to understand than considering\n\"Where sync_icache_dcache() should be inserted ?\".\n\npte_user() for ia64 was removed by http://lkml.org/lkml/2007/6/12/67 as\nclean-up. So, I added it again.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "281e0e3b34acb76a157576d27abc85c09fcf78e3",
      "tree": "136dc7376976685539c132690ff74aea79642737",
      "parents": [
        "8814842fbb6d8907cd23711cc4cbc3a6a191080f"
      ],
      "author": {
        "name": "Ralf Baechle",
        "email": "ralf@linux-mips.org",
        "time": "Mon Oct 01 01:20:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 01 07:52:23 2007 -0700"
      },
      "message": "hugetlb: fix clear_user_highpage arguments\n\nThe virtual address space argument of clear_user_highpage is supposed to be\nthe virtual address where the page being cleared will eventually be mapped.\n This allows architectures with virtually indexed caches a few clever\ntricks.  That sort of trick falls over in painful ways if the virtual\naddress argument is wrong.\n\nSigned-off-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "480eccf9ae1073b87bb4fe118971fbf134a5bc61",
      "tree": "b66cd85cd6ad9dc7c141d34837a848111d036584",
      "parents": [
        "28f300d23674fa01ae747c66ce861d4ee6aebe8c"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Tue Sep 18 22:46:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Sep 19 11:24:18 2007 -0700"
      },
      "message": "Fix NUMA Memory Policy Reference Counting\n\nThis patch proposes fixes to the reference counting of memory policy in the\npage allocation paths and in show_numa_map().  Extracted from my \"Memory\nPolicy Cleanups and Enhancements\" series as stand-alone.\n\nShared policy lookup [shmem] has always added a reference to the policy,\nbut this was never unrefed after page allocation or after formatting the\nnuma map data.\n\nDefault system policy should not require additional ref counting, nor\nshould the current task\u0027s task policy.  However, show_numa_map() calls\nget_vma_policy() to examine what may be [likely is] another task\u0027s policy.\nThe latter case needs protection against freeing of the policy.\n\nThis patch adds a reference count to a mempolicy returned by\nget_vma_policy() when the policy is a vma policy or another task\u0027s\nmempolicy.  Again, shared policy is already reference counted on lookup.  A\nmatching \"unref\" [__mpol_free()] is performed in alloc_page_vma() for\nshared and vma policies, and in show_numa_map() for shared and another\ntask\u0027s mempolicy.  We can call __mpol_free() directly, saving an admittedly\ninexpensive inline NULL test, because we know we have a non-NULL policy.\n\nHandling policy ref counts for hugepages is a bit trickier.\nhuge_zonelist() returns a zone list that might come from a shared or vma\n\u0027BIND policy.  In this case, we should hold the reference until after the\nhuge page allocation in dequeue_hugepage().  The patch modifies\nhuge_zonelist() to return a pointer to the mempolicy if it needs to be\nunref\u0027d after allocation.\n\nKernel Build [16cpu, 32GB, ia64] - average of 10 runs:\n\n\t\tw/o patch\tw/ refcount patch\n\t    Avg\t  Std Devn\t   Avg\t  Std Devn\nReal:\t 100.59\t    0.38\t 100.63\t    0.43\nUser:\t1209.60\t    0.37\t1209.91\t    0.31\nSystem:   81.52\t    0.42\t  81.64\t    0.34\n\nSigned-off-by:  Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Christoph Lameter \u003cclameter@sgi.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": "a89182c76e54134081cfec6409df06731c5cb98f",
      "tree": "270616c2f6a1ce63a0bbd196a00e267b27e08250",
      "parents": [
        "d4c63b7c74507c424afcc9c80ba77a55bfb0d07e"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Wed Aug 22 14:01:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Aug 22 19:52:46 2007 -0700"
      },
      "message": "Fix VM_FAULT flags conversion for hugetlb\n\nIt seems a simple mistake was made when converting follow_hugetlb_page()\nover to the VM_FAULT flags bitmasks (in \"mm: fault feedback #2\", commit\n83c54070ee1a2d05c89793884bea1a03f2851ed4).\n\nBy using the wrong bitmask, hugetlb_fault() failures are not being\nrecognized.  This results in an infinite loop whenever follow_hugetlb_page\nis involved in a failed fault.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5ab3ee7b1cd5c91eb2272764f9d7d1fe4749681e",
      "tree": "82c1fbc5e3a41651d4c0d45cf13d85760708c184",
      "parents": [
        "be1ff386e768ee4fc19bb7da48cee4fc4cb4e75b"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Mon Jul 23 18:44:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 24 12:24:59 2007 -0700"
      },
      "message": "fix hugetlb page allocation leak\n\ndequeue_huge_page() has a serious memory leak upon hugetlb page\nallocation.  The for loop continues on allocating hugetlb pages out of\nall allowable zone, where this function is supposedly only dequeue one\nand only one pages.\n\nFixed it by breaking out of the for loop once a hugetlb page is found.\n\nSigned-off-by: Ken Chen \u003ckenchen@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": "f8af0bb890d6cdcb09ec042c128e217a7c500355",
      "tree": "c74f53e64b74162488b7ca3f5199acf7f5b6e501",
      "parents": [
        "7ed5cb2b73d0c4165c0504c95454fade0c0bf3d9"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Thu Jul 19 01:49:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:50 2007 -0700"
      },
      "message": "hugetlb: use set_compound_page_dtor\n\nUse appropriate accessor function to set compound page destructor\nfunction.\n\nCc:  William Irwin \u003cwli@holomorphy.com\u003e\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nAcked-by: Adam Litke \u003cagl@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": "7ed5cb2b73d0c4165c0504c95454fade0c0bf3d9",
      "tree": "37b15b57986466531c5a0debb6b52660ca47e86a",
      "parents": [
        "e3aded3cc289113c7bc729ef4cb75e56d9aa71be"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Thu Jul 19 01:49:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:50 2007 -0700"
      },
      "message": "Remove nid_lock from alloc_fresh_huge_page\n\nThe fix to that race in alloc_fresh_huge_page() which could give an illegal\nnode ID did not need nid_lock at all: the fix was to replace static int nid\nby static int prev_nid and do the work on local int nid.  nid_lock did make\nsure that racers strictly roundrobin the nodes, but that\u0027s not something we\nneed to enforce strictly.  Kill nid_lock.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3abf7afd406866a84276d3ed04f4edf6070c9cb5",
      "tree": "4ee66f7d1a12261cbc7139b99b4fa94a8ecab122",
      "parents": [
        "dd00cc486ab1c17049a535413d1751ef3482141c"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Jul 19 01:49:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:50 2007 -0700"
      },
      "message": "dequeue_huge_page() warning fix\n\nmm/hugetlb.c: In function `dequeue_huge_page\u0027:\nmm/hugetlb.c:72: warning: \u0027nid\u0027 might be used uninitialized in this function\n\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003chermes@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83c54070ee1a2d05c89793884bea1a03f2851ed4",
      "tree": "dc732f5a9b93fb7004ed23f551bd98b77cc580e0",
      "parents": [
        "d0217ac04ca6591841e5665f518e38064f4e65bd"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:47:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: fault feedback #2\n\nThis patch completes Linus\u0027s wish that the fault return codes be made into\nbit flags, which I agree makes everything nicer.  This requires requires\nall handle_mm_fault callers to be modified (possibly the modifications\nshould go further and do things like fault accounting in handle_mm_fault --\nhowever that would be for another patch).\n\n[akpm@linux-foundation.org: fix alpha build]\n[akpm@linux-foundation.org: fix s390 build]\n[akpm@linux-foundation.org: fix sparc build]\n[akpm@linux-foundation.org: fix sparc64 build]\n[akpm@linux-foundation.org: fix ia64 build]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ian Molton \u003cspyro@f2s.com\u003e\nCc: Bryan Wu \u003cbryan.wu@analog.com\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Greg Ungerer \u003cgerg@uclinux.org\u003e\nCc: Matthew Wilcox \u003cwilly@debian.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Kazumoto Kojima \u003ckkojima@rr.iij4u.or.jp\u003e\nCc: Richard Curnow \u003crc@rc0.org.uk\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nCc: Miles Bader \u003cuclinux-v850@lsi.nec.co.jp\u003e\nCc: Chris Zankel \u003cchris@zankel.net\u003e\nAcked-by: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nAcked-by: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nAcked-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nAcked-by: Andi Kleen \u003cak@muc.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n[ Still apparently needs some ARM and PPC loving - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0217ac04ca6591841e5665f518e38064f4e65bd",
      "tree": "d3309094bb734d34773f97d642593e298a5cfcfc",
      "parents": [
        "ed2f2f9b3ff8debdf512f7687b232c3c1d7d60d7"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:47:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: fault feedback #1\n\nChange -\u003efault prototype.  We now return an int, which contains\nVM_FAULT_xxx code in the low byte, and FAULT_RET_xxx code in the next byte.\n FAULT_RET_ code tells the VM whether a page was found, whether it has been\nlocked, and potentially other things.  This is not quite the way he wanted\nit yet, but that\u0027s changed in the next patch (which requires changes to\narch code).\n\nThis means we no longer set VM_CAN_INVALIDATE in the vma in order to say\nthat a page is locked which requires filemap_nopage to go away (because we\ncan no longer remain backward compatible without that flag), but we were\ngoing to do that anyway.\n\nstruct fault_data is renamed to struct vm_fault as Linus asked. address\nis now a void __user * that we should firmly encourage drivers not to use\nwithout really good reason.\n\nThe page is now returned via a page pointer in the vm_fault struct.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a1ed3dda0ad181532f1e0f0d548067fb9fdddac4",
      "tree": "dbbb62a8a1816e24369caca1886576154b588340",
      "parents": [
        "b5fab14e5d87df4d94161ae5f5e0c8625f9ffda2"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Tue Jul 17 04:03:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:02 2007 -0700"
      },
      "message": "MM: Make needlessly global hugetlb_no_page() static.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "396faf0303d273219db5d7eb4a2879ad977ed185",
      "tree": "96cb64fd6713ef7a924f4f878e259aea781f079a",
      "parents": [
        "2a1e274acf0b1c192face19a4be7c12d4503eaaf"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jul 17 04:03:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:22:59 2007 -0700"
      },
      "message": "Allow huge page allocations to use GFP_HIGH_MOVABLE\n\nHuge pages are not movable so are not allocated from ZONE_MOVABLE.  However,\nas ZONE_MOVABLE will always have pages that can be migrated or reclaimed, it\ncan be used to satisfy hugepage allocations even when the system has been\nrunning a long time.  This allows an administrator to resize the hugepage pool\nat runtime depending on the size of ZONE_MOVABLE.\n\nThis patch adds a new sysctl called hugepages_treat_as_movable.  When a\nnon-zero value is written to it, future allocations for the huge page pool\nwill use ZONE_MOVABLE.  Despite huge pages being non-movable, we do not\nintroduce additional external fragmentation of note as huge pages are always\nthe largest contiguous block we care about.\n\n[akpm@linux-foundation.org: various fixes]\nSigned-off-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": "f96efd585b8d847181f81bf16721f96ded18d9fe",
      "tree": "10821321b4f501e3126606ef2b54eb356ec8ef77",
      "parents": [
        "2706a1b89b1a3e7434a668d4a9d15f616da96685"
      ],
      "author": {
        "name": "Joe Jin",
        "email": "joe.jin@oracle.com",
        "time": "Sun Jul 15 23:38:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:35 2007 -0700"
      },
      "message": "hugetlb: fix race in alloc_fresh_huge_page()\n\nThat static `nid\u0027 index needs locking.  Without it we can end up calling\nalloc_pages_node() with an illegal node ID and the kernel crashes.\n\nAcked-by: gurudas pai \u003cgurudas.pai@oracle.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": "31a5c6e4f25704f51f9a1373f0784034306d4cf1",
      "tree": "873acb320c44558e831724088695d13110e1f093",
      "parents": [
        "f0c0b2b808f232741eadac272bd4bc51f18df0f4"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Sun Jul 15 23:38:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:35 2007 -0700"
      },
      "message": "hugetlb: remove unnecessary nid initialization\n\nnid is initialized to numa_node_id() but will either be overwritten in\nthe loop or not used in the conditional. So remove the initialization.\n\nSigned-off-by: 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": "8dab5241d06bfc9ee141ea78c56cde5070d7460d",
      "tree": "dd9dc3c64c17862b169f4cbe5fd4a108d960c920",
      "parents": [
        "679ce0ace6b1a07043bc3b405a34ddccad808886"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sat Jun 16 10:16:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Jun 16 13:16:16 2007 -0700"
      },
      "message": "Rework ptep_set_access_flags and fix sun4c\n\nSome changes done a while ago to avoid pounding on ptep_set_access_flags and\nupdate_mmu_cache in some race situations break sun4c which requires\nupdate_mmu_cache() to always be called on minor faults.\n\nThis patch reworks ptep_set_access_flags() semantics, implementations and\ncallers so that it\u0027s now responsible for returning whether an update is\nnecessary or not (basically whether the PTE actually changed).  This allow\nfixing the sparc implementation to always return 1 on sun4c.\n\n[akpm@linux-foundation.org: fixes, cleanups]\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Mark Fortescue \u003cmark@mtfhpc.demon.co.uk\u003e\nAcked-by: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@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": "8a63011275e1a0ec9389e8c7d9b08caab8957ca0",
      "tree": "ae631cb1206c60a8b375384a880cabf7dc156d00",
      "parents": [
        "85badbdf5120d246ce2bb3f1a7689a805f9c9006"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Wed May 09 02:33:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:49 2007 -0700"
      },
      "message": "pretend cpuset has some form of hugetlb page reservation\n\nWhen cpuset is configured, it breaks the strict hugetlb page reservation as\nthe accounting is done on a global variable.  Such reservation is\ncompletely rubbish in the presence of cpuset because the reservation is not\nchecked against page availability for the current cpuset.  Application can\nstill potentially OOM\u0027ed by kernel with lack of free htlb page in cpuset\nthat the task is in.  Attempt to enforce strict accounting with cpuset is\nalmost impossible (or too ugly) because cpuset is too fluid that task or\nmemory node can be dynamically moved between cpusets.\n\nThe change of semantics for shared hugetlb mapping with cpuset is\nundesirable.  However, in order to preserve some of the semantics, we fall\nback to check against current free page availability as a best attempt and\nhopefully to minimize the impact of changing semantics that cpuset has on\nhugetlb.\n\nSigned-off-by: Ken Chen \u003ckenchen@google.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ace4bd29c248b51db3f8a97e9b59740dc6caa074",
      "tree": "474d6b74fcd4ab07262d624a278faf65e14ddc4d",
      "parents": [
        "ba8b45cea5f632540d561d37d94c71c07f6af1aa"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Wed May 09 02:33:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:48 2007 -0700"
      },
      "message": "fix leaky resv_huge_pages when cpuset is in use\n\nThe internal hugetlb resv_huge_pages variable can permanently leak nonzero\nvalue in the error path of hugetlb page fault handler when hugetlb page is\nused in combination of cpuset.  The leaked count can permanently trap N\nnumber of hugetlb pages in unusable \"reserved\" state.\n\nSteps to reproduce the bug:\n\n  (1) create two cpuset, user1 and user2\n  (2) reserve 50 htlb pages in cpuset user1\n  (3) attempt to shmget/shmat 50 htlb page inside cpuset user2\n  (4) kernel oom the user process in step 3\n  (5) ipcrm the shm segment\n\nAt this point resv_huge_pages will have a count of 49, even though\nthere are no active hugetlbfs file nor hugetlb shared memory segment\nin the system.  The leak is permanent and there is no recovery method\nother than system reboot. The leaked count will hold up all future use\nof that many htlb pages in all cpusets.\n\nThe culprit is that the error path of alloc_huge_page() did not\nproperly undo the change it made to resv_huge_page, causing\ninconsistent state.\n\nSigned-off-by: Ken Chen \u003ckenchen@google.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Martin Bligh \u003cmbligh@google.com\u003e\nAcked-by: David Gibson \u003cdwg@au1.ibm.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": "6649a3863232eb2e2f15ea6c622bd8ceacf96d76",
      "tree": "c3b77d20afd1e7215186244375f6cdcaad94d4b2",
      "parents": [
        "f336953bfdee8d5e7f69cb8e080704546541f04b"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Thu Feb 08 14:20:27 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 09 09:25:46 2007 -0800"
      },
      "message": "[PATCH] hugetlb: preserve hugetlb pte dirty state\n\n__unmap_hugepage_range() is buggy that it does not preserve dirty state of\nhuge_pte when unmapping hugepage range.  It causes data corruption in the\nevent of dop_caches being used by sys admin.  For example, an application\ncreates a hugetlb file, modify pages, then unmap it.  While leaving the\nhugetlb file alive, comes along sys admin doing a \"echo 3 \u003e\n/proc/sys/vm/drop_caches\".\n\ndrop_pagecache_sb() will happily free all pages that aren\u0027t marked dirty if\nthere are no active mapping.  Later when application remaps the hugetlb\nfile back and all data are gone, triggering catastrophic flip over on\napplication.\n\nNot only that, the internal resv_huge_pages count will also get all messed\nup.  Fix it up by marking page dirty appropriately.\n\nSigned-off-by: Ken Chen \u003ckenchen@google.com\u003e\nCc: \"Nish Aravamudan\" \u003cnish.aravamudan@gmail.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \u003cstable@kernel.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9de455b20705f36384a711d4a20bcf7ba1ab180b",
      "tree": "6eb3643514d12d06a69a5c889d612f66b68288e6",
      "parents": [
        "77fff4ae2b7bba6d66a8287d9ab948e2b6c16145"
      ],
      "author": {
        "name": "Atsushi Nemoto",
        "email": "anemo@mba.ocn.ne.jp",
        "time": "Tue Dec 12 17:14:55 2006 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:27:08 2006 -0800"
      },
      "message": "[PATCH] Pass vma argument to copy_user_highpage().\n\nTo allow a more effective copy_user_highpage() on certain architectures,\na vma argument is added to the function and cow_user_page() allowing\nthe implementation of these functions to check for the VM_EXEC bit.\n\nThe main part of this patch was originally written by Ralf Baechle;\nAtushi Nemoto did the the debugging.\n\nSigned-off-by: Atsushi Nemoto \u003canemo@mba.ocn.ne.jp\u003e\nSigned-off-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "02a0e53d8227aff5e62e0433f82c12c1c2805fd6",
      "tree": "fe32435308e5f1afe8bd12357bd8c5ff3b4133c7",
      "parents": [
        "55935a34a428a1497e3b37982e2782c09c6f914d"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Wed Dec 13 00:34:25 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:49 2006 -0800"
      },
      "message": "[PATCH] cpuset: rework cpuset_zone_allowed api\n\nElaborate the API for calling cpuset_zone_allowed(), so that users have to\nexplicitly choose between the two variants:\n\n  cpuset_zone_allowed_hardwall()\n  cpuset_zone_allowed_softwall()\n\nUntil now, whether or not you got the hardwall flavor depended solely on\nwhether or not you or\u0027d in the __GFP_HARDWALL gfp flag to the gfp_mask\nargument.\n\nIf you didn\u0027t specify __GFP_HARDWALL, you implicitly got the softwall\nversion.\n\nUnfortunately, this meant that users would end up with the softwall version\nwithout thinking about it.  Since only the softwall version might sleep,\nthis led to bugs with possible sleeping in interrupt context on more than\none occassion.\n\nThe hardwall version requires that the current tasks mems_allowed allows\nthe node of the specified zone (or that you\u0027re in interrupt or that\n__GFP_THISNODE is set or that you\u0027re on a one cpuset system.)\n\nThe softwall version, depending on the gfp_mask, might allow a node if it\nwas allowed in the nearest enclusing cpuset marked mem_exclusive (which\nrequires taking the cpuset lock \u0027callback_mutex\u0027 to evaluate.)\n\nThis patch removes the cpuset_zone_allowed() call, and forces the caller to\nexplicitly choose between the hardwall and the softwall case.\n\nIf the caller wants the gfp_mask to determine this choice, they should (1)\nbe sure they can sleep or that __GFP_HARDWALL is set, and (2) invoke the\ncpuset_zone_allowed_softwall() routine.\n\nThis adds another 100 or 200 bytes to the kernel text space, due to the few\nlines of nearly duplicate code at the top of both cpuset_zone_allowed_*\nroutines.  It should save a few instructions executed for the calls that\nturned into calls of cpuset_zone_allowed_hardwall, thanks to not having to\nset (before the call) then check (within the call) the __GFP_HARDWALL flag.\n\nFor the most critical call, from get_page_from_freelist(), the same\ninstructions are executed as before -- the old cpuset_zone_allowed()\nroutine it used to call is the same code as the\ncpuset_zone_allowed_softwall() routine that it calls now.\n\nNot a perfect win, but seems worth it, to reduce this chance of hitting a\nsleeping with irq off complaint again.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "33f2ef89f8e181486b63fdbdc97c6afa6ca9f34b",
      "tree": "b90eac24ff367bc628c44eaa51a9f0ea1b69d1a4",
      "parents": [
        "3c517a6132098ca37e122a2980fc64a9e798b0d7"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Wed Dec 06 20:33:32 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] mm: make compound page destructor handling explicit\n\nCurrently we we use the lru head link of the second page of a compound page\nto hold its destructor.  This was ok when it was purely an internal\nimplmentation detail.  However, hugetlbfs overrides this destructor\nviolating the layering.  Abstract this out as explicit calls, also\nintroduce a type for the callback function allowing them to be type\nchecked.  For each callback we pre-declare the function, causing a type\nerror on definition rather than on use elsewhere.\n\n[akpm@osdl.org: cleanups]\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cace673d376d97b0c66ffa0a49b8d588a696d5d2",
      "tree": "c85c2ad65ad10132f00b484e91c8bfcd6e3f1afc",
      "parents": [
        "39dde65c9940c97fcd178a3d2b1c57ed8b7b68aa"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Wed Dec 06 20:32:07 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:21 2006 -0800"
      },
      "message": "[PATCH] htlb forget rss with pt sharing\n\nImprecise RSS accounting is an irritating ill effect with pt sharing.  After\nconsulted with several VM experts, I have tried various methods to solve that\nproblem: (1) iterate through all mm_structs that share the PT and increment\ncount; (2) keep RSS count in page table structure and then sum them up at\nreporting time.  None of the above methods yield any satisfactory\nimplementation.\n\nSince process RSS accounting is pure information only, I propose we don\u0027t\ncount them at all for hugetlb page.  rlimit has such field, though there is\nabsolutely no enforcement on limiting that resource.  One other method is to\naccount all RSS at hugetlb mmap time regardless they are faulted or not.  I\nopt for the simplicity of no accounting at all.\n\nHugetlb page are special, they are reserved up front in global reservation\npool and is not reclaimable.  From physical memory resource point of view, it\nis already consumed regardless whether there are users using them.\n\nIf the concern is that RSS can be used to control resource allocation, we\nalready can specify hugetlb fs size limit and sysadmin can enforce that at\nmount time.  Combined with the two points mentioned above, I fail to see if\nthere is anything got affected because of this patch.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Dave McCracken \u003cdmccr@us.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "39dde65c9940c97fcd178a3d2b1c57ed8b7b68aa",
      "tree": "750818d68ac7381f80fec31491e1d1c78df4b9f6",
      "parents": [
        "e1dbeda60a7ea9e82a908d93c07308d104d50d79"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Wed Dec 06 20:32:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:21 2006 -0800"
      },
      "message": "[PATCH] shared page table for hugetlb page\n\nFollowing up with the work on shared page table done by Dave McCracken.  This\nset of patch target shared page table for hugetlb memory only.\n\nThe shared page table is particular useful in the situation of large number of\nindependent processes sharing large shared memory segments.  In the normal\npage case, the amount of memory saved from process\u0027 page table is quite\nsignificant.  For hugetlb, the saving on page table memory is not the primary\nobjective (as hugetlb itself already cuts down page table overhead\nsignificantly), instead, the purpose of using shared page table on hugetlb is\nto allow faster TLB refill and smaller cache pollution upon TLB miss.\n\nWith PT sharing, pte entries are shared among hundreds of processes, the cache\nconsumption used by all the page table is smaller and in return, application\ngets much higher cache hit ratio.  One other effect is that cache hit ratio\nwith hardware page walker hitting on pte in cache will be higher and this\nhelps to reduce tlb miss latency.  These two effects contribute to higher\napplication performance.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Dave McCracken \u003cdmccr@us.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c0a499c2c42992cff097b38be29d2ba60d2fd99a",
      "tree": "e02e80f190eb6f4eedb2c991d92840137505f8f8",
      "parents": [
        "0798e5193cd70f6c867ec176d7730589f944c627"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Wed Dec 06 20:31:39 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:20 2006 -0800"
      },
      "message": "[PATCH] __unmap_hugepage_range(): add comment\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ebed4bfc8da8df5b6b0bc4a5064a949f04683509",
      "tree": "9991be7829c6a03d4a8c3307dae6b43e0f392dc5",
      "parents": [
        "856fc29505556cf263f3dcda2533cf3766c14ab6"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 28 10:38:43 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 28 11:30:53 2006 -0700"
      },
      "message": "[PATCH] hugetlb: fix absurd HugePages_Rsvd\n\nIf you truncated an mmap\u0027ed hugetlbfs file, then faulted on the truncated\narea, /proc/meminfo\u0027s HugePages_Rsvd wrapped hugely \"negative\".  Reinstate my\npreliminary i_size check before attempting to allocate the page (though this\nonly fixes the most obvious case: more work will be needed here).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: \"Chen, Kenneth W\" \u003ckenneth.w.chen@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "502717f4e112b18d9c37753a32f675bec9f2838b",
      "tree": "90e674229bbd7caa05e740dfe719cf8749d0eb27",
      "parents": [
        "97c7801cd5b0bb6a38c16108a496235474dc6310"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Wed Oct 11 01:20:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:15 2006 -0700"
      },
      "message": "[PATCH] hugetlb: fix linked list corruption in unmap_hugepage_range()\n\ncommit fe1668ae5bf0145014c71797febd9ad5670d5d05 causes kernel to oops with\nlibhugetlbfs test suite.  The problem is that hugetlb pages can be shared\nby multiple mappings.  Multiple threads can fight over page-\u003elru in the\nunmap path and bad things happen.  We now serialize __unmap_hugepage_range\nto void concurrent linked list manipulation.  Such serialization is also\nneeded for shared page table page on hugetlb area.  This patch will fixed\nthe bug and also serve as a prepatch for shared page table.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fe1668ae5bf0145014c71797febd9ad5670d5d05",
      "tree": "a1ad042a0c9b604653ca24645358fe31d1bbcfd6",
      "parents": [
        "e80ee884ae0e3794ef2b65a18a767d502ad712ee"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Wed Oct 04 02:15:24 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 07:55:12 2006 -0700"
      },
      "message": "[PATCH] enforce proper tlb flush in unmap_hugepage_range\n\nSpotted by Hugh that hugetlb page is free\u0027ed back to global pool before\nperforming any TLB flush in unmap_hugepage_range().  This potentially allow\nthreads to abuse free-alloc race condition.\n\nThe generic tlb gather code is unsuitable to use by hugetlb, I just open\ncoded a page gathering list and delayed put_page until tlb flush is\nperformed.\n\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: William Irwin \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "89fa30242facca249aead2aac03c4c69764f911c",
      "tree": "1ac46b4777b819f2a4793d8e37330576ae5089ec",
      "parents": [
        "4415cc8df630b05d3a54267d5f3e5c0b63a4ec05"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:52 2006 -0700"
      },
      "message": "[PATCH] NUMA: Add zone_to_nid function\n\nThere are many places where we need to determine the node of a zone.\nCurrently we use a difficult to read sequence of pointer dereferencing.\nPut that into an inline function and use throughout VM.  Maybe we can find\na way to optimize the lookup in the future.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4415cc8df630b05d3a54267d5f3e5c0b63a4ec05",
      "tree": "528a12aceb17a9c62323425bdc1dc989eb0375c5",
      "parents": [
        "5a291b98b2116d669449885abef3000f747504b3"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:52 2006 -0700"
      },
      "message": "[PATCH] Hugepages: Use page_to_nid rather than traversing zone pointers\n\nI found two location in hugetlb.c where we chase pointer instead of using\npage_to_nid().  Page_to_nid is more effective and can get the node directly\nfrom page flags.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a43a8c39bbb493c9e93f6764b350de2e33e18e92",
      "tree": "a3f0042371810ce6d076751d8e403baaa3d2630e",
      "parents": [
        "e8f03d02080b25f53cd6bba8dc3a297803f18c01"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Fri Jun 23 02:03:15 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:48 2006 -0700"
      },
      "message": "[PATCH] tightening hugetlb strict accounting\n\nCurrent hugetlb strict accounting for shared mapping always assume mapping\nstarts at zero file offset and reserves pages between zero and size of the\nfile.  This assumption often reserves (or lock down) a lot more pages then\nnecessary if application maps at none zero file offset.  libhugetlbfs is\none example that requires proper reservation on shared mapping starts at\nnone zero offset.\n\nThis patch extends the reservation and hugetlb strict accounting to support\nany arbitrary pair of (offset, len), resulting a much more robust and\naccurate scheme.  More importantly, it won\u0027t lock down any hugetlb pages\noutside file mapping.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "78c997a4be7d1ed3ff4c27f23d30a0185d39bcbf",
      "tree": "6ca625d590c7ec2e31acca3f2a1d28dce2e96332",
      "parents": [
        "d6692183ac1d8f4a4e4015f9ce9acc2514618e0b"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Fri Mar 31 02:30:01 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:50 2006 -0800"
      },
      "message": "[PATCH] hugetlb: don\u0027t allow free hugetlb count fall below reserved count\n\nWith strict page reservation, I think kernel should enforce number of free\nhugetlb page don\u0027t fall below reserved count.  Currently it is possible in\nthe sysctl path.  Add proper check in sysctl to disallow that.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d6692183ac1d8f4a4e4015f9ce9acc2514618e0b",
      "tree": "15d930c84cc93df5bc53ed29290abd46c3135272",
      "parents": [
        "93fac7041f082297b93655a0e49f659cd7520e40"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Fri Mar 31 02:29:57 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:49 2006 -0800"
      },
      "message": "[PATCH] fix extra page ref count in follow_hugetlb_page\n\ngit-commit: d5d4b0aa4e1430d73050babba999365593bdb9d2\n\"[PATCH] optimize follow_hugetlb_page\" breaks mlock on hugepage areas.\n\nI mis-interpret pages argument and made get_page() unconditional.  It\nshould only get a ref count when \"pages\" argument is non-null.\n\nCredit goes to Adam Litke who spotted the bug.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fdb7cc59084ba7eef935e4e40aaaf538ee34c625",
      "tree": "d31bd847f2d9ea3f5b2a632c718b53797172af88",
      "parents": [
        "9b65ef59d42a56fa1358958ede77aaa5bac385a8"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Wed Mar 22 00:09:10 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:06 2006 -0800"
      },
      "message": "[PATCH] mm: hugetlb alloc_fresh_huge_page bogus node loop fix\n\nFix bogus node loop in hugetlb.c alloc_fresh_huge_page(), which was\nassuming that nodes are numbered contiguously from 0 to num_online_nodes().\nOnce the hotplug folks get this far, that will be false.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d5d4b0aa4e1430d73050babba999365593bdb9d2",
      "tree": "67199d156f61217f9493d31aa4a9bfbb9c97412e",
      "parents": [
        "bba1e9b2111b14625f670bd07e57fd7ed57ce804"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Wed Mar 22 00:09:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:04 2006 -0800"
      },
      "message": "[PATCH] optimize follow_hugetlb_page\n\nfollow_hugetlb_page() walks a range of user virtual address and then fills\nin list of struct page * into an array that is passed from the argument\nlist.  It also gets a reference count via get_page().  For compound page,\nget_page() actually traverse back to head page via page_private() macro and\nthen adds a reference count to the head page.  Since we are doing a virt to\npte look up, kernel already has a struct page pointer into the head page.\nSo instead of traverse into the small unit page struct and then follow a\nlink back to the head page, optimize that with incrementing the reference\ncount directly on the head page.\n\nThe benefit is that we don\u0027t take a cache miss on accessing page struct for\nthe corresponding user address and more importantly, not to pollute the\ncache with a \"not very useful\" round trip of pointer chasing.  This adds a\nmoderate performance gain on an I/O intensive database transaction\nworkload.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "27a85ef1b81300cfff06b4c8037e9914dfb09acc",
      "tree": "1a8d9bc4c5611542273e57fc2606c12905906a57",
      "parents": [
        "b45b5bd65f668a665db40d093e4e1fe563533608"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Wed Mar 22 00:08:56 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:03 2006 -0800"
      },
      "message": "[PATCH] hugepage: Make {alloc,free}_huge_page() local\n\nOriginally, mm/hugetlb.c just handled the hugepage physical allocation path\nand its {alloc,free}_huge_page() functions were used from the arch specific\nhugepage code.  These days those functions are only used with mm/hugetlb.c\nitself.  Therefore, this patch makes them static and removes their\nprototypes from hugetlb.h.  This requires a small rearrangement of code in\nmm/hugetlb.c to avoid a forward declaration.\n\nThis patch causes no regressions on the libhugetlbfs testsuite (ppc64,\nPOWER5).\n\nSigned-off-by: David Gibson \u003cdwg@au1.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b45b5bd65f668a665db40d093e4e1fe563533608",
      "tree": "aa3806bd87fd7aa719b561e4d468c779f6adb31b",
      "parents": [
        "3935baa9bcda3ccaee4f7849f5157d316e34412e"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Wed Mar 22 00:08:55 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:03 2006 -0800"
      },
      "message": "[PATCH] hugepage: Strict page reservation for hugepage inodes\n\nThese days, hugepages are demand-allocated at first fault time.  There\u0027s a\nsomewhat dubious (and racy) heuristic when making a new mmap() to check if\nthere are enough available hugepages to fully satisfy that mapping.\n\nA particularly obvious case where the heuristic breaks down is where a\nprocess maps its hugepages not as a single chunk, but as a bunch of\nindividually mmap()ed (or shmat()ed) blocks without touching and\ninstantiating the pages in between allocations.  In this case the size of\neach block is compared against the total number of available hugepages.\nIt\u0027s thus easy for the process to become overcommitted, because each block\nmapping will succeed, although the total number of hugepages required by\nall blocks exceeds the number available.  In particular, this defeats such\na program which will detect a mapping failure and adjust its hugepage usage\ndownward accordingly.\n\nThe patch below addresses this problem, by strictly reserving a number of\nphysical hugepages for hugepage inodes which have been mapped, but not\ninstatiated.  MAP_SHARED mappings are thus \"safe\" - they will fail on\nmmap(), not later with an OOM SIGKILL.  MAP_PRIVATE mappings can still\ntrigger an OOM.  (Actually SHARED mappings can technically still OOM, but\nonly if the sysadmin explicitly reduces the hugepage pool between mapping\nand instantiation)\n\nThis patch appears to address the problem at hand - it allows DB2 to start\ncorrectly, for instance, which previously suffered the failure described\nabove.\n\nThis patch causes no regressions on the libhugetblfs testsuite, and makes a\ntest (designed to catch this problem) pass which previously failed (ppc64,\nPOWER5).\n\nSigned-off-by: David Gibson \u003cdwg@au1.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3935baa9bcda3ccaee4f7849f5157d316e34412e",
      "tree": "45f6d064693a91171c57159acac43822cae6e129",
      "parents": [
        "79ac6ba40eb8d70f0d204e98ae9b63280ad1018c"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Wed Mar 22 00:08:53 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:03 2006 -0800"
      },
      "message": "[PATCH] hugepage: serialize hugepage allocation and instantiation\n\nCurrently, no lock or mutex is held between allocating a hugepage and\ninserting it into the pagetables / page cache.  When we do go to insert the\npage into pagetables or page cache, we recheck and may free the newly\nallocated hugepage.  However, since the number of hugepages in the system\nis strictly limited, and it\u0027s usualy to want to use all of them, this can\nstill lead to spurious allocation failures.\n\nFor example, suppose two processes are both mapping (MAP_SHARED) the same\nhugepage file, large enough to consume the entire available hugepage pool.\nIf they race instantiating the last page in the mapping, they will both\nattempt to allocate the last available hugepage.  One will fail, of course,\nreturning OOM from the fault and thus causing the process to be killed,\ndespite the fact that the entire mapping can, in fact, be instantiated.\n\nThe patch fixes this race by the simple method of adding a (sleeping) mutex\nto serialize the hugepage fault path between allocation and insertion into\npagetables and/or page cache.  It would be possible to avoid the\nserialization by catching the allocation failures, waiting on some\ncondition, then rechecking to see if someone else has instantiated the page\nfor us.  Given the likely frequency of hugepage instantiations, it seems\nvery doubtful it\u0027s worth the extra complexity.\n\nThis patch causes no regression on the libhugetlbfs testsuite, and one\ntest, which can trigger this race now passes where it previously failed.\n\nActually, the test still sometimes fails, though less often and only as a\nshmat() failure, rather processes getting OOM killed by the VM.  The dodgy\nheuristic tests in fs/hugetlbfs/inode.c for whether there\u0027s enough hugepage\nspace aren\u0027t protected by the new mutex, and would be ugly to do so, so\nthere\u0027s still a race there.  Another patch to replace those tests with\nsomething saner for this reason as well as others coming...\n\nSigned-off-by: David Gibson \u003cdwg@au1.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "79ac6ba40eb8d70f0d204e98ae9b63280ad1018c",
      "tree": "522d835dbdc6b6efe6b834f3f1f9a21a8ba161e5",
      "parents": [
        "8f860591ffb29738cf5539b6fbf27f50dcdeb380"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Wed Mar 22 00:08:51 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:03 2006 -0800"
      },
      "message": "[PATCH] hugepage: Small fixes to hugepage clear/copy path\n\nMove the loops used in mm/hugetlb.c to clear and copy hugepages to their\nown functions for clarity.  As we do so, we add some checks of need_resched\n- we are, after all copying megabytes of memory here.  We also add\nmight_sleep() accordingly.  We generally dropped locks around the clear and\ncopy, already but not everyone has PREEMPT enabled, so we should still be\nchecking explicitly.\n\nFor this to work, we need to remove the clear_huge_page() from\nalloc_huge_page(), which is called with the page_table_lock held in the COW\npath.  We move the clear_huge_page() to just after the alloc_huge_page() in\nthe hugepage no-page path.  In the COW path, the new page is about to be\ncopied over, so clearing it was just a waste of time anyway.  So as a side\neffect we also fix the fact that we held the page_table_lock for far too\nlong in this path by calling alloc_huge_page() under it.\n\nIt causes no regressions on the libhugetlbfs testsuite (ppc64, POWER5).\n\nSigned-off-by: David Gibson \u003cdwg@au1.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8f860591ffb29738cf5539b6fbf27f50dcdeb380",
      "tree": "4265e45c4a79d86a16cd5175a836e8c531be8117",
      "parents": [
        "aed75ff3caafce404d9be7f0c088716375be5279"
      ],
      "author": {
        "name": "Zhang, Yanmin",
        "email": "yanmin_zhang@linux.intel.com",
        "time": "Wed Mar 22 00:08:50 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:03 2006 -0800"
      },
      "message": "[PATCH] Enable mprotect on huge pages\n\n2.6.16-rc3 uses hugetlb on-demand paging, but it doesn_t support hugetlb\nmprotect.\n\nFrom: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\n\n  Remove a test from the mprotect() path which checks that the mprotect()ed\n  range on a hugepage VMA is hugepage aligned (yes, really, the sense of\n  is_aligned_hugepage_range() is the opposite of what you\u0027d guess :-/).\n\n  In fact, we don\u0027t need this test.  If the given addresses match the\n  beginning/end of a hugepage VMA they must already be suitably aligned.  If\n  they don\u0027t, then mprotect_fixup() will attempt to split the VMA.  The very\n  first test in split_vma() will check for a badly aligned address on a\n  hugepage VMA and return -EINVAL if necessary.\n\nFrom: \"Chen, Kenneth W\" \u003ckenneth.w.chen@intel.com\u003e\n\n  On i386 and x86-64, pte flag _PAGE_PSE collides with _PAGE_PROTNONE.  The\n  identify of hugetlb pte is lost when changing page protection via mprotect.\n  A page fault occurs later will trigger a bug check in huge_pte_alloc().\n\n  The fix is to always make new pte a hugetlb pte and also to clean up\n  legacy code where _PAGE_PRESENT is forced on in the pre-faulting day.\n\nSigned-off-by: Zhang Yanmin \u003cyanmin.zhang@intel.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7835e98b2e3c66dba79cb0ff8ebb90a2fe030c29",
      "tree": "405a96eade34845dabe2f125b6c5eb095846869d",
      "parents": [
        "70dc991d66cac40fdb07346dba2b5d862d732c34"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Mar 22 00:08:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:02 2006 -0800"
      },
      "message": "[PATCH] remove set_page_count() outside mm/\n\nset_page_count usage outside mm/ is limited to setting the refcount to 1.\nRemove set_page_count from outside mm/, and replace those users with\ninit_page_count() and set_page_refcounted().\n\nThis allows more debug checking, and tighter control on how code is allowed\nto play around with page-\u003e_count.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a482289d46587ffcda4c85aab109fb74910d7a48",
      "tree": "351dc5d9c09a4fe3d122c2157a298852ac8a821c",
      "parents": [
        "545b1ea9bfa5a8ca9af33d63144bd4f2faaea8dd"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Mar 22 00:08:08 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:53:58 2006 -0800"
      },
      "message": "[PATCH] hugepage allocator cleanup\n\nInsert \"fresh\" huge pages into the hugepage allocator by the same means as\nthey are freed back into it.  This reduces code size and allows\nenqueue_huge_page to be inlined into the hugepage free fastpath.\n\nEliminate occurances of hugepages on the free list with non-zero refcount.\nThis can allow stricter refcount checks in future.  Also required for\nlockless pagecache.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\n\n\"This patch also eliminates a leak \"cleaned up\" by re-clobbering the\nrefcount on every allocation from the hugepage freelists.  With respect to\nthe lockless pagecache, the crucial aspect is to eliminate unconditional\nset_page_count() to 0 on pages with potentially nonzero refcounts, though\ncloser inspection suggests the assignments removed are entirely spurious.\"\n\nAcked-by: William Irwin \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "41d78ba55037468e6c86c53e3076d1a74841de39",
      "tree": "d970f18d18532009b17c736583429401dbd64ade",
      "parents": [
        "7277232374680595cdbc774fd246b206f56db015"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Feb 14 13:52:58 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Feb 14 16:09:33 2006 -0800"
      },
      "message": "[PATCH] compound page: use page[1].lru\n\nIf a compound page has its own put_page_testzero destructor (the only current\nexample is free_huge_page), that is noted in page[1].mapping of the compound\npage.  But that\u0027s rather a poor place to keep it: functions which call\nset_page_dirty_lock after get_user_pages (e.g.  Infiniband\u0027s\n__ib_umem_release) ought to be checking first, otherwise set_page_dirty is\nliable to crash on what\u0027s not the address of a struct address_space.\n\nAnd now I\u0027m about to make that worse: it turns out that every compound page\nneeds a destructor, so we can no longer rely on hugetlb pages going their own\nspecial way, to avoid further problems of page-\u003emapping reuse.  For example,\nnot many people know that: on 50% of i386 -Os builds, the first tail page of a\ncompound page purports to be PageAnon (when its destructor has an odd\naddress), which surprises page_add_file_rmap.\n\nKeep the compound page destructor in page[1].lru.next instead.  And to free up\nthe common pairing of mapping and index, also move compound page order from\nindex to lru.prev.  Slab reuses page-\u003elru too: but if we ever need slab to use\ncompound pages, it can easily stack its use above this.\n\n(akpm: decoded version of the above: the tail pages of a compound page now\nhave -\u003emapping\u003d\u003dNULL, so there\u0027s no need for the set_page_dirty[_lock]()\ncaller to check that they\u0027re not compund pages before doing the dirty).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0df420d8b6c718d9a5e37531c3a9a6804493e9f4",
      "tree": "6b8edbb55eb8d5e84fb223bbcef7c54789270cde",
      "parents": [
        "a2dfef6947139db9b886fce510c4d0c913beb5f0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Tue Feb 07 12:58:30 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Feb 07 16:12:31 2006 -0800"
      },
      "message": "[PATCH] hugetlbpage: return VM_FAULT_OOM on oom\n\nRemove wrong and misleading comments.\n\nReturn VM_FAULT_OOM if the hugetlbpage fault handler cannot allocate a\npage.  do_no_page will end up doing do_exit(SIGKILL).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a2dfef6947139db9b886fce510c4d0c913beb5f0",
      "tree": "096e9110d897e6b946fdae9e9e17ad5c7832fd8a",
      "parents": [
        "488fc08d914f2b07b701c9b9c811437cc1c1c518"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Tue Feb 07 12:58:25 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Feb 07 16:12:31 2006 -0800"
      },
      "message": "[PATCH] Hugepages need clear_user_highpage() not clear_highpage()\n\nWhen hugepages are newly allocated to a file in mm/hugetlb.c, we clear them\nwith a call to clear_highpage() on each of the subpages.  We should be\nusing clear_user_highpage(): on powerpc, at least, clear_highpage() doesn\u0027t\ncorrectly mark the page as icache dirty so if the page is executed shortly\nafter it\u0027s possible to get strange results.\n\nSigned-off-by: David Gibson \u003cdwg@au1.ibm.com\u003e\nAcked-by: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "64b4a954b03a1153fb8ae38d6ffbd991e01a1e80",
      "tree": "0436a6f23e46d9fcb6caf5b1216fe212be3fbc3f",
      "parents": [
        "fe1dcbc4f311c2e6c23b33c0fa8572461618ab3e"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Sat Feb 04 23:27:55 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Feb 05 11:06:53 2006 -0800"
      },
      "message": "[PATCH] hugetlb: add comment explaining reasons for Bus Errors\n\nI just spent some time researching a Bus Error.  Turns out that the huge\npage fault handler can return VM_FAULT_SIGBUS for various conditions where\nno huge page is available.\n\nAdd a note explaining the reasoning in the source.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "aea47ff363c15b0be5fc27ed991b1fdee338f0a7",
      "tree": "0932af1adfcf795fe8793ce24eb338e832d5fa2c",
      "parents": [
        "45b07ef31d1182d2cfde7711327e3afb268bb1ac"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Sun Jan 08 01:00:57 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:12:43 2006 -0800"
      },
      "message": "[PATCH] mm: make hugepages obey cpusets.\n\nSee http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d113167000201265\u0026w\u003d2\nhttp://marc.theaimsgroup.com/?l\u003dlinux-mm\u0026m\u003d113167267527312\u0026w\u003d2\n\nMake hugepages obey cpusets.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: William Irwin \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6bda666a03f063968833760c5bb5c13062ab9291",
      "tree": "8ecc0b672c059aa296f80935cda33f3e59970832",
      "parents": [
        "21abb1478a87e26f5fa71dbcb7cf4264272c2248"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Fri Jan 06 00:10:49 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:23 2006 -0800"
      },
      "message": "[PATCH] hugepages: fold find_or_alloc_pages into huge_no_page()\n\nThe number of parameters for find_or_alloc_page increases significantly after\npolicy support is added to huge pages.  Simplify the code by folding\nfind_or_alloc_huge_page() into hugetlb_no_page().\n\nAdam Litke objected to this piece in an earlier patch but I think this is a\ngood simplification.  Diffstat shows that we can get rid of almost half of the\nlines of find_or_alloc_page().  If we can find no consensus then lets simply\ndrop this patch.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nAcked-by: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5da7ca86078964cbfe6c83efc1205904587706fe",
      "tree": "a64a7824e90b42d6fdd71e6cb652362beb8983a1",
      "parents": [
        "96df9333c94d7d5aeceb21f6c5e7ae8ff34753cf"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Fri Jan 06 00:10:46 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:23 2006 -0800"
      },
      "message": "[PATCH] Add NUMA policy support for huge pages.\n\nThe huge_zonelist() function in the memory policy layer provides an list of\nzones ordered by NUMA distance.  The hugetlb layer will walk that list looking\nfor a zone that has available huge pages but is also in the nodeset of the\ncurrent cpuset.\n\nThis patch does not contain the folding of find_or_alloc_huge_page() that was\ncontroversial in the earlier discussion.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nAcked-by: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "96df9333c94d7d5aeceb21f6c5e7ae8ff34753cf",
      "tree": "a4ac0486af418df0194ed0038b87459652d61945",
      "parents": [
        "1e8f889b10d8d2223105719e36ce45688fedbd59"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Fri Jan 06 00:10:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:23 2006 -0800"
      },
      "message": "[PATCH] mm: dequeue a huge page near to this node\n\nThis was discussed at\nhttp://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d113166526217117\u0026w\u003d2\n\nThis patch changes the dequeueing to select a huge page near the node\nexecuting instead of always beginning to check for free nodes from node 0.\nThis will result in a placement of the huge pages near the executing\nprocessor improving performance.\n\nThe existing implementation can place the huge pages far away from the\nexecuting processor causing significant degradation of performance.  The\nsearch starting from zero also means that the lower zones quickly run out\nof memory.  Selecting a huge page near the process distributed the huge\npages better.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1e8f889b10d8d2223105719e36ce45688fedbd59",
      "tree": "86dee89e4363aaf6c7ec7c9751ea37f725c95bb9",
      "parents": [
        "86e5216f8d8aa258ba836caffe2613d79cc9aead"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Fri Jan 06 00:10:44 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:23 2006 -0800"
      },
      "message": "[PATCH] Hugetlb: Copy on Write support\n\nImplement copy-on-write support for hugetlb mappings so MAP_PRIVATE can be\nsupported.  This helps us to safely use hugetlb pages in many more\napplications.  The patch makes the following changes.  If needed, I also have\nit broken out according to the following paragraphs.\n\n1. Add a pair of functions to set/clear write access on huge ptes.  The\n   writable check in make_huge_pte is moved out to the caller for use by COW\n   later.\n\n2. Hugetlb copy-on-write requires special case handling in the following\n   situations:\n\n   - copy_hugetlb_page_range() - Copied pages must be write protected so\n     a COW fault will be triggered (if necessary) if those pages are written\n     to.\n\n   - find_or_alloc_huge_page() - Only MAP_SHARED pages are added to the\n     page cache.  MAP_PRIVATE pages still need to be locked however.\n\n3. Provide hugetlb_cow() and calls from hugetlb_fault() and\n   hugetlb_no_page() which handles the COW fault by making the actual copy.\n\n4. Remove the check in hugetlbfs_file_map() so that MAP_PRIVATE mmaps\n   will be allowed.  Make MAP_HUGETLB exempt from the depricated VM_RESERVED\n   mapping check.\n\nSigned-off-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"Seth, Rohit\" \u003crohit.seth@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "86e5216f8d8aa258ba836caffe2613d79cc9aead",
      "tree": "33669c0194490700b575fceb0e5e010a4468a5fe",
      "parents": [
        "85ef47f74afe96c8c23eaa605f28cc01443c905f"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Fri Jan 06 00:10:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:22 2006 -0800"
      },
      "message": "[PATCH] Hugetlb: Reorganize hugetlb_fault to prepare for COW\n\nThis patch splits the \"no_page()\" type activity into its own function,\nhugetlb_no_page().  hugetlb_fault() becomes the entry point for hugetlb faults\nand delegates to the appropriate handler depending on the type of fault.\nRight now we still have only hugetlb_no_page() but a later patch introduces a\nCOW fault.\n\nSigned-off-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"Seth, Rohit\" \u003crohit.seth@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "85ef47f74afe96c8c23eaa605f28cc01443c905f",
      "tree": "afe3a52f3e00cbab3f30f756fb60b250fe8de2c6",
      "parents": [
        "f0916794f00be44154102dedaeafe68b743078a2"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Fri Jan 06 00:10:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:22 2006 -0800"
      },
      "message": "[PATCH] Hugetlb: Rename find_lock_page to find_or_alloc_huge_page\n\nfind_lock_huge_page() isn\u0027t a great name, since it does extra things not\nanalagous to find_lock_page().  Rename it find_or_alloc_huge_page() which is\ncloser to the mark.\n\nSigned-off-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"Seth, Rohit\" \u003crohit.seth@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f0916794f00be44154102dedaeafe68b743078a2",
      "tree": "0faa7e86d938c184f5ccead70410b4d014c2bdf2",
      "parents": [
        "f6b3ec238d12c8cc6cc71490c6e3127988460349"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Fri Jan 06 00:10:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:22 2006 -0800"
      },
      "message": "[PATCH] Hugetlb: Remove duplicate i_size check\n\ncleanup\n\nSigned-off-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"Seth, Rohit\" \u003crohit.seth@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0bd0f9fb190a0fc0fb25b764c8b04869711f7657",
      "tree": "0bd7b58c037b5905cf834f27625bd4e0cbb2f3f2",
      "parents": [
        "5ef897c71a8985b62b7ec320a37376daaad364d0"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Mon Nov 21 21:32:28 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 22 09:13:43 2005 -0800"
      },
      "message": "[PATCH] hugetlb: fix race in set_max_huge_pages for multiple updaters of nr_huge_pages\n\nIf there are multiple updaters to /proc/sys/vm/nr_hugepages simultaneously\nit is possible for the nr_huge_pages variable to become incorrect.  There\nis no locking in the set_max_huge_pages function around\nalloc_fresh_huge_page which is able to update nr_huge_pages.  Two callers\nto alloc_fresh_huge_page could race against each other as could a call to\nalloc_fresh_huge_page and a call to update_and_free_page.  This patch just\nexpands the area covered by the hugetlb_lock to cover the call into\nalloc_fresh_huge_page.  I\u0027m not sure how we could say that a sysctl section\nis performance critical where more specific locking would be needed.\n\nMy reproducer was to run a couple copies of the following script\nsimultaneously\n\nwhile [ true ]; do\n\techo 1000 \u003e /proc/sys/vm/nr_hugepages\n\techo 500 \u003e /proc/sys/vm/nr_hugepages\n\techo 750 \u003e /proc/sys/vm/nr_hugepages\n\techo 100 \u003e /proc/sys/vm/nr_hugepages\n\techo 0 \u003e /proc/sys/vm/nr_hugepages\ndone\n\nand then watch /proc/meminfo and eventually you will see things like\n\nHugePages_Total:     100\nHugePages_Free:      109\n\nAfter applying the patch all seemed well.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: William Irwin \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "99697dc02d2c1e8234c88d4256879d080483a57a",
      "tree": "26893c01e209eac31cda3c7137e26b1f127a5ed8",
      "parents": [
        "55be570c529643e83195d6688805127533184aa4"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Mon Nov 07 01:01:37 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 07:54:06 2005 -0800"
      },
      "message": "[PATCH] unexport hugetlb_total_pages\n\nI didn\u0027t find any possible modular usage in the kernel.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3c726f8dee6f55e96475574e9f645327e461884c",
      "tree": "f67c381e8f57959aa4a94bda4c68e24253cd8171",
      "parents": [
        "f912696ab330bf539231d1f8032320f2a08b850f"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Mon Nov 07 11:06:55 2005 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 06 16:56:47 2005 -0800"
      },
      "message": "[PATCH] ppc64: support 64k pages\n\nAdds a new CONFIG_PPC_64K_PAGES which, when enabled, changes the kernel\nbase page size to 64K.  The resulting kernel still boots on any\nhardware.  On current machines with 4K pages support only, the kernel\nwill maintain 16 \"subpages\" for each 64K page transparently.\n\nNote that while real 64K capable HW has been tested, the current patch\nwill not enable it yet as such hardware is not released yet, and I\u0027m\nstill verifying with the firmware architects the proper to get the\ninformation from the newer hypervisors.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4c887265977213985091476be40ab11dfdcb4caf",
      "tree": "82ee135f8678094664d7311617287802d54d52cf",
      "parents": [
        "551110a94aa15890d1709b179c4be1e66ff6db53"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Sat Oct 29 18:16:46 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:43 2005 -0700"
      },
      "message": "[PATCH] hugetlb: demand fault handler\n\nBelow is a patch to implement demand faulting for huge pages.  The main\nmotivation for changing from prefaulting to demand faulting is so that huge\npage memory areas can be allocated according to NUMA policy.\n\nThanks to consolidated hugetlb code, switching the behavior requires changing\nonly one fault handler.  The bulk of the patch just moves the logic from\nhugelb_prefault() to hugetlb_pte_fault() and find_get_huge_page().\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "508034a32b819a2d40aa7ac0dbc8cd2e044c2de6",
      "tree": "906a8f0095af24f403b30d649d3ec1ffb4ff2f50",
      "parents": [
        "8f4f8c164cb4af1432cc25eda82928ea4519ba72"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:30 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:41 2005 -0700"
      },
      "message": "[PATCH] mm: unmap_vmas with inner ptlock\n\nRemove the page_table_lock from around the calls to unmap_vmas, and replace\nthe pte_offset_map in zap_pte_range by pte_offset_map_lock: all callers are\nnow safe to descend without page_table_lock.\n\nDon\u0027t attempt fancy locking for hugepages, just take page_table_lock in\nunmap_hugepage_range.  Which makes zap_hugepage_range, and the hugetlb test in\nzap_page_range, redundant: unmap_vmas calls unmap_hugepage_range anyway.  Nor\ndoes unmap_vmas have much use for its mm arg now.\n\nThe tlb_start_vma and tlb_end_vma in unmap_page_range are now called without\npage_table_lock: if they\u0027re implemented at all, they typically come down to\nflush_cache_range (usually done outside page_table_lock) and flush_tlb_range\n(which we already audited for the mprotect case).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c74df32c724a1652ad8399b4891bb02c9d43743a",
      "tree": "5a79d56fdcf7dc2053a277dbf6db7c3b339e9659",
      "parents": [
        "1bb3630e89cb8a7b3d3807629c20c5bad88290ff"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:23 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:40 2005 -0700"
      },
      "message": "[PATCH] mm: ptd_alloc take ptlock\n\nSecond step in pushing down the page_table_lock.  Remove the temporary\nbridging hack from __pud_alloc, __pmd_alloc, __pte_alloc: expect callers not\nto hold page_table_lock, whether it\u0027s on init_mm or a user mm; take\npage_table_lock internally to check if a racing task already allocated.\n\nConvert their callers from common code.  But avoid coming back to change them\nagain later: instead of moving the spin_lock(\u0026mm-\u003epage_table_lock) down,\nswitch over to new macros pte_alloc_map_lock and pte_unmap_unlock, which\nencapsulate the mapping+locking and unlocking+unmapping together, and in the\nend may use alternatives to the mm page_table_lock itself.\n\nThese callers all hold mmap_sem (some exclusively, some not), so at no level\ncan a page table be whipped away from beneath them; and pte_alloc uses the\n\"atomic\" pmd_present to test whether it needs to allocate.  It appears that on\nall arches we can safely descend without page_table_lock.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "365e9c87a982c03d0af3886e29d877f581b59611",
      "tree": "d06c1918ca9fe6677d7e4e869555e095004274f7",
      "parents": [
        "861f2fb8e796022b4928cab9c74fca6681a1c557"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:18 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] mm: update_hiwaters just in time\n\nupdate_mem_hiwater has attracted various criticisms, in particular from those\nconcerned with mm scalability.  Originally it was called whenever rss or\ntotal_vm got raised.  Then many of those callsites were replaced by a timer\ntick call from account_system_time.  Now Frank van Maarseveen reports that to\nbe found inadequate.  How about this?  Works for Frank.\n\nReplace update_mem_hiwater, a poor combination of two unrelated ops, by macros\nupdate_hiwater_rss and update_hiwater_vm.  Don\u0027t attempt to keep\nmm-\u003ehiwater_rss up to date at timer tick, nor every time we raise rss (usually\nby 1): those are hot paths.  Do the opposite, update only when about to lower\nrss (usually by many), or just before final accounting in do_exit.  Handle\nmm-\u003ehiwater_vm in the same way, though it\u0027s much less of an issue.  Demand\nthat whoever collects these hiwater statistics do the work of taking the\nmaximum with rss or total_vm.\n\nAnd there has been no collector of these hiwater statistics in the tree.  The\nnew convention needs an example, so match Frank\u0027s usage by adding a VmPeak\nline above VmSize to /proc/\u003cpid\u003e/status, and also a VmHWM line above VmRSS\n(High-Water-Mark or High-Water-Memory).\n\nThere was a particular anomaly during mremap move, that hiwater_vm might be\ncaptured too high.  A fleeting such anomaly remains, but it\u0027s quickly\ncorrected now, whereas before it would stick.\n\nWhat locking?  None: if the app is racy then these statistics will be racy,\nit\u0027s not worth any overhead to make them exact.  But whenever it suits,\nhiwater_vm is updated under exclusive mmap_sem, and hiwater_rss under\npage_table_lock (for now) or with preemption disabled (later on): without\ngoing to any trouble, minimize the time between reading current values and\nupdating, to minimize those occasions when a racing thread bumps a count up\nand back down in between.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4294621f41a85497019fae64341aa5351a1921b7",
      "tree": "fdeb7eb44384a99d0679ffa6de5019bab0ea2166",
      "parents": [
        "404351e67a9facb475abf1492245374a28d13e90"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:05 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:38 2005 -0700"
      },
      "message": "[PATCH] mm: rss \u003d file_rss + anon_rss\n\nI was lazy when we added anon_rss, and chose to change as few places as\npossible.  So currently each anonymous page has to be counted twice, in rss\nand in anon_rss.  Which won\u0027t be so good if those are atomic counts in some\nconfigurations.\n\nChange that around: keep file_rss and anon_rss separately, and add them\ntogether (with get_mm_rss macro) when the total is needed - reading two\natomics is much cheaper than updating two atomics.  And update anon_rss\nupfront, typically in memory.c, not tucked away in page_add_anon_rmap.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ac9b9c667c2e1194e22ebe0a441ae1c37aaa9b90",
      "tree": "3903d87d0b56a49ead39c0460b5bc0b86b040775",
      "parents": [
        "93918e9afc76717176e9e114e79cdbb602a45ae8"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Thu Oct 20 16:24:28 2005 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Oct 20 09:02:07 2005 -0700"
      },
      "message": "[PATCH] Fix handling spurious page fault for hugetlb region\n\nThis reverts commit 3359b54c8c07338f3a863d1109b42eebccdcf379 and\nreplaces it with a cleaner version that is purely based on page table\noperations, so that the synchronization between inode size and hugetlb\nmappings becomes moot.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1c59827d1da9bcd6970800d4f8a031b5859e8b4c",
      "tree": "768e771e4da8f8f5a84d38b4b91d2fb852a4123a",
      "parents": [
        "e03d13e985d48ac4885382c9e3b1510c78bd047f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Oct 19 21:23:43 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 19 23:04:30 2005 -0700"
      },
      "message": "[PATCH] mm: hugetlb truncation fixes\n\nhugetlbfs allows truncation of its files (should it?), but hugetlb.c often\nforgets that: crashes and misaccounting ensue.\n\ncopy_hugetlb_page_range better grab the src page_table_lock since we don\u0027t\nwant to guess what happens if concurrently truncated.  unmap_hugepage_range\nrss accounting must not assume the full range was mapped.  follow_hugetlb_page\nmust guard with page_table_lock and be prepared to exit early.\n\nRestyle copy_hugetlb_page_range with a for loop like the others there.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7bf07f3d4b4358aa6d99a26d7a0165f1e91c3fcc",
      "tree": "150e1f1172e3a7912b37bef7b06a657d47bc1657",
      "parents": [
        "32e51a8c976fc72c3e9bcece9767d9908816bf8e"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Sat Sep 03 15:55:00 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:46 2005 -0700"
      },
      "message": "[PATCH] hugetlb: move stale pte check into huge_pte_alloc()\n\nInitial Post (Wed, 17 Aug 2005)\n\nThis patch moves the\n\tif (! pte_none(*pte))\n\t\thugetlb_clean_stale_pgtable(pte);\nlogic into huge_pte_alloc() so all of its callers can be immune to the bug\ndescribed by Kenneth Chen at http://lkml.org/lkml/2004/6/16/246\n\n\u003e It turns out there is a bug in hugetlb_prefault(): with 3 level page table,\n\u003e huge_pte_alloc() might return a pmd that points to a PTE page. It happens\n\u003e if the virtual address for hugetlb mmap is recycled from previously used\n\u003e normal page mmap. free_pgtables() might not scrub the pmd entry on\n\u003e munmap and hugetlb_prefault skips on any pmd presence regardless what type\n\u003e it is.\n\nUnless I am missing something, it seems more correct to place the check inside\nhuge_pte_alloc() to prevent a the same bug wherever a huge pte is allocated.\nIt also allows checking for this condition when lazily faulting huge pages\nlater in the series.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: \u003clinux-mm@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c7546f8f03f5a4fa612605b6be930234d6026860",
      "tree": "e372cdb3856c9585587283c21b5b99a792a1a41d",
      "parents": [
        "e6cb99413da42af413c11a394538ddc8b9d201e1"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Fri Aug 05 11:59:35 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Aug 05 12:22:37 2005 -0700"
      },
      "message": "[PATCH] Fix hugepage crash on failing mmap()\n\nThis patch fixes a crash in the hugepage code.  unmap_hugepage_area() was\nassuming that (due to prefault) PTEs must exist for all the area in\nquestion.  However, this may not be the case, if mmap() encounters an error\nbefore the prefault and calls unmap_region() to clean up any partial\nmapping.\n\nDepending on the hugepage configuration, this crash can be triggered by an\nunpriveleged user.\n\nSigned-off-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "63551ae0feaaa23807ebea60de1901564bbef32e",
      "tree": "f6f97f60f83c3e9813bdfcc6039c499997b1ea10",
      "parents": [
        "1e7e5a9048b30c57ba1ddaa6cdf59b21b65cde99"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Tue Jun 21 17:14:44 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 18:46:15 2005 -0700"
      },
      "message": "[PATCH] Hugepage consolidation\n\nA lot of the code in arch/*/mm/hugetlbpage.c is quite similar.  This patch\nattempts to consolidate a lot of the code across the arch\u0027s, putting the\ncombined version in mm/hugetlb.c.  There are a couple of uglyish hacks in\norder to covert all the hugepage archs, but the result is a very large\nreduction in the total amount of code.  It also means things like hugepage\nlazy allocation could be implemented in one place, instead of six.\n\nTested, at least a little, on ppc64, i386 and x86_64.\n\nNotes:\n\t- this patch changes the meaning of set_huge_pte() to be more\n\t  analagous to set_pte()\n\t- does SH4 need s special huge_ptep_get_and_clear()??\n\nAcked-by: William Lee Irwin \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
