)]}'
{
  "log": [
    {
      "commit": "aa50d3a7aa8147b9e14dc9d5972a5d2359db4ef8",
      "tree": "68fae5060333dcc24c17e9dd00a87bd760d883e9",
      "parents": [
        "6f39ce056ab2ab2d29b2fae4aed61ed0b485972f"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Oct 06 21:45:00 2010 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Oct 08 09:32:46 2010 +0200"
      },
      "message": "Encode huge page size for VM_FAULT_HWPOISON errors\n\nThis fixes a problem introduced with the hugetlb hwpoison handling\n\nThe user space SIGBUS signalling wants to know the size of the hugepage\nthat caused a HWPOISON fault.\n\nUnfortunately the architecture page fault handlers do not have easy\naccess to the struct page.\n\nPass the information out in the fault error code instead.\n\nI added a separate VM_FAULT_HWPOISON_LARGE bit for this case and encode\nthe hpage index in some free upper bits of the fault code. The small\npage hwpoison keeps stays with the VM_FAULT_HWPOISON name to minimize\nchanges.\n\nAlso add code to hugetlb.h to convert that index into a page shift.\n\nWill be used in a further patch.\n\nCc: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: fengguang.wu@intel.com\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "6de2b1aab94355482bd2accdc115666509667458",
      "tree": "630a88dd5afe2c49a428179770140b22bbc9d7da",
      "parents": [
        "290408d4a25002f099efeee7b6a5778d431154d6"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Sep 08 10:19:36 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Oct 08 09:32:45 2010 +0200"
      },
      "message": "HWPOISON, hugetlb: add free check to dequeue_hwpoison_huge_page()\n\nThis check is necessary to avoid race between dequeue and allocation,\nwhich can cause a free hugepage to be dequeued twice and get kernel unstable.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "0ebabb416f585ace711769057422af4bbc9d1110",
      "tree": "d23d66033fdaefec9c2b4051f108b948c5389d0e",
      "parents": [
        "bf50bab2b34483316162443587b8467952e07730"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Sep 08 10:19:34 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Oct 08 09:32:44 2010 +0200"
      },
      "message": "hugetlb: redefine hugepage copy functions\n\nThis patch modifies hugepage copy functions to have only destination\nand source hugepages as arguments for later use.\nThe old ones are renamed from copy_{gigantic,huge}_page() to\ncopy_user_{gigantic,huge}_page().\nThis naming convention is consistent with that between copy_highpage()\nand copy_user_highpage().\n\nChangeLog since v4:\n- add blank line between local declaration and code\n- remove unnecessary might_sleep()\n\nChangeLog since v2:\n- change copy_huge_page() from macro to inline dummy function\n  to avoid compile warning when !CONFIG_HUGETLB_PAGE.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "bf50bab2b34483316162443587b8467952e07730",
      "tree": "d142f7427c6b82e11ff9333bf507aa24b9525e3e",
      "parents": [
        "998b4382c1d75a6fd3b0e334dae3ab33bd074d99"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Sep 08 10:19:33 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Oct 08 09:32:44 2010 +0200"
      },
      "message": "hugetlb: add allocate function for hugepage migration\n\nWe can\u0027t use existing hugepage allocation functions to allocate hugepage\nfor page migration, because page migration can happen asynchronously with\nthe running processes and page migration users should call the allocation\nfunction with physical addresses (not virtual addresses) as arguments.\n\nChangeLog since v3:\n- unify alloc_buddy_huge_page() and alloc_buddy_huge_page_node()\n\nChangeLog since v2:\n- remove unnecessary get/put_mems_allowed() (thanks to David Rientjes)\n\nChangeLog since v1:\n- add comment on top of alloc_huge_page_no_vma()\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "93f70f900da36fbc19c13c2aa04b2e468c8d00fb",
      "tree": "7868f891bca0ed18c9806771a68feac0b4010517",
      "parents": [
        "c9fbdd5f131440981b124883656ea21fb12cde4a"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Fri May 28 09:29:20 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Aug 11 09:22:46 2010 +0200"
      },
      "message": "HWPOISON, hugetlb: isolate corrupted hugepage\n\nIf error hugepage is not in-use, we can fully recovery from error\nby dequeuing it from freelist, so return RECOVERY.\nOtherwise whether or not we can recovery depends on user processes,\nso return DELAYED.\n\nDependency:\n  \"HWPOISON, hugetlb: enable error handling path for hugepage\"\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "0fe6e20b9c4c53b3e97096ee73a0857f60aad43f",
      "tree": "3014636f2ed66fdebecb6f6bab338b39c3543a07",
      "parents": [
        "8edf344c66a3f214d709dad1421c29d678915b3f"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Fri May 28 09:29:16 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Aug 11 09:21:15 2010 +0200"
      },
      "message": "hugetlb, rmap: add reverse mapping for hugepage\n\nThis patch adds reverse mapping feature for hugepage by introducing\nmapcount for shared/private-mapped hugepage and anon_vma for\nprivate-mapped hugepage.\n\nWhile hugepage is not currently swappable, reverse mapping can be useful\nfor memory error handler.\n\nWithout this patch, memory error handler cannot identify processes\nusing the bad hugepage nor unmap it from them. That is:\n- for shared hugepage:\n  we can collect processes using a hugepage through pagecache,\n  but can not unmap the hugepage because of the lack of mapcount.\n- for privately mapped hugepage:\n  we can neither collect processes nor unmap the hugepage.\nThis patch solves these problems.\n\nThis patch include the bug fix given by commit 23be7468e8, so reverts it.\n\nDependency:\n  \"hugetlb: move definition of is_vm_hugetlb_page() to hugepage_inline.h\"\n\nChangeLog since May 24.\n- create hugetlb_inline.h and move is_vm_hugetlb_index() in it.\n- move functions setting up anon_vma for hugepage into mm/rmap.c.\n\nChangeLog since May 13.\n- rebased to 2.6.34\n- fix logic error (in case that private mapping and shared mapping coexist)\n- move is_vm_hugetlb_page() into include/linux/mm.h to use this function\n  from linear_page_index()\n- define and use linear_hugepage_index() instead of compound_order()\n- use page_move_anon_rmap() in hugetlb_cow()\n- copy exclusive switch of __set_page_anon_rmap() into hugepage counterpart.\n- revert commit 24be7468 completely\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nAcked-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "8edf344c66a3f214d709dad1421c29d678915b3f",
      "tree": "0b976d0c52ac5efddcd30c8cb60e44b2cc0029e2",
      "parents": [
        "9fe6206f400646a2322096b56c59891d530e8d51"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Fri May 28 09:29:15 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Aug 11 09:20:41 2010 +0200"
      },
      "message": "hugetlb: move definition of is_vm_hugetlb_page() to hugepage_inline.h\n\nis_vm_hugetlb_page() is a widely used inline function to insert hooks\ninto hugetlb code.\nBut we can\u0027t use it in pagemap.h because of circular dependency of\nthe header files. This patch removes this limitation.\n\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "06808b0827e1cd14eedc96bac2655d5b37ac246c",
      "tree": "8f7b52a4af1532ed414631f68b99a059e299d83f",
      "parents": [
        "c1e6c8d074ea3621106548654cc244d2edc12ead"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Mon Dec 14 17:58:21 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:12 2009 -0800"
      },
      "message": "hugetlb: derive huge pages nodes allowed from task mempolicy\n\nThis patch derives a \"nodes_allowed\" node mask from the numa mempolicy of\nthe task modifying the number of persistent huge pages to control the\nallocation, freeing and adjusting of surplus huge pages when the pool page\ncount is modified via the new sysctl or sysfs attribute\n\"nr_hugepages_mempolicy\".  The nodes_allowed mask is derived as follows:\n\n* For \"default\" [NULL] task mempolicy, a NULL nodemask_t pointer\n  is produced.  This will cause the hugetlb subsystem to use\n  node_online_map as the \"nodes_allowed\".  This preserves the\n  behavior before this patch.\n* For \"preferred\" mempolicy, including explicit local allocation,\n  a nodemask with the single preferred node will be produced.\n  \"local\" policy will NOT track any internode migrations of the\n  task adjusting nr_hugepages.\n* For \"bind\" and \"interleave\" policy, the mempolicy\u0027s nodemask\n  will be used.\n* Other than to inform the construction of the nodes_allowed node\n  mask, the actual mempolicy mode is ignored.  That is, all modes\n  behave like interleave over the resulting nodes_allowed mask\n  with no \"fallback\".\n\nSee the updated documentation [next patch] for more information\nabout the implications of this patch.\n\nExamples:\n\nStarting with:\n\n\tNode 0 HugePages_Total:     0\n\tNode 1 HugePages_Total:     0\n\tNode 2 HugePages_Total:     0\n\tNode 3 HugePages_Total:     0\n\nDefault behavior [with or without this patch] balances persistent\nhugepage allocation across nodes [with sufficient contiguous memory]:\n\n\tsysctl vm.nr_hugepages[_mempolicy]\u003d32\n\nyields:\n\n\tNode 0 HugePages_Total:     8\n\tNode 1 HugePages_Total:     8\n\tNode 2 HugePages_Total:     8\n\tNode 3 HugePages_Total:     8\n\nOf course, we only have nr_hugepages_mempolicy with the patch,\nbut with default mempolicy, nr_hugepages_mempolicy behaves the\nsame as nr_hugepages.\n\nApplying mempolicy--e.g., with numactl [using \u0027-m\u0027 a.k.a.\n\u0027--membind\u0027 because it allows multiple nodes to be specified\nand it\u0027s easy to type]--we can allocate huge pages on\nindividual nodes or sets of nodes.  So, starting from the\ncondition above, with 8 huge pages per node, add 8 more to\nnode 2 using:\n\n\tnumactl -m 2 sysctl vm.nr_hugepages_mempolicy\u003d40\n\nThis yields:\n\n\tNode 0 HugePages_Total:     8\n\tNode 1 HugePages_Total:     8\n\tNode 2 HugePages_Total:    16\n\tNode 3 HugePages_Total:     8\n\nThe incremental 8 huge pages were restricted to node 2 by the\nspecified mempolicy.\n\nSimilarly, we can use mempolicy to free persistent huge pages\nfrom specified nodes:\n\n\tnumactl -m 0,1 sysctl vm.nr_hugepages_mempolicy\u003d32\n\nyields:\n\n\tNode 0 HugePages_Total:     4\n\tNode 1 HugePages_Total:     4\n\tNode 2 HugePages_Total:    16\n\tNode 3 HugePages_Total:     8\n\nThe 8 huge pages freed were balanced over nodes 0 and 1.\n\n[rientjes@google.com: accomodate reworked NODEMASK_ALLOC]\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@canonical.com\u003e\nCc: Eric Whitney \u003ceric.whitney@hp.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0f37e2f77731b3473fa6bd5ee53255d9a9cdb40",
      "tree": "3c26d3ed1a453156e9c208ccb5567a8954dba064",
      "parents": [
        "6f5071020d5ec89b5d095aa488db604adb921aec"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Sep 27 22:29:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 11:39:25 2009 -0700"
      },
      "message": "const: mark struct vm_struct_operations\n\n* mark struct vm_area_struct::vm_ops as const\n* mark vm_ops in AGP code\n\nBut leave TTM code alone, something is fishy there with global vm_ops\nbeing used.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e9ea0e2d1d00959b451dfc239df126d3c6a22043",
      "tree": "3dd9e8178a92fab0004b5bcbed568ed0ad92cfc9",
      "parents": [
        "c44972f1782124f945ec8bea8a78f30f1a3538bd"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Sep 24 14:47:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 17:11:24 2009 -0700"
      },
      "message": "hugetlb_file_setup(): use C, not cpp\n\nWhy macros are always wrong:\n\n  mm/mmap.c: In function \u0027do_mmap_pgoff\u0027:\n  mm/mmap.c:953: warning: unused variable \u0027user\u0027\n\nalso, move a couple of struct forward-decls outside `#ifdef\nCONFIG_HUGETLB_PAGE\u0027 - it\u0027s pointless and frequently harmful to make these\nconditional (eg, this patch needed `struct user_struct\u0027).\n\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@canonical.com\u003e\nCc: Eric Whitney \u003ceric.whitney@hp.com\u003e\nCc: Eric B Munson \u003cebmunson@us.ibm.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8d65af789f3e2cf4cfbdbf71a0f7a61ebcd41d38",
      "tree": "121df3bfffc7853ac6d2c514ad514d4a748a0933",
      "parents": [
        "c0d0787b6d47d9f4d5e8bd321921104e854a9135"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Sep 23 15:57:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:04 2009 -0700"
      },
      "message": "sysctl: remove \"struct file *\" argument of -\u003eproc_handler\n\nIt\u0027s unused.\n\nIt isn\u0027t needed -- read or write flag is already passed and sysctl\nshouldn\u0027t care about the rest.\n\nIt _was_ used in two places at arch/frv for some reason.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e52780d41a741fb4861ae1df2413dd816ec11b1",
      "tree": "b3722349661ed0ce87841b110f568616892cf719",
      "parents": [
        "90f72aa58bbf076b68e289fbd71eb829bc505923"
      ],
      "author": {
        "name": "Eric B Munson",
        "email": "ebmunson@us.ibm.com",
        "time": "Mon Sep 21 17:03:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:42 2009 -0700"
      },
      "message": "hugetlb: add MAP_HUGETLB for mmaping pseudo-anonymous huge page regions\n\nAdd a flag for mmap that will be used to request a huge page region that\nwill look like anonymous memory to userspace.  This is accomplished by\nusing a file on the internal vfsmount.  MAP_HUGETLB is a modifier of\nMAP_ANONYMOUS and so must be specified with it.  The region will behave\nthe same as a MAP_ANONYMOUS region using small pages.\n\n[akpm@linux-foundation.org: fix arch definitions of MAP_HUGETLB]\nSigned-off-by: Eric B Munson \u003cebmunson@us.ibm.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6bfde05bf5c9682e255c6a2c669dc80f91af6296",
      "tree": "3ff62bb87fc12c1ce808a54f789c42c35be7c049",
      "parents": [
        "f8dbf0a7a4c5d98e8b70da9f7f4f6a89f3b7a7bb"
      ],
      "author": {
        "name": "Eric B Munson",
        "email": "ebmunson@us.ibm.com",
        "time": "Mon Sep 21 17:03:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:41 2009 -0700"
      },
      "message": "hugetlbfs: allow the creation of files suitable for MAP_PRIVATE on the vfs internal mount\n\nThis patchset adds a flag to mmap that allows the user to request that an\nanonymous mapping be backed with huge pages.  This mapping will borrow\nfunctionality from the huge page shm code to create a file on the kernel\ninternal mount and use it to approximate an anonymous mapping.  The\nMAP_HUGETLB flag is a modifier to MAP_ANONYMOUS and will not work without\nboth flags being preset.\n\nA new flag is necessary because there is no other way to hook into huge\npages without creating a file on a hugetlbfs mount which wouldn\u0027t be\nMAP_ANONYMOUS.\n\nTo userspace, this mapping will behave just like an anonymous mapping\nbecause the file is not accessible outside of the kernel.\n\nThis patchset is meant to simplify the programming model.  Presently there\nis a large chunk of boiler platecode, contained in libhugetlbfs, required\nto create private, hugepage backed mappings.  This patch set would allow\nuse of hugepages without linking to libhugetlbfs or having hugetblfs\nmounted.\n\nUnification of the VM code would provide these same benefits, but it has\nbeen resisted each time that it has been suggested for several reasons: it\nwould break PAGE_SIZE assumptions across the kernel, it makes page-table\nabstractions really expensive, and it does not provide any benefit on\narchitectures that do not support huge pages, incurring fast path\npenalties without providing any benefit on these architectures.\n\nThis patch:\n\nThere are two means of creating mappings backed by huge pages:\n\n        1. mmap() a file created on hugetlbfs\n        2. Use shm which creates a file on an internal mount which essentially\n           maps it MAP_SHARED\n\nThe internal mount is only used for shared mappings but there is very\nlittle that stops it being used for private mappings. This patch extends\nhugetlbfs_file_setup() to deal with the creation of files that will be\nmapped MAP_PRIVATE on the internal hugetlbfs mount. This extended API is\nused in a subsequent patch to implement the MAP_HUGETLB mmap() flag.\n\nSigned-off-by: Eric Munson \u003cebmunson@us.ibm.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2a15efc953b26ad57d7d38b9e6782d57e53b4ab2",
      "tree": "f4d04903b3303e80460d2fa3f38da2b7eea82d22",
      "parents": [
        "8e4b9a60718970bbc02dfd3abd0b956ab65af231"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:40 2009 -0700"
      },
      "message": "mm: follow_hugetlb_page flags\n\nfollow_hugetlb_page() shouldn\u0027t be guessing about the coredump case\neither: pass the foll_flags down to it, instead of just the write bit.\n\nRemove that obscure huge_zeropage_ok() test.  The decision is easy,\nthough unlike the non-huge case - here vm_ops-\u003efault is always set.\nBut we know that a fault would serve up zeroes, unless there\u0027s\nalready a hugetlbfs pagecache page to back the range.\n\n(Alternatively, since hugetlb pages aren\u0027t swapped out under pressure,\nyou could save more dump space by arguing that a page not yet faulted\ninto this process cannot be relevant to the dump; but that would be\nmore surprising.)\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8c5c8249878fb6564125680a1d15e06adbd5639",
      "tree": "66a69c11ea0f27e45c747e6f7236da80d9788cc1",
      "parents": [
        "55a4462af5722d2814858bc51ee8d58ca29544ab"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Mon Sep 21 17:01:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:26 2009 -0700"
      },
      "message": "hugetlb: balance freeing of huge pages across nodes\n\nFree huges pages from nodes in round robin fashion in an attempt to keep\n[persistent a.k.a static] hugepages balanced across nodes\n\nNew function free_pool_huge_page() is modeled on and performs roughly the\ninverse of alloc_fresh_huge_page().  Replaces dequeue_huge_page() which\nnow has no callers, so this patch removes it.\n\nHelper function hstate_next_node_to_free() uses new hstate member\nnext_to_free_nid to distribute \"frees\" across all nodes with huge pages.\n\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@canonical.com\u003e\nCc: Eric Whitney \u003ceric.whitney@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": "353d5c30c666580347515da609dd74a2b8e9b828",
      "tree": "03cf3b5c0bc2ce08a12af303b141503ad833178f",
      "parents": [
        "0257a0c0c1997aac28420e784b3ef8f3ce17f093"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Aug 24 16:30:28 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 24 12:53:01 2009 -0700"
      },
      "message": "mm: fix hugetlb bug due to user_shm_unlock call\n\n2.6.30\u0027s commit 8a0bdec194c21c8fdef840989d0d7b742bb5d4bc removed\nuser_shm_lock() calls in hugetlb_file_setup() but left the\nuser_shm_unlock call in shm_destroy().\n\nIn detail:\nAssume that can_do_hugetlb_shm() returns true and hence user_shm_lock()\nis not called in hugetlb_file_setup(). However, user_shm_unlock() is\ncalled in any case in shm_destroy() and in the following\natomic_dec_and_lock(\u0026up-\u003e__count) in free_uid() is executed and if\nup-\u003e__count gets zero, also cleanup_user_struct() is scheduled.\n\nNote that sched_destroy_user() is empty if CONFIG_USER_SCHED is not set.\nHowever, the ref counter up-\u003e__count gets unexpectedly non-positive and\nthe corresponding structs are freed even though there are live\nreferences to them, resulting in a kernel oops after a lots of\nshmget(SHM_HUGETLB)/shmctl(IPC_RMID) cycles and CONFIG_USER_SCHED set.\n\nHugh changed Stefan\u0027s suggested patch: can_do_hugetlb_shm() at the\ntime of shm_destroy() may give a different answer from at the time\nof hugetlb_file_setup().  And fixed newseg()\u0027s no_id error path,\nwhich has missed user_shm_unlock() ever since it came in 2.6.9.\n\nReported-by: Stefan Huber \u003cshuber2@gmail.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nTested-by: Stefan Huber \u003cshuber2@gmail.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "788c7df451467df71638dd79a2d63d78c6e13b9c",
      "tree": "30714df634b620784b7a04fefc51d8c09291de38",
      "parents": [
        "a800faec1b21d7133b5f0c8c6dac593b7c4e118d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Tue Jun 23 13:49:05 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 23 11:23:33 2009 -0700"
      },
      "message": "hugetlb: fault flags instead of write_access\n\nhandle_mm_fault() is now passing fault flags rather than write_access\ndown to hugetlb_fault(), so better recognize that in hugetlb_fault(),\nand in hugetlb_no_page().\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "20a0307c0396c2edb651401d2f2db193dda2f3c9",
      "tree": "408fde4bf84223757f5dd150e401e8d9d9df5d36",
      "parents": [
        "a1dd268cf6306565a31a48deff8bf4f6b4b105f7"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Jun 16 15:32:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:36 2009 -0700"
      },
      "message": "mm: introduce PageHuge() for testing huge/gigantic pages\n\nA series of patches to enhance the /proc/pagemap interface and to add a\nuserspace executable which can be used to present the pagemap data.\n\nExport 10 more flags to end users (and more for kernel developers):\n\n        11. KPF_MMAP            (pseudo flag) memory mapped page\n        12. KPF_ANON            (pseudo flag) memory mapped page (anonymous)\n        13. KPF_SWAPCACHE       page is in swap cache\n        14. KPF_SWAPBACKED      page is swap/RAM backed\n        15. KPF_COMPOUND_HEAD   (*)\n        16. KPF_COMPOUND_TAIL   (*)\n        17. KPF_HUGE\t\thugeTLB pages\n        18. KPF_UNEVICTABLE     page is in the unevictable LRU list\n        19. KPF_HWPOISON        hardware detected corruption\n        20. KPF_NOPAGE          (pseudo flag) no page frame at the address\n\n        (*) For compound pages, exporting _both_ head/tail info enables\n            users to tell where a compound page starts/ends, and its order.\n\na simple demo of the page-types tool\n\n# ./page-types -h\npage-types [options]\n            -r|--raw                  Raw mode, for kernel developers\n            -a|--addr    addr-spec    Walk a range of pages\n            -b|--bits    bits-spec    Walk pages with specified bits\n            -l|--list                 Show page details in ranges\n            -L|--list-each            Show page details one by one\n            -N|--no-summary           Don\u0027t show summay info\n            -h|--help                 Show this usage message\naddr-spec:\n            N                         one page at offset N (unit: pages)\n            N+M                       pages range from N to N+M-1\n            N,M                       pages range from N to M-1\n            N,                        pages range from N to end\n            ,M                        pages range from 0 to M\nbits-spec:\n            bit1,bit2                 (flags \u0026 (bit1|bit2)) !\u003d 0\n            bit1,bit2\u003dbit1            (flags \u0026 (bit1|bit2)) \u003d\u003d bit1\n            bit1,~bit2                (flags \u0026 (bit1|bit2)) \u003d\u003d bit1\n            \u003dbit1,bit2                flags \u003d\u003d (bit1|bit2)\nbit-names:\n          locked              error         referenced           uptodate\n           dirty                lru             active               slab\n       writeback            reclaim              buddy               mmap\n       anonymous          swapcache         swapbacked      compound_head\n   compound_tail               huge        unevictable           hwpoison\n          nopage           reserved(r)         mlocked(r)    mappedtodisk(r)\n         private(r)       private_2(r)   owner_private(r)            arch(r)\n        uncached(r)       readahead(o)       slob_free(o)     slub_frozen(o)\n      slub_debug(o)\n                                   (r) raw mode bits  (o) overloaded bits\n\n# ./page-types\n             flags      page-count       MB  symbolic-flags                     long-symbolic-flags\n0x0000000000000000          487369     1903  _________________________________\n0x0000000000000014               5        0  __R_D____________________________  referenced,dirty\n0x0000000000000020               1        0  _____l___________________________  lru\n0x0000000000000024              34        0  __R__l___________________________  referenced,lru\n0x0000000000000028            3838       14  ___U_l___________________________  uptodate,lru\n0x0001000000000028              48        0  ___U_l_______________________I___  uptodate,lru,readahead\n0x000000000000002c            6478       25  __RU_l___________________________  referenced,uptodate,lru\n0x000100000000002c              47        0  __RU_l_______________________I___  referenced,uptodate,lru,readahead\n0x0000000000000040            8344       32  ______A__________________________  active\n0x0000000000000060               1        0  _____lA__________________________  lru,active\n0x0000000000000068             348        1  ___U_lA__________________________  uptodate,lru,active\n0x0001000000000068              12        0  ___U_lA______________________I___  uptodate,lru,active,readahead\n0x000000000000006c             988        3  __RU_lA__________________________  referenced,uptodate,lru,active\n0x000100000000006c              48        0  __RU_lA______________________I___  referenced,uptodate,lru,active,readahead\n0x0000000000004078               1        0  ___UDlA_______b__________________  uptodate,dirty,lru,active,swapbacked\n0x000000000000407c              34        0  __RUDlA_______b__________________  referenced,uptodate,dirty,lru,active,swapbacked\n0x0000000000000400             503        1  __________B______________________  buddy\n0x0000000000000804               1        0  __R________M_____________________  referenced,mmap\n0x0000000000000828            1029        4  ___U_l_____M_____________________  uptodate,lru,mmap\n0x0001000000000828              43        0  ___U_l_____M_________________I___  uptodate,lru,mmap,readahead\n0x000000000000082c             382        1  __RU_l_____M_____________________  referenced,uptodate,lru,mmap\n0x000100000000082c              12        0  __RU_l_____M_________________I___  referenced,uptodate,lru,mmap,readahead\n0x0000000000000868             192        0  ___U_lA____M_____________________  uptodate,lru,active,mmap\n0x0001000000000868              12        0  ___U_lA____M_________________I___  uptodate,lru,active,mmap,readahead\n0x000000000000086c             800        3  __RU_lA____M_____________________  referenced,uptodate,lru,active,mmap\n0x000100000000086c              31        0  __RU_lA____M_________________I___  referenced,uptodate,lru,active,mmap,readahead\n0x0000000000004878               2        0  ___UDlA____M__b__________________  uptodate,dirty,lru,active,mmap,swapbacked\n0x0000000000001000             492        1  ____________a____________________  anonymous\n0x0000000000005808               4        0  ___U_______Ma_b__________________  uptodate,mmap,anonymous,swapbacked\n0x0000000000005868            2839       11  ___U_lA____Ma_b__________________  uptodate,lru,active,mmap,anonymous,swapbacked\n0x000000000000586c              30        0  __RU_lA____Ma_b__________________  referenced,uptodate,lru,active,mmap,anonymous,swapbacked\n             total          513968     2007\n\n# ./page-types -r\n             flags      page-count       MB  symbolic-flags                     long-symbolic-flags\n0x0000000000000000          468002     1828  _________________________________\n0x0000000100000000           19102       74  _____________________r___________  reserved\n0x0000000000008000              41        0  _______________H_________________  compound_head\n0x0000000000010000             188        0  ________________T________________  compound_tail\n0x0000000000008014               1        0  __R_D__________H_________________  referenced,dirty,compound_head\n0x0000000000010014               4        0  __R_D___________T________________  referenced,dirty,compound_tail\n0x0000000000000020               1        0  _____l___________________________  lru\n0x0000000800000024              34        0  __R__l__________________P________  referenced,lru,private\n0x0000000000000028            3794       14  ___U_l___________________________  uptodate,lru\n0x0001000000000028              46        0  ___U_l_______________________I___  uptodate,lru,readahead\n0x0000000400000028              44        0  ___U_l_________________d_________  uptodate,lru,mappedtodisk\n0x0001000400000028               2        0  ___U_l_________________d_____I___  uptodate,lru,mappedtodisk,readahead\n0x000000000000002c            6434       25  __RU_l___________________________  referenced,uptodate,lru\n0x000100000000002c              47        0  __RU_l_______________________I___  referenced,uptodate,lru,readahead\n0x000000040000002c              14        0  __RU_l_________________d_________  referenced,uptodate,lru,mappedtodisk\n0x000000080000002c              30        0  __RU_l__________________P________  referenced,uptodate,lru,private\n0x0000000800000040            8124       31  ______A_________________P________  active,private\n0x0000000000000040             219        0  ______A__________________________  active\n0x0000000800000060               1        0  _____lA_________________P________  lru,active,private\n0x0000000000000068             322        1  ___U_lA__________________________  uptodate,lru,active\n0x0001000000000068              12        0  ___U_lA______________________I___  uptodate,lru,active,readahead\n0x0000000400000068              13        0  ___U_lA________________d_________  uptodate,lru,active,mappedtodisk\n0x0000000800000068              12        0  ___U_lA_________________P________  uptodate,lru,active,private\n0x000000000000006c             977        3  __RU_lA__________________________  referenced,uptodate,lru,active\n0x000100000000006c              48        0  __RU_lA______________________I___  referenced,uptodate,lru,active,readahead\n0x000000040000006c               5        0  __RU_lA________________d_________  referenced,uptodate,lru,active,mappedtodisk\n0x000000080000006c               3        0  __RU_lA_________________P________  referenced,uptodate,lru,active,private\n0x0000000c0000006c               3        0  __RU_lA________________dP________  referenced,uptodate,lru,active,mappedtodisk,private\n0x0000000c00000068               1        0  ___U_lA________________dP________  uptodate,lru,active,mappedtodisk,private\n0x0000000000004078               1        0  ___UDlA_______b__________________  uptodate,dirty,lru,active,swapbacked\n0x000000000000407c              34        0  __RUDlA_______b__________________  referenced,uptodate,dirty,lru,active,swapbacked\n0x0000000000000400             538        2  __________B______________________  buddy\n0x0000000000000804               1        0  __R________M_____________________  referenced,mmap\n0x0000000000000828            1029        4  ___U_l_____M_____________________  uptodate,lru,mmap\n0x0001000000000828              43        0  ___U_l_____M_________________I___  uptodate,lru,mmap,readahead\n0x000000000000082c             382        1  __RU_l_____M_____________________  referenced,uptodate,lru,mmap\n0x000100000000082c              12        0  __RU_l_____M_________________I___  referenced,uptodate,lru,mmap,readahead\n0x0000000000000868             192        0  ___U_lA____M_____________________  uptodate,lru,active,mmap\n0x0001000000000868              12        0  ___U_lA____M_________________I___  uptodate,lru,active,mmap,readahead\n0x000000000000086c             800        3  __RU_lA____M_____________________  referenced,uptodate,lru,active,mmap\n0x000100000000086c              31        0  __RU_lA____M_________________I___  referenced,uptodate,lru,active,mmap,readahead\n0x0000000000004878               2        0  ___UDlA____M__b__________________  uptodate,dirty,lru,active,mmap,swapbacked\n0x0000000000001000             492        1  ____________a____________________  anonymous\n0x0000000000005008               2        0  ___U________a_b__________________  uptodate,anonymous,swapbacked\n0x0000000000005808               4        0  ___U_______Ma_b__________________  uptodate,mmap,anonymous,swapbacked\n0x000000000000580c               1        0  __RU_______Ma_b__________________  referenced,uptodate,mmap,anonymous,swapbacked\n0x0000000000005868            2839       11  ___U_lA____Ma_b__________________  uptodate,lru,active,mmap,anonymous,swapbacked\n0x000000000000586c              29        0  __RU_lA____Ma_b__________________  referenced,uptodate,lru,active,mmap,anonymous,swapbacked\n             total          513968     2007\n\n# ./page-types --raw --list --no-summary --bits reserved\noffset  count   flags\n0       15      _____________________r___________\n31      4       _____________________r___________\n159     97      _____________________r___________\n4096    2067    _____________________r___________\n6752    2390    _____________________r___________\n9355    3       _____________________r___________\n9728    14526   _____________________r___________\n\nThis patch:\n\nIntroduce PageHuge(), which identifies huge/gigantic pages by their\ndedicated compound destructor functions.\n\nAlso move prep_compound_gigantic_page() to hugetlb.c and make\n__free_pages_ok() non-static.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1db8508cf483dc1ecf66141f90a7c03659d69512",
      "tree": "a0a50fd483612f750c735cd2d541dbb1114d0ff1",
      "parents": [
        "c36c63c511fa088fcc247a8e888b04f248be8435"
      ],
      "author": {
        "name": "Stefan Richter",
        "email": "stefanr@s5r6.in-berlin.de",
        "time": "Tue Feb 10 23:27:32 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 10 14:56:59 2009 -0800"
      },
      "message": "hugetlbfs: fix build failure with !CONFIG_HUGETLBFS\n\nFix regression due to 5a6fe125950676015f5108fb71b2a67441755003,\n\"Do not account for the address space used by hugetlbfs using VM_ACCOUNT\"\nwhich added an argument to the function hugetlb_file_setup() but not to\nthe macro hugetlb_file_setup().\n\nReported-by: Chris Clayton \u003cchris2553@googlemail.com\u003e\nSigned-off-by: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a6fe125950676015f5108fb71b2a67441755003",
      "tree": "c985fac46de39392466c4917c497b50bdc9c0757",
      "parents": [
        "4c098bcd55fad34dcf224bf8343db6a9ac58fc68"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Feb 10 14:02:27 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 10 10:48:42 2009 -0800"
      },
      "message": "Do not account for the address space used by hugetlbfs using VM_ACCOUNT\n\nWhen overcommit is disabled, the core VM accounts for pages used by anonymous\nshared, private mappings and special mappings. It keeps track of VMAs that\nshould be accounted for with VM_ACCOUNT and VMAs that never had a reserve\nwith VM_NORESERVE.\n\nOvercommit for hugetlbfs is much riskier than overcommit for base pages\ndue to contiguity requirements. It avoids overcommiting on both shared and\nprivate mappings using reservation counters that are checked and updated\nduring mmap(). This ensures (within limits) that hugepages exist in the\nfuture when faults occurs or it is too easy to applications to be SIGKILLed.\n\nAs hugetlbfs makes its own reservations of a different unit to the base page\nsize, VM_ACCOUNT should never be set. Even if the units were correct, we would\ndouble account for the usage in the core VM and hugetlbfs. VM_NORESERVE may\nbe set because an application can request no reserves be made for hugetlbfs\nat the risk of getting killed later.\n\nWith commit fc8744adc870a8d4366908221508bb113d8b72ee, VM_NORESERVE and\nVM_ACCOUNT are getting unconditionally set for hugetlbfs-backed mappings. This\nbreaks the accounting for both the core VM and hugetlbfs, can trigger an\nOOM storm when hugepage pools are too small lockups and corrupted counters\notherwise are used. This patch brings hugetlbfs more in line with how the\ncore VM treats VM_NORESERVE but prevents VM_ACCOUNT being set.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3340289ddf29ca75c3acfb3a6b72f234b2f74d5c",
      "tree": "d5da94eb1cb0146160fcb0e7aa161bfa5b6ac807",
      "parents": [
        "08fba69986e20c1c9e5fe2e6064d146cc4f42480"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jan 06 14:38:54 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:58 2009 -0800"
      },
      "message": "mm: report the MMU pagesize in /proc/pid/smaps\n\nThe KernelPageSize entry in /proc/pid/smaps is the pagesize used by the\nkernel to back a VMA.  This matches the size used by the MMU in the\nmajority of cases.  However, one counter-example occurs on PPC64 kernels\nwhereby a kernel using 64K as a base pagesize may still use 4K pages for\nthe MMU on older processor.  To distinguish, this patch reports\nMMUPageSize as the pagesize used by the MMU in /proc/pid/smaps.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: \"KOSAKI Motohiro\" \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08fba69986e20c1c9e5fe2e6064d146cc4f42480",
      "tree": "40bd36a6778624527d91ede0eb51aa5b99aab01c",
      "parents": [
        "238c6d54830c624f34ac9cf123ac04aebfca5013"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jan 06 14:38:53 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:58 2009 -0800"
      },
      "message": "mm: report the pagesize backing a VMA in /proc/pid/smaps\n\nIt is useful to verify a hugepage-aware application is using the expected\npagesizes for its memory regions. This patch creates an entry called\nKernelPageSize in /proc/pid/smaps that is the size of page used by the\nkernel to back a VMA. The entry is not called PageSize as it is possible\nthe MMU uses a different size. This extension should not break any sensible\nparser that skips lines containing unrecognised information.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: \"KOSAKI Motohiro\" \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e1759c215bee5abbcb6cb066590ab20905154ed5",
      "tree": "14a43e259767082706dab112292ff92e13ce42a4",
      "parents": [
        "9617760287eec9091d26e6967bd3e4194de18f97"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Oct 15 23:50:22 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 13:52:40 2008 +0400"
      },
      "message": "proc: switch /proc/meminfo to seq_file\n\nand move it to fs/proc/meminfo.c while I\u0027m at it.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "510a35d4a47802f4a0028aa6bd2ca2170da5e32f",
      "tree": "8eb0d6091fe89f013436c5080dc4cbaf825172cf",
      "parents": [
        "b2d002dba5a8a4c0c3ec96fd1ff3c9def6bd71a1"
      ],
      "author": {
        "name": "Andrea Righi",
        "email": "righi.andrea@gmail.com",
        "time": "Sat Jul 26 15:22:27 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 20:16:47 2008 -0700"
      },
      "message": "hugetlb: remove unused variable warning\n\nRemove the following warning when CONFIG_HUGETLB_PAGE is not set:\n\n\tipc/shm.c: In function `shm_get_stat\u0027:\n\tipc/shm.c:565: warning: unused variable `h\u0027\n\n[akpm@linux-foundation.org: use tabs, not spaces]\nSigned-off-by: Andrea Righi \u003crighi.andrea@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53ba51d21d6e048424ab8aadfebdb1f25ae07b60",
      "tree": "0d5c5ee420e85f3a86ff7fe9151e7c3d547e7de1",
      "parents": [
        "e11bfbfcb08ef4223b863799897c19cdf7c5bc00"
      ],
      "author": {
        "name": "Jon Tollefson",
        "email": "kniht@linux.vnet.ibm.com",
        "time": "Wed Jul 23 21:27:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:19 2008 -0700"
      },
      "message": "hugetlb: allow arch overridden hugepage allocation\n\nAllow alloc_bootmem_huge_page() to be overridden by architectures that\ncan\u0027t always use bootmem.  This requires huge_boot_pages to be available\nfor use by this function.\n\nThis is required for powerpc 16G pages, which have to be reserved prior to\nboot-time.  The location of these pages are indicated in the device tree.\n\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nSigned-off-by: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\u003e\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": "ceb868796181dc95ea01a110e123afd391639873",
      "tree": "991be618e5195b05c31974a19adb4b9602315013",
      "parents": [
        "4abd32dbab201c3ced0b0af12accea77cd9eeffc"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed Jul 23 21:27:50 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:18 2008 -0700"
      },
      "message": "hugetlb: introduce pud_huge\n\nStraight forward extensions for huge pages located in the PUD instead of\nPMDs.\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.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": "a3437870160cf2caaac6bdd76c7377a5a4145a8c",
      "tree": "6d3c8ddd442e4cd96f1f8bdcf59fcaef72f4edc9",
      "parents": [
        "a137e1cc6d6e7d315fef03962a2a5a113348b13b"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Wed Jul 23 21:27:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:17 2008 -0700"
      },
      "message": "hugetlb: new sysfs interface\n\nProvide new hugepages user APIs that are more suited to multiple hstates\nin sysfs.  There is a new directory, /sys/kernel/hugepages.  Underneath\nthat directory there will be a directory per-supported hugepage size,\ne.g.:\n\n/sys/kernel/hugepages/hugepages-64kB\n/sys/kernel/hugepages/hugepages-16384kB\n/sys/kernel/hugepages/hugepages-16777216kB\n\ncorresponding to 64k, 16m and 16g respectively.  Within each\nhugepages-size directory there are a number of files, corresponding to the\ntracked counters in the hstate, e.g.:\n\n/sys/kernel/hugepages/hugepages-64/nr_hugepages\n/sys/kernel/hugepages/hugepages-64/nr_overcommit_hugepages\n/sys/kernel/hugepages/hugepages-64/free_hugepages\n/sys/kernel/hugepages/hugepages-64/resv_hugepages\n/sys/kernel/hugepages/hugepages-64/surplus_hugepages\n\nOf these files, the first two are read-write and the latter three are\nread-only.  The size of the hugepage being manipulated is trivially\ndeducible from the enclosing directory and is always expressed in kB (to\nmatch meminfo).\n\n[dave@linux.vnet.ibm.com: fix build]\n[nacc@us.ibm.com: hugetlb: hang off of /sys/kernel/mm rather than /sys/kernel]\n[nacc@us.ibm.com: hugetlb: remove CONFIG_SYSFS dependency]\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\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": "a137e1cc6d6e7d315fef03962a2a5a113348b13b",
      "tree": "b47e195c392abaa3640cc2f9187d99d58cee664a",
      "parents": [
        "e5ff215941d59f8ae6bf58f6428dc5c26745a612"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed Jul 23 21:27:43 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:17 2008 -0700"
      },
      "message": "hugetlbfs: per mount huge page sizes\n\nAdd the ability to configure the hugetlb hstate used on a per mount basis.\n\n- Add a new pagesize\u003d option to the hugetlbfs mount that allows setting\n  the page size\n- This option causes the mount code to find the hstate corresponding to the\n  specified size, and sets up a pointer to the hstate in the mount\u0027s\n  superblock.\n- Change the hstate accessors to use this information rather than the\n  global_hstate they were using (requires a slight change in mm/memory.c\n  so we don\u0027t NULL deref in the error-unmap path -- see comments).\n\n[np: take hstate out of hugetlbfs inode and vma-\u003evm_private_data]\n\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\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": "e5ff215941d59f8ae6bf58f6428dc5c26745a612",
      "tree": "d8a3f730124d6608c6c880515625ca2d4e4ed044",
      "parents": [
        "a5516438959d90b071ff0a484ce4f3f523dc3152"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed Jul 23 21:27:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:17 2008 -0700"
      },
      "message": "hugetlb: multiple hstates for multiple page sizes\n\nAdd basic support for more than one hstate in hugetlbfs.  This is the key\nto supporting multiple hugetlbfs page sizes at once.\n\n- Rather than a single hstate, we now have an array, with an iterator\n- default_hstate continues to be the struct hstate which we use by default\n- Add functions for architectures to register new hstates\n\n[akpm@linux-foundation.org: coding-style fixes]\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\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": "a5516438959d90b071ff0a484ce4f3f523dc3152",
      "tree": "e356ba9364c76b93c176b4d4a262b7aca3ee8f91",
      "parents": [
        "b7ba30c679ed1eb7ed3ed8f281f6493282042bd4"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed Jul 23 21:27:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:17 2008 -0700"
      },
      "message": "hugetlb: modular state for hugetlb page size\n\nThe goal of this patchset is to support multiple hugetlb page sizes.  This\nis achieved by introducing a new struct hstate structure, which\nencapsulates the important hugetlb state and constants (eg.  huge page\nsize, number of huge pages currently allocated, etc).\n\nThe hstate structure is then passed around the code which requires these\nfields, they will do the right thing regardless of the exact hstate they\nare operating on.\n\nThis patch adds the hstate structure, with a single global instance of it\n(default_hstate), and does the basic work of converting hugetlb to use the\nhstate.\n\nFuture patches will add more hstate structures to allow for different\nhugetlbfs mounts to have different page sizes.\n\n[akpm@linux-foundation.org: coding-style fixes]\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\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": "04f2cbe35699d22dbf428373682ead85ca1240f5",
      "tree": "1987a2c704cc97d8adf603054c9d89d18b9b30e0",
      "parents": [
        "a1e78772d72b2616ed20e54896e68e0e7044854e"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Jul 23 21:27:25 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:16 2008 -0700"
      },
      "message": "hugetlb: guarantee that COW faults for a process that called mmap(MAP_PRIVATE) on hugetlbfs will succeed\n\nAfter patch 2 in this series, a process that successfully calls mmap() for\na MAP_PRIVATE mapping will be guaranteed to successfully fault until a\nprocess calls fork().  At that point, the next write fault from the parent\ncould fail due to COW if the child still has a reference.\n\nWe only reserve pages for the parent but a copy must be made to avoid\nleaking data from the parent to the child after fork().  Reserves could be\ntaken for both parent and child at fork time to guarantee faults but if\nthe mapping is large it is highly likely we will not have sufficient pages\nfor the reservation, and it is common to fork only to exec() immediatly\nafter.  A failure here would be very undesirable.\n\nNote that the current behaviour of mainline with MAP_PRIVATE pages is\npretty bad.  The following situation is allowed to occur today.\n\n1. Process calls mmap(MAP_PRIVATE)\n2. Process calls mlock() to fault all pages and makes sure it succeeds\n3. Process forks()\n4. Process writes to MAP_PRIVATE mapping while child still exists\n5. If the COW fails at this point, the process gets SIGKILLed even though it\n   had taken care to ensure the pages existed\n\nThis patch improves the situation by guaranteeing the reliability of the\nprocess that successfully calls mmap().  When the parent performs COW, it\nwill try to satisfy the allocation without using reserves.  If that fails\nthe parent will steal the page leaving any children without a page.\nFaults from the child after that point will result in failure.  If the\nchild COW happens first, an attempt will be made to allocate the page\nwithout reserves and the child will get SIGKILLed on failure.\n\nTo summarise the new behaviour:\n\n1. If the original mapper performs COW on a private mapping with multiple\n   references, it will attempt to allocate a hugepage from the pool or\n   the buddy allocator without using the existing reserves. On fail, VMAs\n   mapping the same area are traversed and the page being COW\u0027d is unmapped\n   where found. It will then steal the original page as the last mapper in\n   the normal way.\n\n2. The VMAs the pages were unmapped from are flagged to note that pages\n   with data no longer exist. Future no-page faults on those VMAs will\n   terminate the process as otherwise it would appear that data was corrupted.\n   A warning is printed to the console that this situation occured.\n\n2. If the child performs COW first, it will attempt to satisfy the COW\n   from the pool if there are enough pages or via the buddy allocator if\n   overcommit is allowed and the buddy allocator can satisfy the request. If\n   it fails, the child will be killed.\n\nIf the pool is large enough, existing applications will not notice that\nthe reserves were a factor.  Existing applications depending on the\nno-reserves been set are unlikely to exist as for much of the history of\nhugetlbfs, pages were prefaulted at mmap(), allocating the pages at that\npoint or failing the mmap().\n\n[npiggin@suse.de: fix CONFIG_HUGETLB\u003dn build]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: 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": "a1e78772d72b2616ed20e54896e68e0e7044854e",
      "tree": "d752dd96c2a4fcc555779a7aa99f95069c9b95ae",
      "parents": [
        "fc1b8a73dd71226902a11928dd5500326e101df9"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Jul 23 21:27:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:16 2008 -0700"
      },
      "message": "hugetlb: reserve huge pages for reliable MAP_PRIVATE hugetlbfs mappings until fork()\n\nThis patch reserves huge pages at mmap() time for MAP_PRIVATE mappings in\na similar manner to the reservations taken for MAP_SHARED mappings.  The\nreserve count is accounted both globally and on a per-VMA basis for\nprivate mappings.  This guarantees that a process that successfully calls\nmmap() will successfully fault all pages in the future unless fork() is\ncalled.\n\nThe characteristics of private mappings of hugetlbfs files behaviour after\nthis patch are;\n\n1. The process calling mmap() is guaranteed to succeed all future faults until\n   it forks().\n2. On fork(), the parent may die due to SIGKILL on writes to the private\n   mapping if enough pages are not available for the COW. For reasonably\n   reliable behaviour in the face of a small huge page pool, children of\n   hugepage-aware processes should not reference the mappings; such as\n   might occur when fork()ing to exec().\n3. On fork(), the child VMAs inherit no reserves. Reads on pages already\n   faulted by the parent will succeed. Successful writes will depend on enough\n   huge pages being free in the pool.\n4. Quotas of the hugetlbfs mount are checked at reserve time for the mapper\n   and at fault time otherwise.\n\nBefore this patch, all reads or writes in the child potentially needs page\nallocations that can later lead to the death of the parent.  This applies\nto reads and writes of uninstantiated pages as well as COW.  After the\npatch it is only a write to an instantiated page that causes problems.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\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": "6d779079bfd1196e077bb1d0a906c37ae770b102",
      "tree": "880b17a8c5d4badb548773928868606826899c68",
      "parents": [
        "71fe804b6d56d6a7aed680e096901434cef6a2c3"
      ],
      "author": {
        "name": "Gerald Schaefer",
        "email": "gerald.schaefer@de.ibm.com",
        "time": "Mon Apr 28 02:13:27 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:25 2008 -0700"
      },
      "message": "hugetlbfs: architecture header cleanup\n\nThis patch moves all architecture functions for hugetlb to architecture header\nfiles (include/asm-foo/hugetlb.h) and converts all macros to inline functions.\n It also removes (!) ARCH_HAS_HUGEPAGE_ONLY_RANGE,\nARCH_HAS_HUGETLB_FREE_PGD_RANGE, ARCH_HAS_PREPARE_HUGEPAGE_RANGE,\nARCH_HAS_SETCLEAR_HUGE_PTE and ARCH_HAS_HUGETLB_PREFAULT_HOOK.\n\nGetting rid of the ARCH_HAS_xxx #ifdef and macro fugliness should increase\nreadability and maintainability, at the price of some code duplication.  An\nasm-generic common part would have reduced the loc, but we would end up with\nnew ARCH_HAS_xxx defines eventually.\n\nAcked-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"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": "064d9efe947542097be669581f82d6b097e81d1a",
      "tree": "ddfc9f1c4d60135a7d7a1c5ebb7d0e85f683cfcb",
      "parents": [
        "2695a14d315c014474ccadbaed40b0169b00cb5b"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Wed Feb 13 15:03:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 13 16:21:18 2008 -0800"
      },
      "message": "hugetlb: fix overcommit locking\n\nproc_doulongvec_minmax() calls copy_to_user()/copy_from_user(), so we can\u0027t\nhold hugetlb_lock over the call.  Use a dummy variable to store the sysctl\nresult, like in hugetlb_sysctl_handler(), then grab the lock to update\nnr_overcommit_huge_pages.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nReported-by: Miles Lane \u003cmiles.lane@gmail.com\u003e\nCc: Adam Litke \u003cagl@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": "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": "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": "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": "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": "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": "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": "dec4ad86c2fbea062e9ef9caa6d6e79f7c5e0b12",
      "tree": "9882d3b1f59fb293cf0f70afc80bdc7bb1e0021e",
      "parents": [
        "4a58448b0a375f7198de34dd0d3e2881afeaf025"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Thu Aug 30 23:56:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Aug 31 01:42:23 2007 -0700"
      },
      "message": "hugepage: fix broken check for offset alignment in hugepage mappings\n\nFor hugepage mappings, the file offset, like the address and size, needs to\nbe aligned to the size of a hugepage.\n\nIn commit 68589bc353037f233fe510ad9ff432338c95db66, the check for this was\nmoved into prepare_hugepage_range() along with the address and size checks.\n But since BenH\u0027s rework of the get_unmapped_area() paths leading up to\ncommit 4b1d89290b62bb2db476c94c82cf7442aab440c8, prepare_hugepage_range()\nis only called for MAP_FIXED mappings, not for other mappings.  This means\nwe\u0027re no longer ever checking for an aligned offset - I\u0027ve confirmed that\nmmap() will (apparently) succeed with a misaligned offset on both powerpc\nand i386 at least.\n\nThis patch restores the check, removing it from prepare_hugepage_range()\nand putting it back into hugetlbfs_file_mmap().  I\u0027m putting it there,\nrather than in the get_unmapped_area() path so it only needs to go in one\nplace, than separately in the half-dozen or so arch-specific\nimplementations of hugetlb_get_unmapped_area().\n\nSigned-off-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e950f6f0189f65f8bf069cf2272649ef418f5e4",
      "tree": "95710bedf2a5aa3b61002f3399e0950192fdd504",
      "parents": [
        "673d5b43daa00b42759cecc6b0760b8bf6be80d2"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Jul 30 02:36:13 2007 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jul 29 17:09:29 2007 -0700"
      },
      "message": "Remove fs.h from mm.h\n\nRemove fs.h from mm.h. For this,\n 1) Uninline vma_wants_writenotify(). It\u0027s pretty huge anyway.\n 2) Add back fs.h or less bloated headers (err.h) to files that need it.\n\nAs result, on x86_64 allyesconfig, fs.h dependencies cut down from 3929 files\nrebuilt down to 3444 (-12.3%).\n\nCross-compile tested without regressions on my two usual configs and (sigh):\n\nalpha              arm-mx1ads        mips-bigsur          powerpc-ebony\nalpha-allnoconfig  arm-neponset      mips-capcella        powerpc-g5\nalpha-defconfig    arm-netwinder     mips-cobalt          powerpc-holly\nalpha-up           arm-netx          mips-db1000          powerpc-iseries\narm                arm-ns9xxx        mips-db1100          powerpc-linkstation\narm-assabet        arm-omap_h2_1610  mips-db1200          powerpc-lite5200\narm-at91rm9200dk   arm-onearm        mips-db1500          powerpc-maple\narm-at91rm9200ek   arm-picotux200    mips-db1550          powerpc-mpc7448_hpc2\narm-at91sam9260ek  arm-pleb          mips-ddb5477         powerpc-mpc8272_ads\narm-at91sam9261ek  arm-pnx4008       mips-decstation      powerpc-mpc8313_rdb\narm-at91sam9263ek  arm-pxa255-idp    mips-e55             powerpc-mpc832x_mds\narm-at91sam9rlek   arm-realview      mips-emma2rh         powerpc-mpc832x_rdb\narm-ateb9200       arm-realview-smp  mips-excite          powerpc-mpc834x_itx\narm-badge4         arm-rpc           mips-fulong          powerpc-mpc834x_itxgp\narm-carmeva        arm-s3c2410       mips-ip22            powerpc-mpc834x_mds\narm-cerfcube       arm-shannon       mips-ip27            powerpc-mpc836x_mds\narm-clps7500       arm-shark         mips-ip32            powerpc-mpc8540_ads\narm-collie         arm-simpad        mips-jazz            powerpc-mpc8544_ds\narm-corgi          arm-spitz         mips-jmr3927         powerpc-mpc8560_ads\narm-csb337         arm-trizeps4      mips-malta           powerpc-mpc8568mds\narm-csb637         arm-versatile     mips-mipssim         powerpc-mpc85xx_cds\narm-ebsa110        i386              mips-mpc30x          powerpc-mpc8641_hpcn\narm-edb7211        i386-allnoconfig  mips-msp71xx         powerpc-mpc866_ads\narm-em_x270        i386-defconfig    mips-ocelot          powerpc-mpc885_ads\narm-ep93xx         i386-up           mips-pb1100          powerpc-pasemi\narm-footbridge     ia64              mips-pb1500          powerpc-pmac32\narm-fortunet       ia64-allnoconfig  mips-pb1550          powerpc-ppc64\narm-h3600          ia64-bigsur       mips-pnx8550-jbs     powerpc-prpmc2800\narm-h7201          ia64-defconfig    mips-pnx8550-stb810  powerpc-ps3\narm-h7202          ia64-gensparse    mips-qemu            powerpc-pseries\narm-hackkit        ia64-sim          mips-rbhma4200       powerpc-up\narm-integrator     ia64-sn2          mips-rbhma4500       s390\narm-iop13xx        ia64-tiger        mips-rm200           s390-allnoconfig\narm-iop32x         ia64-up           mips-sb1250-swarm    s390-defconfig\narm-iop33x         ia64-zx1          mips-sead            s390-up\narm-ixp2000        m68k              mips-tb0219          sparc\narm-ixp23xx        m68k-amiga        mips-tb0226          sparc-allnoconfig\narm-ixp4xx         m68k-apollo       mips-tb0287          sparc-defconfig\narm-jornada720     m68k-atari        mips-workpad         sparc-up\narm-kafa           m68k-bvme6000     mips-wrppmc          sparc64\narm-kb9202         m68k-hp300        mips-yosemite        sparc64-allnoconfig\narm-ks8695         m68k-mac          parisc               sparc64-defconfig\narm-lart           m68k-mvme147      parisc-allnoconfig   sparc64-up\narm-lpd270         m68k-mvme16x      parisc-defconfig     um-x86_64\narm-lpd7a400       m68k-q40          parisc-up            x86_64\narm-lpd7a404       m68k-sun3         powerpc              x86_64-allnoconfig\narm-lubbock        m68k-sun3x        powerpc-cell         x86_64-defconfig\narm-lusl7200       mips              powerpc-celleb       x86_64-up\narm-mainstone      mips-atlas        powerpc-chrp32\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\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": "9d66586f7723b73c5925c7c7819c260484627851",
      "tree": "616c3c01282e0ca82c59b1496c385cf1e2961564",
      "parents": [
        "22741925d268e8479ef66312749bd8d96ed35365"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Jun 16 10:16:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Jun 16 13:16:16 2007 -0700"
      },
      "message": "shm: fix the filename of hugetlb sysv shared memory\n\nSome user space tools need to identify SYSV shared memory when examining\n/proc/\u003cpid\u003e/maps.  To do so they look for a block device with major zero, a\ndentry named SYSV\u003csysv key\u003e, and having the minor of the internal sysv\nshared memory kernel mount.\n\nTo help these tools and to make it easier for people just browsing\n/proc/\u003cpid\u003e/maps this patch modifies hugetlb sysv shared memory to use the\nSYSV\u003ckey\u003e dentry naming convention.\n\nUser space tools will still have to be aware that hugetlb sysv shared\nmemory lives on a different internal kernel mount and so has a different\nblock device minor number from the rest of sysv shared memory.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: \"Serge E. Hallyn\" \u003cserge@hallyn.com\u003e\nCc: Albert Cahalan \u003cacahalan@gmail.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": "d2ba27e8007b35d24764c0877ab2428e00a5c5ab",
      "tree": "d4c645000da4c208dba37fdda9897f1b7295cce4",
      "parents": [
        "1b4244647ceaad42ea6eb12899d58753d82b7727"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sun May 06 14:49:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:51 2007 -0700"
      },
      "message": "proper prototype for hugetlb_get_unmapped_area()\n\nAdd a proper prototype for hugetlb_get_unmapped_area() in\ninclude/linux/hugetlb.h.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nAcked-by: William Irwin \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": "516dffdcd8827a40532798602830dfcfc672294c",
      "tree": "c30fae64a30ca95fb896de80fe16ef90e8920410",
      "parents": [
        "7b965e0884cee430ffe5dc81cdb117b9316b0549"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Thu Mar 01 15:46:08 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Mar 01 17:18:39 2007 -0800"
      },
      "message": "[PATCH] Fix get_unmapped_area and fsync for hugetlb shm segments\n\nThis patch provides the following hugetlb-related fixes to the recent stacked\nshm files changes:\n - Update is_file_hugepages() so it will reconize hugetlb shm segments.\n - get_unmapped_area must be called with the nested file struct to handle\n   the sfd-\u003efile-\u003ef_ops-\u003eget_unmapped_area \u003d\u003d NULL case.\n - The fsync f_op must be wrapped since it is specified in the hugetlbfs\n   f_ops.\n\nThis is based on proposed fixes from Eric Biederman that were debugged and\ntested by me.  Without it, attempting to use hugetlb shared memory segments\non powerpc (and likely ia64) will kill your box.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Eric Biederman \u003cebiederm@xmission.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: William Irwin \u003cbill.irwin@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.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": "68589bc353037f233fe510ad9ff432338c95db66",
      "tree": "dedc58ff66134f54796642917e2a2a26ac6802b0",
      "parents": [
        "69ae9e3ee4ce99140a7db424bebf55d8d180da2f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Nov 14 02:03:32 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Tue Nov 14 09:09:27 2006 -0800"
      },
      "message": "[PATCH] hugetlb: prepare_hugepage_range check offset too\n\n(David:)\n\nIf hugetlbfs_file_mmap() returns a failure to do_mmap_pgoff() - for example,\nbecause the given file offset is not hugepage aligned - then do_mmap_pgoff\nwill go to the unmap_and_free_vma backout path.\n\nBut at this stage the vma hasn\u0027t been marked as hugepage, and the backout path\nwill call unmap_region() on it.  That will eventually call down to the\nnon-hugepage version of unmap_page_range().  On ppc64, at least, that will\ncause serious problems if there are any existing hugepage pagetable entries in\nthe vicinity - for example if there are any other hugepage mappings under the\nsame PUD.  unmap_page_range() will trigger a bad_pud() on the hugepage pud\nentries.  I suspect this will also cause bad problems on ia64, though I don\u0027t\nhave a machine to test it on.\n\n(Hugh:)\n\nprepare_hugepage_range() should check file offset alignment when it checks\nvirtual address and length, to stop MAP_FIXED with a bad huge offset from\nunmapping before it fails further down.  PowerPC should apply the same\nprepare_hugepage_range alignment checks as ia64 and all the others do.\n\nThen none of the alignment checks in hugetlbfs_file_mmap are required (nor\nis the check for too small a mapping); but even so, move up setting of\nVM_HUGETLB and add a comment to warn of what David Gibson discovered - if\nhugetlbfs_file_mmap fails before setting it, do_mmap_pgoff\u0027s unmap_region\nwhen unwinding from error will go the non-huge way, which may cause bad\nbehaviour on architectures (powerpc and ia64) which segregate their huge\nmappings into a separate region of the address space.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\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": "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": "4b6f5d20b04dcbc3d888555522b90ba6d36c4106",
      "tree": "420f271eaef7d3def7d4433b151c3cb6d7a54770",
      "parents": [
        "99ac48f54a91d02140c497edc31dc57d4bc5c85d"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Tue Mar 28 01:56:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:06 2006 -0800"
      },
      "message": "[PATCH] Make most file operations structs in fs/ const\n\nThis is a conversion to make the various file_operations structs in fs/\nconst.  Basically a regexp job, with a few manual fixups\n\nThe goal is both to increase correctness (harder to accidentally write to\nshared datastructures) and reducing the false sharing of cachelines with\nthings that get dirty in .data (while .rodata is nicely read only and thus\ncache clean)\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "42b88befd6e0dae1a5fe04c03925037fa890e1f3",
      "tree": "c234584f797e65e1bcd0d4675d56d1eb004d6681",
      "parents": [
        "3915bcf38fe0b6d130b4bbde97804f29a0becf32"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Wed Mar 22 00:09:01 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:04 2006 -0800"
      },
      "message": "[PATCH] hugepage: is_aligned_hugepage_range() cleanup\n\nQuite a long time back, prepare_hugepage_range() replaced\nis_aligned_hugepage_range() as the callback from mm/mmap.c to arch code to\nverify if an address range is suitable for a hugepage mapping.\nis_aligned_hugepage_range() stuck around, but only to implement\nprepare_hugepage_range() on archs which didn\u0027t implement their own.\n\nMost archs (everything except ia64 and powerpc) used the same\nimplementation of is_aligned_hugepage_range().  On powerpc, which\nimplements its own prepare_hugepage_range(), the custom version was never\nused.\n\nIn addition, \"is_aligned_hugepage_range()\" was a bad name, because it\nsuggests it returns true iff the given range is a good hugepage range,\nwhereas in fact it returns 0-or-error (so the sense is reversed).\n\nThis patch cleans up by abolishing is_aligned_hugepage_range().  Instead\nprepare_hugepage_range() is defined directly.  Most archs use the default\nversion, which simply checks the given region is aligned to the size of a\nhugepage.  ia64 and powerpc define custom versions.  The ia64 one simply\nchecks that the range is in the correct address space region in addition to\nbeing suitably aligned.  The powerpc version (just as previously) checks\nfor suitable addresses, and if necessary performs low-level MMU frobbing to\nset up new areas for use by hugepages.\n\nNo libhugetlbfs testsuite regressions on ppc64 (POWER5 LPAR).\n\nSigned-off-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Zhang Yanmin \u003cyanmin.zhang@intel.com\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: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3915bcf38fe0b6d130b4bbde97804f29a0becf32",
      "tree": "c094ae338592d6e11999c16a2690915e47888a2b",
      "parents": [
        "4866920b93fd7d5b520278c3c76e6f4d5a352d81"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Wed Mar 22 00:08:59 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:04 2006 -0800"
      },
      "message": "[PATCH] hugepage: Move hugetlb_free_pgd_range() prototype to hugetlb.h\n\nThe optional hugepage callback, hugetlb_free_pgd_range() is presently\nimplemented non-trivially only on ia64 (but I plan to add one for powerpc\nshortly).  It has its own prototype for the function in asm-ia64/pgtable.h.\n However, since the function is called from generic code, it make sense for\nits prototype to be in the generic hugetlb.h header file, as the protypes\nother arch callbacks already are (prepare_hugepage_range(),\nset_huge_pte_at(), etc.).  This patch makes it so.\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": "9da61aef0fd5b17dd4bf4baf33db12c470def774",
      "tree": "cb4bb0b63c36a0b303ceadc0cec0fae00c49ecf3",
      "parents": [
        "27a85ef1b81300cfff06b4c8037e9914dfb09acc"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Wed Mar 22 00:08:57 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:03 2006 -0800"
      },
      "message": "[PATCH] hugepage: Fix hugepage logic in free_pgtables()\n\nfree_pgtables() has special logic to call hugetlb_free_pgd_range() instead\nof the normal free_pgd_range() on hugepage VMAs.  However, the test it uses\nto do so is incorrect: it calls is_hugepage_only_range on a hugepage sized\nrange at the start of the vma.  is_hugepage_only_range() will return true\nif the given range has any intersection with a hugepage address region, and\nin this case the given region need not be hugepage aligned.  So, for\nexample, this test can return true if called on, say, a 4k VMA immediately\npreceding a (nicely aligned) hugepage VMA.\n\nAt present we get away with this because the powerpc version of\nhugetlb_free_pgd_range() is just a call to free_pgd_range().  On ia64 (the\nonly other arch with a non-trivial is_hugepage_only_range()) we get away\nwith it for a different reason; the hugepage area is not contiguous with\nthe rest of the user address space, and VMAs are not permitted in between,\nso the test can\u0027t return a false positive there.\n\nNonetheless this should be fixed.  We do that in the patch below by\nreplacing the is_hugepage_only_range() test with an explicit test of the\nVMA using is_vm_hugetlb_page().\n\nThis in turn changes behaviour for platforms where is_hugepage_only_range()\nreturns false always (everything except powerpc and ia64).  We address this\nby ensuring that hugetlb_free_pgd_range() is defined to be identical to\nfree_pgd_range() (instead of a no-op) on everything except ia64.  Even so,\nit will prevent some otherwise possible coalescing of calls down to\nfree_pgd_range().  Since this only happens for hugepage VMAs, removing this\nsmall optimization seems unlikely to cause any trouble.\n\nThis patch causes no regressions on the libhugetlbfs testsuite - ppc64\nPOWER5 (8-way), ppc64 G5 (2-way) and i386 Pentium M (UP).\n\nSigned-off-by: David Gibson \u003cdwg@au1.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nAcked-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": "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": "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": "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": "51c6f666fceb3184eeff045dad4432b602cd648e",
      "tree": "33e29916e0fea872ba6f29eba698219a740b078f",
      "parents": [
        "885036d32f5d3c427c3e2b385b5a5503805e3e52"
      ],
      "author": {
        "name": "Robin Holt",
        "email": "holt@sgi.com",
        "time": "Sun Nov 13 16:06:42 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 13 18:14:12 2005 -0800"
      },
      "message": "[PATCH] mm: ZAP_BLOCK causes redundant work\n\nThe address based work estimate for unmapping (for lockbreak) is and always\nwas horribly inefficient for sparse mappings.  The problem is most simply\nexplained with an example:\n\nIf we find a pgd is clear, we still have to call into unmap_page_range\nPGDIR_SIZE / ZAP_BLOCK_SIZE times, each time checking the clear pgd, in\norder to progress the working address to the next pgd.\n\nThe fundamental way to solve the problem is to keep track of the end\naddress we\u0027ve processed and pass it back to the higher layers.\n\nFrom: Nick Piggin \u003cnpiggin@suse.de\u003e\n\n  Modification to completely get away from address based work estimate\n  and instead use an abstract count, with a very small cost for empty\n  entries as opposed to present pages.\n\n  On 2.6.14-git2, ppc64, and CONFIG_PREEMPT\u003dy, mapping and unmapping 1TB\n  of virtual address space takes 1.69s; with the following patch applied,\n  this operation can be done 1000 times in less than 0.01s\n\nFrom: Andrew Morton \u003cakpm@osdl.org\u003e\n\nWith CONFIG_HUTETLB_PAGE\u003dn:\n\nmm/memory.c: In function `unmap_vmas\u0027:\nmm/memory.c:779: warning: division by zero\n\nDue to\n\n\t\t\tzap_work -\u003d (end - start) /\n\t\t\t\t\t(HPAGE_SIZE / PAGE_SIZE);\n\nSo make the dummy HPAGE_SIZE non-zero\n\nSigned-off-by: Robin Holt \u003cholt@sgi.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\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": "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": "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": "3359b54c8c07338f3a863d1109b42eebccdcf379",
      "tree": "f91edd52c71e57ce4b46e3875c9054666ca4e24c",
      "parents": [
        "bb7e257ef8d8ba43cab356aa1cc1b20d0106d45f"
      ],
      "author": {
        "name": "Seth, Rohit",
        "email": "rohit.seth@intel.com",
        "time": "Tue Oct 18 14:15:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 19 13:56:27 2005 -0700"
      },
      "message": "[PATCH] Handle spurious page fault for hugetlb region\n\nThe hugetlb pages are currently pre-faulted.  At the time of mmap of\nhugepages, we populate the new PTEs.  It is possible that HW has already\ncached some of the unused PTEs internally.  These stale entries never\nget a chance to be purged in existing control flow.\n\nThis patch extends the check in page fault code for hugepages.  Check if\na faulted address falls with in size for the hugetlb file backing it.\nWe return VM_FAULT_MINOR for these cases (assuming that the arch\nspecific page-faulting code purges the stale entry for the archs that\nneed it).\n\nSigned-off-by: Rohit Seth \u003crohit.seth@intel.com\u003e\n\n[ This is apparently arguably an ia64 port bug. But the code won\u0027t\n  hurt, and for now it fixes a real problem on some ia64 machines ]\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0e5c9f39f64d8a55c5db37a5ea43e37d3422fd92",
      "tree": "2b7da9a3813f1ce475d276d55243b2675b90349b",
      "parents": [
        "02b0ccef903e85673ead74ddb7c431f2f7ce183d"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Sat Sep 03 15:55:02 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:46 2005 -0700"
      },
      "message": "[PATCH] remove hugetlb_clean_stale_pgtable() and fix huge_pte_alloc()\n\nI don\u0027t think we need to call hugetlb_clean_stale_pgtable() anymore\nin 2.6.13 because of the rework with free_pgtables().  It now collect\nall the pte page at the time of munmap.  It used to only collect page\ntable pages when entire one pgd can be freed and left with staled pte\npages.  Not anymore with 2.6.13.  This function will never be called\nand We should turn it into a BUG_ON.\n\nI also spotted two problems here, not Adam\u0027s fault :-)\n(1) in huge_pte_alloc(), it looks like a bug to me that pud is not\n    checked before calling pmd_alloc()\n(2) in hugetlb_clean_stale_pgtable(), it also missed a call to\n    pmd_free_tlb.  I think a tlb flush is required to flush the mapping\n    for the page table itself when we clear out the pmd pointing to a\n    pte page.  However, since hugetlb_clean_stale_pgtable() is never\n    called, so it won\u0027t trigger the bug.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.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": "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": "3bf5ee95648c694bac4d13529563c230cd4fe5f2",
      "tree": "9430e6e4f4c3d586ecb7375cd780fd17694888c7",
      "parents": [
        "ee39b37b23da0b6ec53a8ebe90ff41c016f8ae27"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Apr 19 13:29:16 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org.(none)",
        "time": "Tue Apr 19 13:29:16 2005 -0700"
      },
      "message": "[PATCH] freepgt: hugetlb_free_pgd_range\n\nia64 and ppc64 had hugetlb_free_pgtables functions which were no longer being\ncalled, and it wasn\u0027t obvious what to do about them.\n\nThe ppc64 case turns out to be easy: the associated tables are noted elsewhere\nand freed later, safe to either skip its hugetlb areas or go through the\nmotions of freeing nothing.  Since ia64 does need a special case, restore to\nppc64 the special case of skipping them.\n\nThe ia64 hugetlb case has been broken since pgd_addr_end went in, though it\nprobably appeared to work okay if you just had one such area; in fact it\u0027s\nbeen broken much longer if you consider a long munmap spanning from another\nregion into the hugetlb region.\n\nIn the ia64 hugetlb region, more virtual address bits are available than in\nthe other regions, yet the page tables are structured the same way: the page\nat the bottom is larger.  Here we need to scale down each addr before passing\nit to the standard free_pgd_range.  Was about to write a hugely_scaled_down\nmacro, but found htlbpage_to_page already exists for just this purpose.  Fixed\noff-by-one in ia64 is_hugepage_only_range.\n\nUninline free_pgd_range to make it available to ia64.  Make sure the\nvma-gathering loop in free_pgtables cannot join a hugepage_only_range to any\nother (safe to join huges?  probably but don\u0027t bother).\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": "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"
    }
  ]
}
