)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
