)]}'
{
  "log": [
    {
      "commit": "480eccf9ae1073b87bb4fe118971fbf134a5bc61",
      "tree": "b66cd85cd6ad9dc7c141d34837a848111d036584",
      "parents": [
        "28f300d23674fa01ae747c66ce861d4ee6aebe8c"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Tue Sep 18 22:46:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Sep 19 11:24:18 2007 -0700"
      },
      "message": "Fix NUMA Memory Policy Reference Counting\n\nThis patch proposes fixes to the reference counting of memory policy in the\npage allocation paths and in show_numa_map().  Extracted from my \"Memory\nPolicy Cleanups and Enhancements\" series as stand-alone.\n\nShared policy lookup [shmem] has always added a reference to the policy,\nbut this was never unrefed after page allocation or after formatting the\nnuma map data.\n\nDefault system policy should not require additional ref counting, nor\nshould the current task\u0027s task policy.  However, show_numa_map() calls\nget_vma_policy() to examine what may be [likely is] another task\u0027s policy.\nThe latter case needs protection against freeing of the policy.\n\nThis patch adds a reference count to a mempolicy returned by\nget_vma_policy() when the policy is a vma policy or another task\u0027s\nmempolicy.  Again, shared policy is already reference counted on lookup.  A\nmatching \"unref\" [__mpol_free()] is performed in alloc_page_vma() for\nshared and vma policies, and in show_numa_map() for shared and another\ntask\u0027s mempolicy.  We can call __mpol_free() directly, saving an admittedly\ninexpensive inline NULL test, because we know we have a non-NULL policy.\n\nHandling policy ref counts for hugepages is a bit trickier.\nhuge_zonelist() returns a zone list that might come from a shared or vma\n\u0027BIND policy.  In this case, we should hold the reference until after the\nhuge page allocation in dequeue_hugepage().  The patch modifies\nhuge_zonelist() to return a pointer to the mempolicy if it needs to be\nunref\u0027d after allocation.\n\nKernel Build [16cpu, 32GB, ia64] - average of 10 runs:\n\n\t\tw/o patch\tw/ refcount patch\n\t    Avg\t  Std Devn\t   Avg\t  Std Devn\nReal:\t 100.59\t    0.38\t 100.63\t    0.43\nUser:\t1209.60\t    0.37\t1209.91\t    0.31\nSystem:   81.52\t    0.42\t  81.64\t    0.34\n\nSigned-off-by:  Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3b42d28b2a04b3c9830eb865288239d45eccc402",
      "tree": "776a297ef8bd8a879da74290543907014abe6198",
      "parents": [
        "dec4ad86c2fbea062e9ef9caa6d6e79f7c5e0b12"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Aug 31 00:12:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Aug 31 01:42:23 2007 -0700"
      },
      "message": "Page migration: Do not accept invalid nodes in the target nodeset\n\nPage migration currently does not check if the target of the move contains\nnodes that that are invalid (if root attempts to migrate pages)\nand may try to allocate from invalid nodes if these are specified\nleading to oopses.\n\nReturn -EINVAL if an offline node is specified.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b377fd3982ad957c796758a90e2988401a884241",
      "tree": "3d7449ccdf7038bffffa9323873f4095cc1ac6ce",
      "parents": [
        "8e92f21ba3ea3f54e4be062b87ef9fc4af2d33e2"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Aug 22 14:02:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Aug 22 19:52:47 2007 -0700"
      },
      "message": "Apply memory policies to top two highest zones when highest zone is ZONE_MOVABLE\n\nThe NUMA layer only supports NUMA policies for the highest zone.  When\nZONE_MOVABLE is configured with kernelcore\u003d, the the highest zone becomes\nZONE_MOVABLE.  The result is that policies are only applied to allocations\nlike anonymous pages and page cache allocated from ZONE_MOVABLE when the\nzone is used.\n\nThis patch applies policies to the two highest zones when the highest zone\nis ZONE_MOVABLE.  As ZONE_MOVABLE consists of pages from the highest \"real\"\nzone, it\u0027s always functionally equivalent.\n\nThe patch has been tested on a variety of machines both NUMA and non-NUMA\ncovering x86, x86_64 and ppc64.  No abnormal results were seen in\nkernbench, tbench, dbench or hackbench.  It passes regression tests from\nthe numactl package with and without kernelcore\u003d once numactl tests are\npatched to wait for vmstat counters to update.\n\nakpm: this is the nasty hack to fix NUMA mempolicies in the presence of\nZONE_MOVABLE and kernelcore\u003d in 2.6.23.  Christoph says \"For .24 either merge\nthe mobility or get the other solution that Mel is working on.  That solution\nwould only use a single zonelist per node and filter on the fly.  That may\nhelp performance and also help to make memory policies work better.\"\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by:  Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nTested-by:  Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.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": "769848c03895b63e5662eb7e4ec8c4866f7d0183",
      "tree": "8911c7c312c8b8b172795fa2874c8162e1d3d15a",
      "parents": [
        "a32ea1e1f925399e0d81ca3f7394a44a6dafa12c"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jul 17 04:03:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:22:59 2007 -0700"
      },
      "message": "Add __GFP_MOVABLE for callers to flag allocations from high memory that may be migrated\n\nIt is often known at allocation time whether a page may be migrated or not.\nThis patch adds a flag called __GFP_MOVABLE and a new mask called\nGFP_HIGH_MOVABLE.  Allocations using the __GFP_MOVABLE can be either migrated\nusing the page migration mechanism or reclaimed by syncing with backing\nstorage and discarding.\n\nAn API function very similar to alloc_zeroed_user_highpage() is added for\n__GFP_MOVABLE allocations called alloc_zeroed_user_highpage_movable().  The\nflags used by alloc_zeroed_user_highpage() are not changed because it would\nchange the semantics of an existing API.  After this patch is applied there\nare no in-kernel users of alloc_zeroed_user_highpage() so it probably should\nbe marked deprecated if this patch is merged.\n\nNote that this patch includes a minor cleanup to the use of __GFP_ZERO in\nshmem.c to keep all flag modifications to inode-\u003emapping in the\nshmem_dir_alloc() helper function.  This clean-up suggestion is courtesy of\nHugh Dickens.\n\nAdditional credit goes to Christoph Lameter and Linus Torvalds for shaping the\nconcept.  Credit to Hugh Dickens for catching issues with shmem swap vector\nand ramfs allocations.\n\n[akpm@linux-foundation.org: build fix]\n[hugh@veritas.com: __GFP_ZERO cleanup]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "140d5a49046b6d73dce4a4229e88c000a99ee126",
      "tree": "64dcfe28ef6f5ccee5a2722e5c332c66ded29e28",
      "parents": [
        "462e00cc7151ed91fba688594436c453c80efb5d"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Sun Jul 15 23:38:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:36 2007 -0700"
      },
      "message": "numa: mempolicy: trivial debug fixes.\n\nEnabling debugging fails to build due to the nodemask variable in\ndo_mbind() having changed names, and then oopses on boot due to the\nassumption that the nodemask can be dereferenced -- which doesn\u0027t work out\nso well when the policy is changed to MPOL_DEFAULT with a NULL nodemask by\nnuma_default_policy().\n\nThis fixes it up, and switches from PDprintk() to pr_debug() while\nwe\u0027re at it.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b71636e29823c0602d908a2a62e94c9b57a97491",
      "tree": "d69a20eec2cc05bcd9b0dac2b9d4ccd9bad39e09",
      "parents": [
        "f0630fff54a239efbbd89faf6a62da071ef1ff78"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Sun Jul 15 23:38:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:36 2007 -0700"
      },
      "message": "numa: mempolicy: dynamic interleave map for system init\n\nThis converts the default system init memory policy to use a dynamically\ncreated node map instead of defaulting to all online nodes.  Nodes of a\ncertain size (\u003e\u003d 16MB) are judged to be suitable for interleave, and are added\nto the map.  If all nodes are smaller in size, the largest one is\nautomatically selected.\n\nWithout this, tiny nodes find themselves out of memory before we even make it\nto userspace.  Systems with large nodes will notice no change.\n\nOnly the system init policy is effected by this change, the regular\nMPOL_DEFAULT policy is still switched to later on in the boot process as\nnormal.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0dc952dc3e6d96d554a19fa7bee3f3b1d55e3cff",
      "tree": "1dcf2ff93784716143b7acef816888a71a9504c2",
      "parents": [
        "1f2b69f9bdce8461341e5fb864568a2ee90079c8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Mon Mar 05 00:30:33 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 05 07:57:51 2007 -0800"
      },
      "message": "[PATCH] Page migration: Fix vma flag checking\n\nCurrently we do not check for vma flags if sys_move_pages is called to move\nindividual pages.  If sys_migrate_pages is called to move pages then we\ncheck for vm_flags that indicate a non migratable vma but that still\nincludes VM_LOCKED and we can migrate mlocked pages.\n\nExtract the vma_migratable check from mm/mempolicy.c, fix it and put it\ninto migrate.h so that is can be used from both locations.\n\nProblem was spotted by Lee Schermerhorn\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8af5e2eb3cc4450ffba9496c875beac41bf4f4f8",
      "tree": "d15c56e8add1b53d5ed4d5dcb5d1f016d8f2b1c9",
      "parents": [
        "b446b60e4eb5e5457120c4728ada871b1209c1d0"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Feb 20 13:57:49 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 20 17:10:13 2007 -0800"
      },
      "message": "[PATCH] fix mempolicy\u0027s check on a system with memory-less-node\n\nbind_zonelist() can create zero-length zonelist if there is a\nmemory-less-node.  This patch checks the length of zonelist.  If length is\n0, returns -EINVAL.\n\ntested on ia64/NUMA with memory-less-node.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6267276f3fdda9ad0d5ca451bdcbdf42b802d64b",
      "tree": "fcc92bd645401a2c0f9e6a35b8e215868969db4d",
      "parents": [
        "65e458d43dff872ee560e721fb0fdb367bb5adb0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Feb 10 01:43:07 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:18 2007 -0800"
      },
      "message": "[PATCH] optional ZONE_DMA: deal with cases of ZONE_DMA meaning the first zone\n\nThis patchset follows up on the earlier work in Andrew\u0027s tree to reduce the\nnumber of zones.  The patches allow to go to a minimum of 2 zones.  This one\nallows also to make ZONE_DMA optional and therefore the number of zones can be\nreduced to one.\n\nZONE_DMA is usually used for ISA DMA devices.  There are a number of reasons\nwhy we would not want to have ZONE_DMA\n\n1. Some arches do not need ZONE_DMA at all.\n\n2. With the advent of IOMMUs DMA zones are no longer needed.\n   The necessity of DMA zones may drastically be reduced\n   in the future. This patchset allows a compilation of\n   a kernel without that overhead.\n\n3. Devices that require ISA DMA get rare these days. All\n   my systems do not have any need for ISA DMA.\n\n4. The presence of an additional zone unecessarily complicates\n   VM operations because it must be scanned and balancing\n   logic must operate on its.\n\n5. With only ZONE_NORMAL one can reach the situation where\n   we have only one zone. This will allow the unrolling of many\n   loops in the VM and allows the optimization of varous\n   code paths in the VM.\n\n6. Having only a single zone in a NUMA system results in a\n   1-1 correspondence between nodes and zones. Various additional\n   optimizations to critical VM paths become possible.\n\nMany systems today can operate just fine with a single zone.  If you look at\nwhat is in ZONE_DMA then one usually sees that nothing uses it.  The DMA slabs\nare empty (Some arches use ZONE_DMA instead of ZONE_NORMAL, then ZONE_NORMAL\nwill be empty instead).\n\nOn all of my systems (i386, x86_64, ia64) ZONE_DMA is completely empty.  Why\nconstantly look at an empty zone in /proc/zoneinfo and empty slab in\n/proc/slabinfo?  Non i386 also frequently have no need for ZONE_DMA and zones\nstay empty.\n\nThe patchset was tested on i386 (UP / SMP), x86_64 (UP, NUMA) and ia64 (NUMA).\n\nThe RFC posted earlier (see\nhttp://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d115231723513008\u0026w\u003d2) had lots\nof #ifdefs in them.  An effort has been made to minize the number of #ifdefs\nand make this as compact as possible.  The job was made much easier by the\nongoing efforts of others to extract common arch specific functionality.\n\nI have been running this for awhile now on my desktop and finally Linux is\nusing all my available RAM instead of leaving the 16MB in ZONE_DMA untouched:\n\nchristoph@pentium940:~$ cat /proc/zoneinfo\nNode 0, zone   Normal\n  pages free     4435\n        min      1448\n        low      1810\n        high     2172\n        active   241786\n        inactive 210170\n        scanned  0 (a: 0 i: 0)\n        spanned  524224\n        present  524224\n    nr_anon_pages 61680\n    nr_mapped    14271\n    nr_file_pages 390264\n    nr_slab_reclaimable 27564\n    nr_slab_unreclaimable 1793\n    nr_page_table_pages 449\n    nr_dirty     39\n    nr_writeback 0\n    nr_unstable  0\n    nr_bounce    0\n    cpu: 0 pcp: 0\n              count: 156\n              high:  186\n              batch: 31\n    cpu: 0 pcp: 1\n              count: 9\n              high:  62\n              batch: 15\n  vm stats threshold: 20\n    cpu: 1 pcp: 0\n              count: 177\n              high:  186\n              batch: 31\n    cpu: 1 pcp: 1\n              count: 12\n              high:  62\n              batch: 15\n  vm stats threshold: 20\n  all_unreclaimable: 0\n  prev_priority:     12\n  temp_priority:     12\n  start_pfn:         0\n\nThis patch:\n\nIn two places in the VM we use ZONE_DMA to refer to the first zone.  If\nZONE_DMA is optional then other zones may be first.  So simply replace\nZONE_DMA with zone 0.\n\nThis also fixes ZONETABLE_PGSHIFT.  If we have only a single zone then\nZONES_PGSHIFT may become 0 because there is no need anymore to encode the zone\nnumber related to a pgdat.  However, we still need a zonetable to index all\nthe zones for each node if this is a NUMA system.  Therefore define\nZONETABLE_SHIFT unconditionally as the offset of the ZONE field in page flags.\n\n[apw@shadowen.org: fix mismerge]\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Matthew Wilcox \u003cwilly@debian.org\u003e\nCc: James Bottomley \u003cJames.Bottomley@steeleye.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "30150f8d7b76f25b1127a5079528b7a17307f995",
      "tree": "3ea69d5dbd7b131fc32bbf416ba9970079bd25c6",
      "parents": [
        "79603a35009ff39562cd5634fa1cf513eb080f27"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jan 22 20:40:45 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jan 23 07:52:06 2007 -0800"
      },
      "message": "[PATCH] mbind: restrict nodes to the currently allowed cpuset\n\nCurrently one can specify an arbitrary node mask to mbind that includes\nnodes not allowed.  If that is done with an interleave policy then we will\ngo around all the nodes.  Those outside of the currently allowed cpuset\nwill be redirected to the border nodes.  Interleave will then create\nimbalances at the borders of the cpuset.\n\nThis patch restricts the nodes to the currently allowed cpuset.\n\nThe RFC for this patch was discussed at\nhttp://marc.theaimsgroup.com/?t\u003d116793842100004\u0026r\u003d1\u0026w\u003d2\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e9536ae7205d255bc94616b72910fc6e16c861fe",
      "tree": "4c91e2fbe096958ab8f7476306c4a61c30cbe502",
      "parents": [
        "1b04fe9a8ef10774174897b15d753b9de85fe9e9"
      ],
      "author": {
        "name": "Josef Sipek",
        "email": "jsipek@fsl.cs.sunysb.edu",
        "time": "Fri Dec 08 02:37:21 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:47 2006 -0800"
      },
      "message": "[PATCH] struct path: convert mm\n\nSigned-off-by: Josef Sipek \u003cjsipek@fsl.cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "15ad7cdcfd76450d4beebc789ec646664238184d",
      "tree": "279d05a76ae0906c23ee2de8c5684d95d9886ad3",
      "parents": [
        "4a08a9f68168e547c2baf100020e9b96cae5fbd1"
      ],
      "author": {
        "name": "Helge Deller",
        "email": "deller@gmx.de",
        "time": "Wed Dec 06 20:40:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:46 2006 -0800"
      },
      "message": "[PATCH] struct seq_operations and struct file_operations constification\n\n - move some file_operations structs into the .rodata section\n\n - move static strings from policy_types[] array into the .rodata section\n\n - fix generic seq_operations usages, so that those structs may be defined\n   as \"const\" as well\n\n[akpm@osdl.org: couple of fixes]\nSigned-off-by: Helge Deller \u003cdeller@gmx.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e94b1766097d53e6f3ccfb36c8baa562ffeda3fc",
      "tree": "93fa0a8ab84976d4e89c50768ca8b8878d642a0d",
      "parents": [
        "54e6ecb23951b195d02433a741c7f7cb0b796c78"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:24 2006 -0800"
      },
      "message": "[PATCH] slab: remove SLAB_KERNEL\n\nSLAB_KERNEL is an alias of GFP_KERNEL.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "25ba77c141dbcd2602dd0171824d0d72aa023a01",
      "tree": "153eb9bc567f63d739dcaf8a3caf11c8f48b8379",
      "parents": [
        "bc4ba393c007248f76c05945abb7b7b892cdd1cc"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Wed Dec 06 20:33:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:23 2006 -0800"
      },
      "message": "[PATCH] numa node ids are int, page_to_nid and zone_to_nid should return int\n\nNUMA node ids are passed as either int or unsigned int almost exclusivly\npage_to_nid and zone_to_nid both return unsigned long.  This is a throw\nback to when page_to_nid was a #define and was thus exposing the real type\nof the page flags field.\n\nIn addition to fixing up the definitions of page_to_nid and zone_to_nid I\naudited the users of these functions identifying the following incorrect\nuses:\n\n1) mm/page_alloc.c show_node() -- printk dumping the node id,\n2) include/asm-ia64/pgalloc.h pgtable_quicklist_free() -- comparison\n   against numa_node_id() which returns an int from cpu_to_node(), and\n3) mm/mpolicy.c check_pte_range -- used as an index in node_isset which\n   uses bit_set which in generic code takes an int.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9276b1bc96a132f4068fdee00983c532f43d3a26",
      "tree": "04d64444cf6558632cfc7514b5437578b5e616af",
      "parents": [
        "89689ae7f95995723fbcd5c116c47933a3bb8b13"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Wed Dec 06 20:31:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:20 2006 -0800"
      },
      "message": "[PATCH] memory page_alloc zonelist caching speedup\n\nOptimize the critical zonelist scanning for free pages in the kernel memory\nallocator by caching the zones that were found to be full recently, and\nskipping them.\n\nRemembers the zones in a zonelist that were short of free memory in the\nlast second.  And it stashes a zone-to-node table in the zonelist struct,\nto optimize that conversion (minimize its cache footprint.)\n\nRecent changes:\n\n    This differs in a significant way from a similar patch that I\n    posted a week ago.  Now, instead of having a nodemask_t of\n    recently full nodes, I have a bitmask of recently full zones.\n    This solves a problem that last weeks patch had, which on\n    systems with multiple zones per node (such as DMA zone) would\n    take seeing any of these zones full as meaning that all zones\n    on that node were full.\n\n    Also I changed names - from \"zonelist faster\" to \"zonelist cache\",\n    as that seemed to better convey what we\u0027re doing here - caching\n    some of the key zonelist state (for faster access.)\n\n    See below for some performance benchmark results.  After all that\n    discussion with David on why I didn\u0027t need them, I went and got\n    some ;).  I wanted to verify that I had not hurt the normal case\n    of memory allocation noticeably.  At least for my one little\n    microbenchmark, I found (1) the normal case wasn\u0027t affected, and\n    (2) workloads that forced scanning across multiple nodes for\n    memory improved up to 10% fewer System CPU cycles and lower\n    elapsed clock time (\u0027sys\u0027 and \u0027real\u0027).  Good.  See details, below.\n\n    I didn\u0027t have the logic in get_page_from_freelist() for various\n    full nodes and zone reclaim failures correct.  That should be\n    fixed up now - notice the new goto labels zonelist_scan,\n    this_zone_full, and try_next_zone, in get_page_from_freelist().\n\nThere are two reasons I persued this alternative, over some earlier\nproposals that would have focused on optimizing the fake numa\nemulation case by caching the last useful zone:\n\n 1) Contrary to what I said before, we (SGI, on large ia64 sn2 systems)\n    have seen real customer loads where the cost to scan the zonelist\n    was a problem, due to many nodes being full of memory before\n    we got to a node we could use.  Or at least, I think we have.\n    This was related to me by another engineer, based on experiences\n    from some time past.  So this is not guaranteed.  Most likely, though.\n\n    The following approach should help such real numa systems just as\n    much as it helps fake numa systems, or any combination thereof.\n\n 2) The effort to distinguish fake from real numa, using node_distance,\n    so that we could cache a fake numa node and optimize choosing\n    it over equivalent distance fake nodes, while continuing to\n    properly scan all real nodes in distance order, was going to\n    require a nasty blob of zonelist and node distance munging.\n\n    The following approach has no new dependency on node distances or\n    zone sorting.\n\nSee comment in the patch below for a description of what it actually does.\n\nTechnical details of note (or controversy):\n\n - See the use of \"zlc_active\" and \"did_zlc_setup\" below, to delay\n   adding any work for this new mechanism until we\u0027ve looked at the\n   first zone in zonelist.  I figured the odds of the first zone\n   having the memory we needed were high enough that we should just\n   look there, first, then get fancy only if we need to keep looking.\n\n - Some odd hackery was needed to add items to struct zonelist, while\n   not tripping up the custom zonelists built by the mm/mempolicy.c\n   code for MPOL_BIND.  My usual wordy comments below explain this.\n   Search for \"MPOL_BIND\".\n\n - Some per-node data in the struct zonelist is now modified frequently,\n   with no locking.  Multiple CPU cores on a node could hit and mangle\n   this data.  The theory is that this is just performance hint data,\n   and the memory allocator will work just fine despite any such mangling.\n   The fields at risk are the struct \u0027zonelist_cache\u0027 fields \u0027fullzones\u0027\n   (a bitmask) and \u0027last_full_zap\u0027 (unsigned long jiffies).  It should\n   all be self correcting after at most a one second delay.\n\n - This still does a linear scan of the same lengths as before.  All\n   I\u0027ve optimized is making the scan faster, not algorithmically\n   shorter.  It is now able to scan a compact array of \u0027unsigned\n   short\u0027 in the case of many full nodes, so one cache line should\n   cover quite a few nodes, rather than each node hitting another\n   one or two new and distinct cache lines.\n\n - If both Andi and Nick don\u0027t find this too complicated, I will be\n   (pleasantly) flabbergasted.\n\n - I removed the comment claiming we only use one cachline\u0027s worth of\n   zonelist.  We seem, at least in the fake numa case, to have put the\n   lie to that claim.\n\n - I pay no attention to the various watermarks and such in this performance\n   hint.  A node could be marked full for one watermark, and then skipped\n   over when searching for a page using a different watermark.  I think\n   that\u0027s actually quite ok, as it will tend to slightly increase the\n   spreading of memory over other nodes, away from a memory stressed node.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nPerformance - some benchmark results and analysis:\n\nThis benchmark runs a memory hog program that uses multiple\nthreads to touch alot of memory as quickly as it can.\n\nMultiple runs were made, touching 12, 38, 64 or 90 GBytes out of\nthe total 96 GBytes on the system, and using 1, 19, 37, or 55\nthreads (on a 56 CPU system.)  System, user and real (elapsed)\ntimings were recorded for each run, shown in units of seconds,\nin the table below.\n\nTwo kernels were tested - 2.6.18-mm3 and the same kernel with\nthis zonelist caching patch added.  The table also shows the\npercentage improvement the zonelist caching sys time is over\n(lower than) the stock *-mm kernel.\n\n      number     2.6.18-mm3\t   zonelist-cache    delta (\u003c 0 good)\tpercent\n GBs    N  \t------------\t   --------------    ----------------\tsystime\n mem threads   sys user  real\t  sys  user  real     sys  user  real\t better\n  12\t 1     153   24   177\t  151\t 24   176      -2     0    -1\t   1%\n  12\t19\t99   22     8\t   99\t 22\t8\t0     0     0\t   0%\n  12\t37     111   25     6\t  112\t 25\t6\t1     0     0\t  -0%\n  12\t55     115   25     5\t  110\t 23\t5      -5    -2     0\t   4%\n  38\t 1     502   74   576\t  497\t 73   570      -5    -1    -6\t   0%\n  38\t19     426   78    48\t  373\t 76    39     -53    -2    -9\t  12%\n  38\t37     544   83    36\t  547\t 82    36\t3    -1     0\t  -0%\n  38\t55     501   77    23\t  511\t 80    24      10     3     1\t  -1%\n  64\t 1     917  125  1042\t  890\t124  1014     -27    -1   -28\t   2%\n  64\t19    1118  138   119\t  965\t141   103    -153     3   -16\t  13%\n  64\t37    1202  151    94\t 1136\t150    81     -66    -1   -13\t   5%\n  64\t55    1118  141    61\t 1072\t140    58     -46    -1    -3\t   4%\n  90\t 1    1342  177  1519\t 1275\t174  1450     -67    -3   -69\t   4%\n  90\t19    2392  199   192\t 2116\t189   176    -276   -10   -16\t  11%\n  90\t37    3313  238   175\t 2972\t225   145    -341   -13   -30\t  10%\n  90\t55    1948  210   104\t 1843\t213   100    -105     3    -4\t   5%\n\nNotes:\n 1) This test ran a memory hog program that started a specified number N of\n    threads, and had each thread allocate and touch 1/N\u0027th of\n    the total memory to be used in the test run in a single loop,\n    writing a constant word to memory, one store every 4096 bytes.\n    Watching this test during some earlier trial runs, I would see\n    each of these threads sit down on one CPU and stay there, for\n    the remainder of the pass, a different CPU for each thread.\n\n 2) The \u0027real\u0027 column is not comparable to the \u0027sys\u0027 or \u0027user\u0027 columns.\n    The \u0027real\u0027 column is seconds wall clock time elapsed, from beginning\n    to end of that test pass.  The \u0027sys\u0027 and \u0027user\u0027 columns are total\n    CPU seconds spent on that test pass.  For a 19 thread test run,\n    for example, the sum of \u0027sys\u0027 and \u0027user\u0027 could be up to 19 times the\n    number of \u0027real\u0027 elapsed wall clock seconds.\n\n 3) Tests were run on a fresh, single-user boot, to minimize the amount\n    of memory already in use at the start of the test, and to minimize\n    the amount of background activity that might interfere.\n\n 4) Tests were done on a 56 CPU, 28 Node system with 96 GBytes of RAM.\n\n 5) Notice that the \u0027real\u0027 time gets large for the single thread runs, even\n    though the measured \u0027sys\u0027 and \u0027user\u0027 times are modest.  I\u0027m not sure what\n    that means - probably something to do with it being slow for one thread to\n    be accessing memory along ways away.  Perhaps the fake numa system, running\n    ostensibly the same workload, would not show this substantial degradation\n    of \u0027real\u0027 time for one thread on many nodes -- lets hope not.\n\n 6) The high thread count passes (one thread per CPU - on 55 of 56 CPUs)\n    ran quite efficiently, as one might expect.  Each pair of threads needed\n    to allocate and touch the memory on the node the two threads shared, a\n    pleasantly parallizable workload.\n\n 7) The intermediate thread count passes, when asking for alot of memory forcing\n    them to go to a few neighboring nodes, improved the most with this zonelist\n    caching patch.\n\nConclusions:\n * This zonelist cache patch probably makes little difference one way or the\n   other for most workloads on real numa hardware, if those workloads avoid\n   heavy off node allocations.\n * For memory intensive workloads requiring substantial off-node allocations\n   on real numa hardware, this patch improves both kernel and elapsed timings\n   up to ten per-cent.\n * For fake numa systems, I\u0027m optimistic, but will have to leave that up to\n   Rohit Seth to actually test (once I get him a 2.6.18 backport.)\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Rohit Seth \u003crohitseth@google.com\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: David Rientjes \u003crientjes@cs.washington.edu\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "699397499742d1245ea5d677a08fa265df666d2d",
      "tree": "81e9971ff13fcadb6ea8ab12f55278c30bdff1a2",
      "parents": [
        "b16bc64d1aed40fb9cff9187061005b2a89b5d5d"
      ],
      "author": {
        "name": "Keith Owens",
        "email": "kaos@ocs.com.au",
        "time": "Wed Oct 11 01:21:28 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:19 2006 -0700"
      },
      "message": "[PATCH] Fix do_mbind warning with CONFIG_MIGRATION\u003dn\n\nWith CONFIG_MIGRATION\u003dn\n\nmm/mempolicy.c: In function \u0027do_mbind\u0027:\nmm/mempolicy.c:796: warning: passing argument 2 of \u0027migrate_pages\u0027 from incompatible pointer type\n\nSigned-off-by: Keith Owens \u003ckaos@ocs.com.au\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "52978be636374c4bfb61220b37fa12f55a071c46",
      "tree": "36444be7bdbc0cdd99d903c0ad87316c93427517",
      "parents": [
        "1a2f67b459bb7846d4a15924face63eb2683acc2"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Sep 30 23:27:21 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:19 2006 -0700"
      },
      "message": "[PATCH] kmemdup: some users\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "765c4507af71c39aba21006bbd3ec809fe9714ff",
      "tree": "8bf1f5f940af830e18321b4e8ceac55457e5b981",
      "parents": [
        "77f700dab4c05f8ee17584ec869672796d7bcb87"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Sep 27 01:50:08 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:12 2006 -0700"
      },
      "message": "[PATCH] GFP_THISNODE for the slab allocator\n\nThis patch insures that the slab node lists in the NUMA case only contain\nslabs that belong to that specific node.  All slab allocations use\nGFP_THISNODE when calling into the page allocator.  If an allocation fails\nthen we fall back in the slab allocator according to the zonelists appropriate\nfor a certain context.\n\nThis allows a replication of the behavior of alloc_pages and alloc_pages node\nin the slab layer.\n\nCurrently allocations requested from the page allocator may be redirected via\ncpusets to other nodes.  This results in remote pages on nodelists and that in\nturn results in interrupt latency issues during cache draining.  Plus the slab\nis handing out memory as local when it is really remote.\n\nFallback for slab memory allocations will occur within the slab allocator and\nnot in the page allocator.  This is necessary in order to be able to use the\nexisting pools of objects on the nodes that we fall back to before adding more\npages to a slab.\n\nThe fallback function insures that the nodes we fall back to obey cpuset\nrestrictions of the current context.  We do not allocate objects from outside\nof the current cpuset context like before.\n\nNote that the implementation of locality constraints within the slab allocator\nrequires importing logic from the page allocator.  This is a mischmash that is\nnot that great.  Other allocators (uncached allocator, vmalloc, huge pages)\nface similar problems and have similar minimal reimplementations of the basic\nfallback logic of the page allocator.  There is another way of implementing a\nslab by avoiding per node lists (see modular slab) but this wont work within\nthe existing slab.\n\nV1-\u003eV2:\n- Use NUMA_BUILD to avoid #ifdef CONFIG_NUMA\n- Exploit GFP_THISNODE being 0 in the NON_NUMA case to avoid another\n  #ifdef\n\n[akpm@osdl.org: build fix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "89fa30242facca249aead2aac03c4c69764f911c",
      "tree": "1ac46b4777b819f2a4793d8e37330576ae5089ec",
      "parents": [
        "4415cc8df630b05d3a54267d5f3e5c0b63a4ec05"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:52 2006 -0700"
      },
      "message": "[PATCH] NUMA: Add zone_to_nid function\n\nThere are many places where we need to determine the node of a zone.\nCurrently we use a difficult to read sequence of pointer dereferencing.\nPut that into an inline function and use throughout VM.  Maybe we can find\na way to optimize the lookup in the future.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9b819d204cf602eab1a53a9ec4b8d2ca51e02a1d",
      "tree": "9442bf01a00a93a8ae54462fb4878588e1b2a6bf",
      "parents": [
        "056c62418cc639bf2fe962c6a6ee56054b838bc7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:50 2006 -0700"
      },
      "message": "[PATCH] Add __GFP_THISNODE to avoid fallback to other nodes and ignore cpuset/memory policy restrictions\n\nAdd a new gfp flag __GFP_THISNODE to avoid fallback to other nodes.  This\nflag is essential if a kernel component requires memory to be located on a\ncertain node.  It will be needed for alloc_pages_node() to force allocation\non the indicated node and for alloc_pages() to force allocation on the\ncurrent node.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "19655d3487001d7df0e10e9cbfc27c758b77c2b5",
      "tree": "8d0aaa216bd32bd64e3a9652fd34d40bdb9d1075",
      "parents": [
        "2f6726e54a9410e2e4cee864947c05e954051916"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:19 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:47 2006 -0700"
      },
      "message": "[PATCH] linearly index zone-\u003enode_zonelists[]\n\nI wonder why we need this bitmask indexing into zone-\u003enode_zonelists[]?\n\nWe always start with the highest zone and then include all lower zones\nif we build zonelists.\n\nAre there really cases where we need allocation from ZONE_DMA or\nZONE_HIGHMEM but not ZONE_NORMAL? It seems that the current implementation\nof highest_zone() makes that already impossible.\n\nIf we go linear on the index then gfp_zone() \u003d\u003d highest_zone() and a lot\nof definitions fall by the wayside.\n\nWe can now revert back to the use of gfp_zone() in mempolicy.c ;-)\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2f6726e54a9410e2e4cee864947c05e954051916",
      "tree": "91b1173dead0cfc4a25caacb34b6c80f526bbc59",
      "parents": [
        "4e4785bcf0c8503224fa6c17d8e0228de781bff6"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:18 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:47 2006 -0700"
      },
      "message": "[PATCH] Apply type enum zone_type\n\nAfter we have done this we can now do some typing cleanup.\n\nThe memory policy layer keeps a policy_zone that specifies\nthe zone that gets memory policies applied. This variable\ncan now be of type enum zone_type.\n\nThe check_highest_zone function and the build_zonelists funnctionm must\nthen also take a enum zone_type parameter.\n\nPlus there are a number of loops over zones that also should use\nzone_type.\n\nWe run into some troubles at some points with functions that need a\nzone_type variable to become -1. Fix that up.\n\n[pj@sgi.com: fix set_mempolicy() crash]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4e4785bcf0c8503224fa6c17d8e0228de781bff6",
      "tree": "002c0a051f7f4de4548ca0a8394b664f64c63627",
      "parents": [
        "b9b15780f808efa2c897f337644ba7a2bec03ecc"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:17 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:47 2006 -0700"
      },
      "message": "[PATCH] mempolicies: fix policy_zone check\n\nThere is a check in zonelist_policy that compares pieces of the bitmap\nobtained from a gfp mask via GFP_ZONETYPES with a zone number in function\nzonelist_policy().\n\nThe bitmap is an ORed mask of __GFP_DMA, __GFP_DMA32 and __GFP_HIGHMEM.\nThe policy_zone is a zone number with the possible values of ZONE_DMA,\nZONE_DMA32, ZONE_HIGHMEM and ZONE_NORMAL. These are two different domains\nof values.\n\nFor some reason seemed to work before the zone reduction patchset (It\ndefinitely works on SGI boxes since we just have one zone and the check\ncannot fail).\n\nWith the zone reduction patchset this check definitely fails on systems\nwith two zones if the system actually has memory in both zones.\n\nThis is because ZONE_NORMAL is selected using no __GFP flag at\nall and thus gfp_zone(gfpmask) \u003d\u003d 0. ZONE_DMA is selected when __GFP_DMA\nis set. __GFP_DMA is 0x01.  So gfp_zone(gfpmask) \u003d\u003d 1.\n\npolicy_zone is set to ZONE_NORMAL (\u003d\u003d1) if ZONE_NORMAL and ZONE_DMA are\npopulated.\n\nFor ZONE_NORMAL gfp_zone(\u003cno _GFP_DMA\u003e) yields 0 which is \u003c\npolicy_zone(ZONE_NORMAL) and so policy is not applied to regular memory\nallocations!\n\nInstead gfp_zone(__GFP_DMA) \u003d\u003d 1 which results in policy being applied\nto DMA allocations!\n\nWhat we realy want in that place is to establish the highest allowable\nzone for a given gfp_mask. If the highest zone is higher or equal to the\npolicy_zone then memory policies need to be applied. We have such\na highest_zone() function in page_alloc.c.\n\nSo move the highest_zone() function from mm/page_alloc.c into\ninclude/linux/gfp.h.  On the way we simplify the function and use the new\nzone_type that was also introduced with the zone reduction patchset plus we\nalso specify the right type for the gfp flags parameter.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3b98b087fc2daab67518d2baa8aef19a6ad82723",
      "tree": "a7defc8fa53b2023affc072cd20c4f4734e4395d",
      "parents": [
        "1678df37be8abbb381becdc40242ed915e775550"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Thu Aug 31 21:27:53 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 01 11:39:10 2006 -0700"
      },
      "message": "[PATCH] fix NUMA interleaving for huge pages\n\nSince vma-\u003evm_pgoff is in units of smallpages, VMAs for huge pages have the\nlower HPAGE_SHIFT - PAGE_SHIFT bits always cleared, which results in badd\noffsets to the interleave functions.  Take this difference from small pages\ninto account when calculating the offset.  This does add a 0-bit shift into\nthe small-page path (via alloc_page_vma()), but I think that is negligible.\n Also add a BUG_ON to prevent the offset from growing due to a negative\nright-shift, which probably shouldn\u0027t be allowed anyways.\n\nTested on an 8-memory node ppc64 NUMA box and got the interleaving I\nexpected.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nAcked-by: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ca889e6c45e0b112cb2ca9d35afc66297519b5d5",
      "tree": "0a5efdec2a61540204d34bcbf56dc691d8f9c391",
      "parents": [
        "bab1846a0582f627f5ec22aa2dc5f4f3e82e8176"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:44 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:36 2006 -0700"
      },
      "message": "[PATCH] Use Zoned VM Counters for NUMA statistics\n\nThe numa statistics are really event counters.  But they are per node and\nso we have had special treatment for these counters through additional\nfields on the pcp structure.  We can now use the per zone nature of the\nzoned VM counters to realize these.\n\nThis will shrink the size of the pcp structure on NUMA systems.  We will\nhave some room to add additional per zone counters that will all still fit\nin the same cacheline.\n\n Bits\tPrior pcp size\t  \tSize after patch\tWe can add\n ------------------------------------------------------------------\n 64\t128 bytes (16 words)\t80 bytes (10 words)\t48\n 32\t 76 bytes (19 words)\t56 bytes (14 words)\t8 (64 byte cacheline)\n\t\t\t\t\t\t\t72 (128 byte)\n\nRemove the special statistics for numa and replace them with zoned vm\ncounters.  This has the side effect that global sums of these events now\nshow up in /proc/vmstat.\n\nAlso take the opportunity to move the zone_statistics() function from\npage_alloc.c into vmstat.c.\n\nDiscussions:\nV2 http://marc.theaimsgroup.com/?t\u003d115048227000002\u0026r\u003d1\u0026w\u003d2\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "99f895518368252ba862cc15ce4eb98ebbe1bec6",
      "tree": "a9dcc01963221d1fd6a7e357b95d361ebfe91c6d",
      "parents": [
        "8578cea7509cbdec25b31d08b48a92fcc3b1a9e3"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Jun 26 00:25:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:25 2006 -0700"
      },
      "message": "[PATCH] proc: don\u0027t lock task_structs indefinitely\n\nEvery inode in /proc holds a reference to a struct task_struct.  If a\ndirectory or file is opened and remains open after the the task exits this\npinning continues.  With 8K stacks on a 32bit machine the amount pinned per\nfile descriptor is about 10K.\n\nNormally I would figure a reasonable per user process limit is about 100\nprocesses.  With 80 processes, with a 1000 file descriptors each I can trigger\nthe 00M killer on a 32bit kernel, because I have pinned about 800MB of useless\ndata.\n\nThis patch replaces the struct task_struct pointer with a pointer to a struct\ntask_ref which has a struct task_struct pointer.  The so the pinning of dead\ntasks does not happen.\n\nThe code now has to contend with the fact that the task may now exit at any\ntime.  Which is a little but not muh more complicated.\n\nWith this change it takes about 1000 processes each opening up 1000 file\ndescriptors before I can trigger the OOM killer.  Much better.\n\n[mlp@google.com: task_mmu small fixes]\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Albert Cahalan \u003cacahalan@gmail.com\u003e\nSigned-off-by: Prasanna Meda \u003cmlp@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7b2259b3e53f128c10a9fded0965e69d4a949847",
      "tree": "c1827144c22dd49775190e05de791531e9fd21fd",
      "parents": [
        "68402ddc677005ed1b1359bbc1f279548cfc0928"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun Jun 25 05:46:48 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:00:55 2006 -0700"
      },
      "message": "[PATCH] page migration: Support a vma migration function\n\nHooks for calling vma specific migration functions\n\nWith this patch a vma may define a vma-\u003evm_ops-\u003emigrate function.  That\nfunction may perform page migration on its own (some vmas may not contain page\nstructs and therefore cannot be handled by regular page migration.  Pages in a\nvma may require special preparatory treatment before migration is possible\netc) .  Only mmap_sem is held when the migration function is called.  The\nmigrate() function gets passed two sets of nodemasks describing the source and\nthe target of the migration.  The flags parameter either contains\n\nMPOL_MF_MOVE\twhich means that only pages used exclusively by\n\t\tthe specified mm should be moved\n\nor\n\nMPOL_MF_MOVE_ALL which means that pages shared with other processes\n\t\tshould also be moved.\n\nThe migration function returns 0 on success or an error condition.  An error\ncondition will prevent regular page migration from occurring.\n\nOn its own this patch cannot be included since there are no users for this\nfunctionality.  But it seems that the uncached allocator will need this\nfunctionality at some point.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.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": "86c3a7645c05a7d06b72653aa4b2bea4e7229d1b",
      "tree": "ac68280e9c44dbc6ca4c88dc1e9c72a8f56be95e",
      "parents": [
        "35601547baf92d984b6e59cf3583649da04baea5"
      ],
      "author": {
        "name": "David Quigley",
        "email": "dpquigl@tycho.nsa.gov",
        "time": "Fri Jun 23 02:04:02 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:54 2006 -0700"
      },
      "message": "[PATCH] SELinux: add security_task_movememory calls to mm code\n\nThis patch inserts security_task_movememory hook calls into memory management\ncode to enable security modules to mediate this operation between tasks.\n\nSince the last posting, the hook has been renamed following feedback from\nChristoph Lameter.\n\nSigned-off-by: David Quigley \u003cdpquigl@tycho.nsa.gov\u003e\nAcked-by:  Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "742755a1d8ce2b548428f7aacf1758b4bba50080",
      "tree": "53426657e14dc19a694d418274c9a6f4dcb8a997",
      "parents": [
        "95a402c3847cc16f4ba03013cd01404fa0f14c2e"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 23 02:03:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:53 2006 -0700"
      },
      "message": "[PATCH] page migration: sys_move_pages(): support moving of individual pages\n\nmove_pages() is used to move individual pages of a process. The function can\nbe used to determine the location of pages and to move them onto the desired\nnode. move_pages() returns status information for each page.\n\nlong move_pages(pid, number_of_pages_to_move,\n\t\taddresses_of_pages[],\n\t\tnodes[] or NULL,\n\t\tstatus[],\n\t\tflags);\n\nThe addresses of pages is an array of void * pointing to the\npages to be moved.\n\nThe nodes array contains the node numbers that the pages should be moved\nto. If a NULL is passed instead of an array then no pages are moved but\nthe status array is updated. The status request may be used to determine\nthe page state before issuing another move_pages() to move pages.\n\nThe status array will contain the state of all individual page migration\nattempts when the function terminates. The status array is only valid if\nmove_pages() completed successfullly.\n\nPossible page states in status[]:\n\n0..MAX_NUMNODES\tThe page is now on the indicated node.\n\n-ENOENT\t\tPage is not present\n\n-EACCES\t\tPage is mapped by multiple processes and can only\n\t\tbe moved if MPOL_MF_MOVE_ALL is specified.\n\n-EPERM\t\tThe page has been mlocked by a process/driver and\n\t\tcannot be moved.\n\n-EBUSY\t\tPage is busy and cannot be moved. Try again later.\n\n-EFAULT\t\tInvalid address (no VMA or zero page).\n\n-ENOMEM\t\tUnable to allocate memory on target node.\n\n-EIO\t\tUnable to write back page. The page must be written\n\t\tback in order to move it since the page is dirty and the\n\t\tfilesystem does not provide a migration function that\n\t\twould allow the moving of dirty pages.\n\n-EINVAL\t\tA dirty page cannot be moved. The filesystem does not provide\n\t\ta migration function and has no ability to write back pages.\n\nThe flags parameter indicates what types of pages to move:\n\nMPOL_MF_MOVE\tMove pages that are only mapped by the process.\n\nMPOL_MF_MOVE_ALL Also move pages that are mapped by multiple processes.\n\t\tRequires sufficient capabilities.\n\nPossible return codes from move_pages()\n\n-ENOENT\t\tNo pages found that would require moving. All pages\n\t\tare either already on the target node, not present, had an\n\t\tinvalid address or could not be moved because they were\n\t\tmapped by multiple processes.\n\n-EINVAL\t\tFlags other than MPOL_MF_MOVE(_ALL) specified or an attempt\n\t\tto migrate pages in a kernel thread.\n\n-EPERM\t\tMPOL_MF_MOVE_ALL specified without sufficient priviledges.\n\t\tor an attempt to move a process belonging to another user.\n\n-EACCES\t\tOne of the target nodes is not allowed by the current cpuset.\n\n-ENODEV\t\tOne of the target nodes is not online.\n\n-ESRCH\t\tProcess does not exist.\n\n-E2BIG\t\tToo many pages to move.\n\n-ENOMEM\t\tNot enough memory to allocate control array.\n\n-EFAULT\t\tParameters could not be accessed.\n\nA test program for move_pages() may be found with the patches\non ftp.kernel.org:/pub/linux/kernel/people/christoph/pmig/patches-2.6.17-rc4-mm3\n\nFrom: Christoph Lameter \u003cclameter@sgi.com\u003e\n\n  Detailed results for sys_move_pages()\n\n  Pass a pointer to an integer to get_new_page() that may be used to\n  indicate where the completion status of a migration operation should be\n  placed.  This allows sys_move_pags() to report back exactly what happened to\n  each page.\n\n  Wish there would be a better way to do this. Looks a bit hacky.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Jes Sorensen \u003cjes@trained-monkey.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "95a402c3847cc16f4ba03013cd01404fa0f14c2e",
      "tree": "0fd9b3379f70cc99b2325bccaa150089abf6c8b3",
      "parents": [
        "aaa994b300a172afafab47938804836b923e5ef7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 23 02:03:53 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:53 2006 -0700"
      },
      "message": "[PATCH] page migration: use allocator function for migrate_pages()\n\nInstead of passing a list of new pages, pass a function to allocate a new\npage.  This allows the correct placement of MPOL_INTERLEAVE pages during page\nmigration.  It also further simplifies the callers of migrate pages.\nmigrate_pages() becomes similar to migrate_pages_to() so drop\nmigrate_pages_to().  The batching of new page allocations becomes unnecessary.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Jes Sorensen \u003cjes@trained-monkey.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.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": "aaa994b300a172afafab47938804836b923e5ef7",
      "tree": "ccc1acf72e9d1dfbd25fa5f8e067a195f93b0319",
      "parents": [
        "e24f0b8f76cc3dd96f36f5b6a9f020f6c3fce198"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 23 02:03:52 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:53 2006 -0700"
      },
      "message": "[PATCH] page migration: handle freeing of pages in migrate_pages()\n\nDo not leave pages on the lists passed to migrate_pages().  Seems that we will\nnot need any postprocessing of pages.  This will simplify the handling of\npages by the callers of migrate_pages().\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Jes Sorensen \u003cjes@trained-monkey.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.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": "6d472be37896b1c41b50f3da124f8b7718ba7797",
      "tree": "c01adec9db3c85b48e337189b4fdc1f7e6f23733",
      "parents": [
        "4409ebe9afabe7db77eaaae9eb3eb05b8315ce4a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Apr 20 02:43:12 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Apr 20 07:54:03 2006 -0700"
      },
      "message": "[PATCH] Remove cond_resched in gather_stats()\n\ngather_stats() is called with a spinlock held from check_pte_range.  We\ncannot reschedule with a lock held.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7f927fcc2fd1575d01efb4b76665975007945690",
      "tree": "fbb84689600ea512d7b52f9fc46db2d7d8d7c1fd",
      "parents": [
        "ded23ac62776b4360d88e9b0330792d2c57fdfdf"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 28 01:56:53 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:08 2006 -0800"
      },
      "message": "[PATCH] Typo fixes\n\nFix a lot of typos.  Eyeballed by jmc@ in OpenBSD.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c61afb181c649754ea221f104e268cbacfc993e3",
      "tree": "870917b3f9175cf1663a2620d989856913cfb5f8",
      "parents": [
        "101a50019ae5e370d73984ee05d56dd3b08f330a"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Fri Mar 24 03:16:08 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:23 2006 -0800"
      },
      "message": "[PATCH] cpuset memory spread slab cache optimizations\n\nThe hooks in the slab cache allocator code path for support of NUMA\nmempolicies and cpuset memory spreading are in an important code path.  Many\nsystems will use neither feature.\n\nThis patch optimizes those hooks down to a single check of some bits in the\ncurrent tasks task_struct flags.  For non NUMA systems, this hook and related\ncode is already ifdef\u0027d out.\n\nThe optimization is done by using another task flag, set if the task is using\na non-default NUMA mempolicy.  Taking this flag bit along with the\nPF_SPREAD_PAGE and PF_SPREAD_SLAB flag bits added earlier in this \u0027cpuset\nmemory spreading\u0027 patch set, one can check for the combination of any of these\nspecial case memory placement mechanisms with a single test of the current\ntasks task_struct flags.\n\nThis patch also tightens up the code, to save a few bytes of kernel text\nspace, and moves some of it out of line.  Due to the nested inlines called\nfrom multiple places, we were ending up with three copies of this code, which\nonce we get off the main code path (for local node allocation) seems a bit\nwasteful of instruction memory.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b20a35035f983f4ac7e29c4a68f30e43510007e0",
      "tree": "fdf090ddddbcc275349f62f71adc98649e2c683b",
      "parents": [
        "442295c94bf650221af3ef20fc68fa3e93876818"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Mar 22 00:09:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:06 2006 -0800"
      },
      "message": "[PATCH] page migration reorg\n\nCentralize the page migration functions in anticipation of additional\ntinkering.  Creates a new file mm/migrate.c\n\n1. Extract buffer_migrate_page() from fs/buffer.c\n\n2. Extract central migration code from vmscan.c\n\n3. Extract some components from mempolicy.c\n\n4. Export pageout() and remove_from_swap() from vmscan.c\n\n5. Make it possible to configure NUMA systems without page migration\n   and non-NUMA systems with page migration.\n\nI had to so some #ifdeffing in mempolicy.c that may need a cleanup.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fcc234f888ba2365c44ba0507eb8a18eebf1f594",
      "tree": "afc0d6f5a6191a94d8285f0b21ecec5a9b911df9",
      "parents": [
        "b5d8ca7c50826c0b456b4a646875dc573adfde2b"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Wed Mar 22 00:08:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:53:58 2006 -0800"
      },
      "message": "[PATCH] mm: kill kmem_cache_t usage\n\nWe have struct kmem_cache now so use it instead of the old typedef.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "90036ee5938d89638e80f4d0d0700d0f2dbd4a6a",
      "tree": "de0f9275dcf8a051baf70df8574ce34b8b1f158d",
      "parents": [
        "e0e8eb54d8ae0c4cfd1d297f6351b08a7f635c5f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Mar 16 23:03:59 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 17 07:51:25 2006 -0800"
      },
      "message": "[PATCH] page migration: Fail with error if swap not setup\n\nCurrently the migration of anonymous pages will silently fail if no swap is\nsetup.  This patch makes page migration functions check for available swap\nand fail with -ENODEV if no swap space is available.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "74c002410548c7cb1744b45d17a5fa21da515b63",
      "tree": "d83774ce92907ecaf450998ddaf865836fde00ea",
      "parents": [
        "b4fb376628e63bfc8071fc915b921da3db4a3385"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Mar 14 19:50:21 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 14 21:43:02 2006 -0800"
      },
      "message": "[PATCH] Consistent capabilites associated with MPOL_MOVE_ALL\n\nIt seems that setting scheduling policy and priorities is also the kind of\nthing that might be performed in apps that also use the NUMA API, so it\nwould seem consistent to use CAP_SYS_NICE for NUMA also.\n\nSo use CAP_SYS_NICE for controlling migration permissions.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7f709ed0e3ccd3e88e0632b69f00174e83f8d98b",
      "tree": "2fc797f06b4ac9177878468a9e59992723ecda5c",
      "parents": [
        "d5f735e52fb41e032b0db08aa20c02dbb9cd0db3"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Tue Mar 07 21:55:22 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 08 14:14:00 2006 -0800"
      },
      "message": "[PATCH] numa_maps-update fix\n\nFix the mm/mempolicy.c build for !CONFIG_HUGETLB_PAGE.\n\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: Martin Bligh \u003cmbligh@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "397874dfe9862b494e1fdcd2baef4ac432d224c8",
      "tree": "a6eff78eb0f3ba641e3c57f24fb8071cb295212c",
      "parents": [
        "2fbf182ed00a71c35e53329c2010df2baf8a89c6"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Mon Mar 06 15:42:53 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 06 18:40:45 2006 -0800"
      },
      "message": "[PATCH] numa_maps update\n\nChange the format of numa_maps to be more compact and contain additional\ninformation that is useful for managing and troubleshooting memory on a\nNUMA system.  Numa_maps can now also support huge pages.\n\nFixes:\n\n1. More compact format. Only display fields if they contain additional\n\tinformation.\n\n2. Always display information for all vmas. The old numa_maps did not display\n\tvma with no mapped entries. This was a bit confusing because page\n\tmigration removes ptes for file backed vmas. After page migration\n\ta part of the vmas vanished.\n\n3. Rename maxref to maxmap. This is the maximum mapcount of all the pages\n\tin a vma and may be used as an indicator as to how many processes\n\tmay be using a certain vma.\n\n4. Include the ability to scan over huge page vmas.\n\nNew items shown:\n\ndirty\n\tNumber of pages in a vma that have either the dirty bit set in the\n\tpage_struct or in the pte.\n\nfile\u003d\u003cfilename\u003e\n\tThe file backing the pages if any\n\nstack\n\tStack area\n\nheap\n\tHeap area\n\nhuge\n\tHuge page area. The number of pages shows is the number of huge\n\tpages not the regular sized pages.\n\nswapcache\n\tNumber of pages with swap references. Must be \u003e0 in order to\n\tbe shown.\n\nactive\n\tNumber of active pages. Only displayed if different from the number\n\tof pages mapped.\n\nwriteback\n\tNumber of pages under writeback. Only displayed if \u003e0.\n\nSample ouput of a process using huge pages:\n\n00000000 default\n2000000000000000 default file\u003d/lib/ld-2.3.90.so mapped\u003d13 mapmax\u003d30 N0\u003d13\n2000000000044000 default file\u003d/lib/ld-2.3.90.so anon\u003d2 dirty\u003d2 swapcache\u003d2 N2\u003d2\n2000000000064000 default file\u003d/lib/librt-2.3.90.so mapped\u003d2 active\u003d1 N1\u003d1 N3\u003d1\n2000000000074000 default file\u003d/lib/librt-2.3.90.so\n2000000000080000 default file\u003d/lib/librt-2.3.90.so anon\u003d1 swapcache\u003d1 N2\u003d1\n2000000000084000 default\n2000000000088000 default file\u003d/lib/libc-2.3.90.so mapped\u003d52 mapmax\u003d32 active\u003d48 N0\u003d52\n20000000002bc000 default file\u003d/lib/libc-2.3.90.so\n20000000002c8000 default file\u003d/lib/libc-2.3.90.so anon\u003d3 dirty\u003d2 swapcache\u003d3 active\u003d2 N1\u003d1 N2\u003d2\n20000000002d4000 default anon\u003d1 swapcache\u003d1 N1\u003d1\n20000000002d8000 default file\u003d/lib/libpthread-2.3.90.so mapped\u003d8 mapmax\u003d3 active\u003d7 N2\u003d2 N3\u003d6\n20000000002fc000 default file\u003d/lib/libpthread-2.3.90.so\n2000000000308000 default file\u003d/lib/libpthread-2.3.90.so anon\u003d1 dirty\u003d1 swapcache\u003d1 N1\u003d1\n200000000030c000 default anon\u003d1 dirty\u003d1 swapcache\u003d1 N1\u003d1\n2000000000320000 default anon\u003d1 dirty\u003d1 N1\u003d1\n200000000071c000 default\n2000000000720000 default anon\u003d2 dirty\u003d2 swapcache\u003d1 N1\u003d1 N2\u003d1\n2000000000f1c000 default\n2000000000f20000 default anon\u003d2 dirty\u003d2 swapcache\u003d1 active\u003d1 N2\u003d1 N3\u003d1\n200000000171c000 default\n2000000001720000 default anon\u003d1 dirty\u003d1 swapcache\u003d1 N1\u003d1\n2000000001b20000 default\n2000000001b38000 default file\u003d/lib/libgcc_s.so.1 mapped\u003d2 N1\u003d2\n2000000001b48000 default file\u003d/lib/libgcc_s.so.1\n2000000001b54000 default file\u003d/lib/libgcc_s.so.1 anon\u003d1 dirty\u003d1 active\u003d0 N1\u003d1\n2000000001b58000 default file\u003d/lib/libunwind.so.7.0.0 mapped\u003d2 active\u003d1 N1\u003d2\n2000000001b74000 default file\u003d/lib/libunwind.so.7.0.0\n2000000001b80000 default file\u003d/lib/libunwind.so.7.0.0\n2000000001b84000 default\n4000000000000000 default file\u003d/media/huge/test9 mapped\u003d1 N1\u003d1\n6000000000000000 default file\u003d/media/huge/test9 anon\u003d1 dirty\u003d1 active\u003d0 N1\u003d1\n6000000000004000 default heap\n607fffff7fffc000 default anon\u003d1 dirty\u003d1 swapcache\u003d1 N2\u003d1\n607fffffff06c000 default stack anon\u003d1 dirty\u003d1 active\u003d0 N1\u003d1\n8000000060000000 default file\u003d/mnt/huge/test0 huge dirty\u003d3 N1\u003d3\n8000000090000000 default file\u003d/mnt/huge/test1 huge dirty\u003d3 N0\u003d1 N2\u003d2\n80000000c0000000 default file\u003d/mnt/huge/test2 huge dirty\u003d3 N1\u003d1 N3\u003d2\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.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": "a57ebfdb2cf9fa60dfa2f403f70ef6c432ca2a62",
      "tree": "1597343f3e9c076fa37ceb2c6442cc9e3ca44656",
      "parents": [
        "685db65e422bfa523b8a9dacb5a658b42b254f05"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Thu Mar 02 02:54:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 02 08:33:07 2006 -0800"
      },
      "message": "[PATCH] numa_maps: Fix potential crash on non IA64 platforms\n\nnuma_maps should not scan over huge vmas in order not to cause problems for\nnon IA64 platforms that may have pte entries pointing to huge pages in a\nvariety of ways in their page tables.  Add a simple check to ignore vmas\ncontaining huge pages.\n\nSigned-off-by: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.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": "511030bcd24119fa3759ef3f914d354e107ef839",
      "tree": "707edb2c804ad6c42ffbd0ef6685b49e076f0dcd",
      "parents": [
        "5cf6c541f5b3902bdcc2d311d70f8e730aaff1be"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Tue Feb 28 16:58:57 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Feb 28 20:53:43 2006 -0800"
      },
      "message": "[PATCH] Fix sys_migrate_pages: Move all pages when invoked from root\n\nCurrently sys_migrate_pages only moves pages belonging to a process.  This\nis okay when invoked from a regular user.  But if invoked from root it\nshould move all pages as documented in the migrate_pages manpage.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.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": "1e275d406bf6b88e4de6925cf594b64bb2ec49bc",
      "tree": "6fe143317fbc442407244a3c55ecf475072a28f3",
      "parents": [
        "f68a106f224c21148c5264a429fac149dc7ad0ac"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Fri Feb 24 13:04:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Feb 24 14:31:38 2006 -0800"
      },
      "message": "[PATCH] page migration: Fix MPOL_INTERLEAVE behavior for migration via mbind()\n\nmigrate_pages_to() allocates a list of new pages on the intended target\nnode or with the intended policy and then uses the list of new pages as\ntargets for the migration of a list of pages out of place.\n\nWhen the pages are allocated it is not clear which of the out of place\npages will be moved to the new pages.  So we cannot specify an address as\nneeded by alloc_page_vma().  This causes problem for MPOL_INTERLEAVE which\nwill currently allocate the pages on the first node of the set.  If mbind\nis used with vma that has the policy of MPOL_INTERLEAVE then the\ninterleaving of pages may be destroyed.\n\nThis patch fixes that by generating a fake address for each alloc_page_vma\nwhich will result is a distribution of pages as prescribed by\nMPOL_INTERLEAVE.\n\nLee also noted that the sequence of nodes for the new pages seems to be\ninverted.  So we also invert the way the lists of pages for migration are\nbuild.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nLooks-ok-to: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fcab6f351305029fc5e3c632209d45cae57e4835",
      "tree": "21a84b35d172b63a47421190af83eb12c006a8e2",
      "parents": [
        "1dd31b6c89611ee91c0ff309c8733c0af61579e8"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Feb 20 18:28:10 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Feb 20 20:00:11 2006 -0800"
      },
      "message": "[PATCH] mm/mempolicy.c: fix \u0027if ();\u0027 typo\n\n[akpm; it happens that the code was still correct, only inefficient ]\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Christoph Lameter \u003cchristoph@lameter.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a9c930bac163c5e616ca0ba9378e7dc746c93227",
      "tree": "58ff339858cee3a87893c094561eb72381044a08",
      "parents": [
        "c255d844dd73616f23e4b4733edcc2e5fa4042b2"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Mon Feb 20 18:27:59 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Feb 20 20:00:10 2006 -0800"
      },
      "message": "[PATCH] Fix units in mbind check\n\nmaxnode is a bit index and can\u0027t be directly compared against a byte length\nlike PAGE_SIZE\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "636f13c174dd7c84a437d3c3e8fa66f03f7fda63",
      "tree": "2dd28d7729a52655eb4e155af620c5afdda85a8a",
      "parents": [
        "74910e6c7dc7471b286a883c1a7af70483ffd2ba"
      ],
      "author": {
        "name": "Chris Wright",
        "email": "chrisw@sous-sol.org",
        "time": "Fri Feb 17 13:59:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Feb 17 14:09:22 2006 -0800"
      },
      "message": "[PATCH] sys_mbind sanity checking\n\nMake sure maxnodes is safe size before calculating nlongs in\nget_nodes().\n\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dd942ae331425812930cd01766178b7e28e65f2d",
      "tree": "b513bcfa00c1fc0f78e06b7f4c8d999275b64dfb",
      "parents": [
        "759b650f54ed13e9b3d6c064c763a72ee09c74dd"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Fri Feb 17 01:39:16 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Feb 17 08:18:14 2006 -0800"
      },
      "message": "[PATCH] Handle all and empty zones when setting up custom zonelists for mbind\n\nThe memory allocator doesn\u0027t like empty zones (which have an\nuninitialized freelist), so a x86-64 system with a node fully\nin GFP_DMA32 only would crash on mbind.\n\nFix that up by putting all possible zones as fallback into the zonelist\nand skipping the empty ones.\n\nIn fact the code always enough allocated space for all zones,\nbut only used it for the highest. This change just uses all the\nmemory that was allocated before.\n\nThis should work fine for now, but whoever implements node hot removal\nneeds to fix this somewhere else too (or make sure zone datastructures\nby itself never go away, only their memory)\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "00ac59adfca8f2f339beb0b67054e786c275553e",
      "tree": "96489ebcdebec957f94de44940e10b3935bc3c18",
      "parents": [
        "9e8c34edfd7ae97d0e3391f34d9d26a0167912bf"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Fri Feb 03 21:51:14 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Feb 04 16:43:14 2006 -0800"
      },
      "message": "[PATCH] x86_64: Fix memory policy build without CONFIG_HUGETLBFS\n\n\u003e mm/mempolicy.c: In function `huge_zonelist\u0027:\n\u003e mm/mempolicy.c:1045: error: `HPAGE_SHIFT\u0027 undeclared (first use in this function)\n\u003e mm/mempolicy.c:1045: error: (Each undeclared identifier is reported only once\n\u003e mm/mempolicy.c:1045: error: for each function it appears in.)\n\u003e make[1]: *** [mm/mempolicy.o] Error 1\n\nNeed to wrap huge_zonelist function with CONFIG_HUGETLBFS.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7e2ab150d1b3b286a4c864c60a549b2601777b63",
      "tree": "9d8f4f3af382a043ada81f75c324e76dff9f0043",
      "parents": [
        "a3351e525e4768c29aa5d22ef59b5b38e0361e53"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Feb 01 03:05:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:16 2006 -0800"
      },
      "message": "[PATCH] Direct Migration V9: upgrade MPOL_MF_MOVE and sys_migrate_pages()\n\nModify policy layer to support direct page migration\n\n- Add migrate_pages_to() allowing the migration of a list of pages to a a\n  specified node or to vma with a specific allocation policy in sets of\n  MIGRATE_CHUNK_SIZE pages\n\n- Modify do_migrate_pages() to do a staged move of pages from the source\n  nodes to the target nodes.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "86c562a9d6683063e071692fe14e0a18e64ee1be",
      "tree": "dd64f8bff4624f17f2245aeadf962e0d6d5974a0",
      "parents": [
        "dc85da15d42b0efc792b0f5eab774dc5dbc1ceec"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Wed Jan 18 17:42:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 18 19:20:18 2006 -0800"
      },
      "message": "[PATCH] mm: optimize numa policy handling in slab allocator\n\nMove the interrupt check from slab_node into ___cache_alloc and adds an\n\"unlikely()\" to avoid pipeline stalls on some architectures.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dc85da15d42b0efc792b0f5eab774dc5dbc1ceec",
      "tree": "4b347b10dadf3cc7bdbff36709e8cee2bc673996",
      "parents": [
        "fc0abb1451c64c79ac80665d5ba74450ce274e4d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Wed Jan 18 17:42:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 18 19:20:18 2006 -0800"
      },
      "message": "[PATCH] NUMA policies in the slab allocator V2\n\nThis patch fixes a regression in 2.6.14 against 2.6.13 that causes an\nimbalance in memory allocation during bootup.\n\nThe slab allocator in 2.6.13 is not numa aware and simply calls\nalloc_pages().  This means that memory policies may control the behavior of\nalloc_pages().  During bootup the memory policy is set to MPOL_INTERLEAVE\nresulting in the spreading out of allocations during bootup over all\navailable nodes.  The slab allocator in 2.6.13 has only a single list of\nslab pages.  As a result the per cpu slab cache and the spinlock controlled\npage lists may contain slab entries from off node memory.  The slab\nallocator in 2.6.13 makes no effort to discern the locality of an entry on\nits lists.\n\nThe NUMA aware slab allocator in 2.6.14 controls locality of the slab pages\nexplicitly by calling alloc_pages_node().  The NUMA slab allocator manages\nslab entries by having lists of available slab pages for each node.  The\nper cpu slab cache can only contain slab entries associated with the node\nlocal to the processor.  This guarantees that the default allocation mode\nof the slab allocator always assigns local memory if available.\n\nSetting MPOL_INTERLEAVE as a default policy during bootup has no effect\nanymore.  In 2.6.14 all node unspecific slab allocations are performed on\nthe boot processor.  This means that most of key data structures are\nallocated on one node.  Most processors will have to refer to these\nstructures making the boot node a potential bottleneck.  This may reduce\nperformance and cause unnecessary memory pressure on the boot node.\n\nThis patch implements NUMA policies in the slab layer.  There is the need\nof explicit application of NUMA memory policies by the slab allcator itself\nsince the NUMA slab allocator does no longer let the page_allocator control\nlocality.\n\nThe check for policies is made directly at the beginning of __cache_alloc\nusing current-\u003emempolicy.  The memory policy is already frequently checked\nby the page allocator (alloc_page_vma() and alloc_page_current()).  So it\nis highly likely that the cacheline is present.  For MPOL_INTERLEAVE\nkmalloc() will spread out each request to one node after another so that an\nequal distribution of allocations can be obtained during bootup.\n\nIt is not possible to push the policy check to lower layers of the NUMA\nslab allocator since the per cpu caches are now only containing slab\nentries from the current node.  If the policy says that the local node is\nnot to be preferred or forbidden then there is no point in checking the\nslab cache or local list of slab pages.  The allocation better be directed\nimmediately to the lists containing slab entries for the allowed set of\nnodes.\n\nThis way of applying policy also fixes another strange behavior in 2.6.13.\nalloc_pages() is controlled by the memory allocation policy of the current\nprocess.  It could therefore be that one process is running with\nMPOL_INTERLEAVE and would f.e.  obtain a new page following that policy\nsince no slab entries are in the lists anymore.  A page can typically be\nused for multiple slab entries but lets say that the current process is\nonly using one.  The other entries are then added to the slab lists.  These\nare now non local entries in the slab lists despite of the possible\navailability of local pages that would provide faster access and increase\nthe performance of the application.\n\nAnother process without MPOL_INTERLEAVE may now run and expect a local slab\nentry from kmalloc().  However, there are still these free slab entries\nfrom the off node page obtained from the other process via MPOL_INTERLEAVE\nin the cache.  The process will then get an off node slab entry although\nother slab entries may be available that are local to that process.  This\nmeans that the policy if one process may contaminate the locality of the\nslab caches for other processes.\n\nThis patch in effect insures that a per process policy is followed for the\nallocation of slab entries and that there cannot be a memory policy\ninfluence from one process to another.  A process with default policy will\nalways get a local slab entry if one is available.  And the process using\nmemory policies will get its memory arranged as requested.  Off-node slab\nallocation will require the use of spinlocks and will make the use of per\ncpu caches not possible.  A process using memory policies to redirect\nallocations offnode will have to cope with additional lock overhead in\naddition to the latency added by the need to access a remote slab entry.\n\nChanges V1-\u003eV2\n- Remove #ifdef CONFIG_NUMA by moving forward declaration into\n  prior #ifdef CONFIG_NUMA section.\n\n- Give the function determining the node number to use a saner\n  name.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fc3012896337c83a056c496d7cfb0072e1591181",
      "tree": "5b774e59ba982fd4330eb96abace9cda9d744b0f",
      "parents": [
        "053837fce7aa79025ed57656855df09f80175527"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Wed Jan 18 17:42:29 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 18 19:20:17 2006 -0800"
      },
      "message": "[PATCH] Simplify migrate_page_add\n\nSimplify migrate_page_add after feedback from Hugh.  This also allows us to\ndrop one parameter from migrate_page_add.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "053837fce7aa79025ed57656855df09f80175527",
      "tree": "05d7615894131a368fc4943f641b11acdd2ae694",
      "parents": [
        "e236a166b2bc437769a9b8b5d19186a3761bde48"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Jan 18 17:42:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 18 19:20:17 2006 -0800"
      },
      "message": "[PATCH] mm: migration page refcounting fix\n\nMigration code currently does not take a reference to target page\nproperly, so between unlocking the pte and trying to take a new\nreference to the page with isolate_lru_page, anything could happen to\nit.\n\nFix this by holding the pte lock until we get a chance to elevate the\nrefcount.\n\nOther small cleanups while we\u0027re here.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7339ff8302fd70aabf5f1ae26e0c4905fa74a495",
      "tree": "38ee561d51b7e4db7c0d6dd9ebd9fc22c2b6ab88",
      "parents": [
        "852cf918dcf2ae46468b425e679fbcbf0ea8fdbb"
      ],
      "author": {
        "name": "Robin Holt",
        "email": "holt@sgi.com",
        "time": "Sat Jan 14 13:20:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Jan 14 18:27:07 2006 -0800"
      },
      "message": "[PATCH] Add tmpfs options for memory placement policies\n\nAnything that writes into a tmpfs filesystem is liable to disproportionately\ndecrease the available memory on a particular node.  Since there\u0027s no telling\nwhat sort of application (e.g.  dd/cp/cat) might be dropping large files\nthere, this lets the admin choose the appropriate default behavior for their\nsite\u0027s situation.\n\nIntroduce a tmpfs mount option which allows specifying a memory policy and\na second option to specify the nodelist for that policy.  With the default\npolicy, tmpfs will behave as it does today.  This patch adds support for\npreferred, bind, and interleave policies.\n\nThe default policy will cause pages to be added to tmpfs files on the node\nwhich is doing the writing.  Some jobs expect a single process to create\nand manage the tmpfs files.  This results in a node which has a\nsignificantly reduced number of free pages.\n\nWith this patch, the administrator can specify the policy and nodes for\nthat policy where they would prefer allocations.\n\nThis patch was originally written by Brent Casavant and Hugh Dickins.  I\nadded support for the bind and preferred policies and the mpol_nodelist\nmount option.\n\nSigned-off-by: Brent Casavant \u003cbcasavan@sgi.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Robin Holt \u003cholt@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f4598c8b3678abd65be3be00ed3d046375a4777e",
      "tree": "497aba8cdeb00b1fe8d227a9b839c1ce8980f3a2",
      "parents": [
        "1bc691d357c646700b9523d2aeca02847d3fb3f4"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Thu Jan 12 01:05:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jan 12 09:08:48 2006 -0800"
      },
      "message": "[PATCH] migration: make sure there is no attempt to migrate reserved pages.\n\nThis ensures that reserved pages are not migrated.  Reserved pages\ncurrently cause the WARN_ON to trigger in migrate_page_add()\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4225399a66b315d4d1fb1cb61b75dda201c832e3",
      "tree": "c8bd976bc6590c5fe859c6129abb93072d99cfa8",
      "parents": [
        "202f72d5d1b5c2c084f63ef996c736d208b447b5"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sun Jan 08 01:01:59 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:44 2006 -0800"
      },
      "message": "[PATCH] cpuset: rebind vma mempolicies fix\n\nFix more of longstanding bug in cpuset/mempolicy interaction.\n\nNUMA mempolicies (mm/mempolicy.c) are constrained by the current tasks cpuset\nto just the Memory Nodes allowed by that cpuset.  The kernel maintains\ninternal state for each mempolicy, tracking what nodes are used for the\nMPOL_INTERLEAVE, MPOL_BIND or MPOL_PREFERRED policies.\n\nWhen a tasks cpuset memory placement changes, whether because the cpuset\nchanged, or because the task was attached to a different cpuset, then the\ntasks mempolicies have to be rebound to the new cpuset placement, so as to\npreserve the cpuset-relative numbering of the nodes in that policy.\n\nAn earlier fix handled such mempolicy rebinding for mempolicies attached to a\ntask.\n\nThis fix rebinds mempolicies attached to vma\u0027s (address ranges in a tasks\naddress space.) Due to the need to hold the task-\u003emm-\u003emmap_sem semaphore while\nupdating vma\u0027s, the rebinding of vma mempolicies has to be done when the\ncpuset memory placement is changed, at which time mmap_sem can be safely\nacquired.  The tasks mempolicy is rebound later, when the task next attempts\nto allocate memory and notices that its task-\u003ecpuset_mems_generation is\nout-of-date with its cpusets mems_generation.\n\nBecause walking the tasklist to find all tasks attached to a changing cpuset\nrequires holding tasklist_lock, a spinlock, one cannot update the vma\u0027s of the\naffected tasks while doing the tasklist scan.  In general, one cannot acquire\na semaphore (which can sleep) while already holding a spinlock (such as\ntasklist_lock).  So a list of mm references has to be built up during the\ntasklist scan, then the tasklist lock dropped, then for each mm, its mmap_sem\nacquired, and the vma\u0027s in that mm rebound.\n\nOnce the tasklist lock is dropped, affected tasks may fork new tasks, before\ntheir mm\u0027s are rebound.  A kernel global \u0027cpuset_being_rebound\u0027 is set to\npoint to the cpuset being rebound (there can only be one; cpuset modifications\nare done under a global \u0027manage_sem\u0027 semaphore), and the mpol_copy code that\nis used to copy a tasks mempolicies during fork catches such forking tasks,\nand ensures their children are also rebound.\n\nWhen a task is moved to a different cpuset, it is easier, as there is only one\ntask involved.  It\u0027s mm-\u003evma\u0027s are scanned, using the same\nmpol_rebind_policy() as used above.\n\nIt may happen that both the mpol_copy hook and the update done via the\ntasklist scan update the same mm twice.  This is ok, as the mempolicies of\neach vma in an mm keep track of what mems_allowed they are relative to, and\nsafely no-op a second request to rebind to the same nodes.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "74cb21553f4bf244185b9bec4c26e4e3169ad55e",
      "tree": "3f8f13e8dacc8f0876b01f62765a123ce1722b17",
      "parents": [
        "909d75a3b77bdd8baa9429bad3b69a654d2954ce"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sun Jan 08 01:01:56 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:44 2006 -0800"
      },
      "message": "[PATCH] cpuset: numa_policy_rebind cleanup\n\nCleanup, reorganize and make more robust the mempolicy.c code to rebind\nmempolicies relative to the containing cpuset after a tasks memory placement\nchanges.\n\nThe real motivator for this cleanup patch is to lay more groundwork for the\nupcoming patch to correctly rebind NUMA mempolicies that are attached to vma\u0027s\nafter the containing cpuset memory placement changes.\n\nNUMA mempolicies are constrained by the cpuset their task is a member of.\nWhen either (1) a task is moved to a different cpuset, or (2) the \u0027mems\u0027\nmems_allowed of a cpuset is changed, then the NUMA mempolicies have embedded\nnode numbers (for MPOL_BIND, MPOL_INTERLEAVE and MPOL_PREFERRED) that need to\nbe recalculated, relative to their new cpuset placement.\n\nThe old code used an unreliable method of determining what was the old\nmems_allowed constraining the mempolicy.  It just looked at the tasks\nmems_allowed value.  This sort of worked with the present code, that just\nrebinds the -task- mempolicy, and leaves any -vma- mempolicies broken,\nreferring to the old nodes.  But in an upcoming patch, the vma mempolicies\nwill be rebound as well.  Then the order in which the various task and vma\nmempolicies are updated will no longer be deterministic, and one can no longer\ncount on the task-\u003emems_allowed holding the old value for as long as needed.\nIt\u0027s not even clear if the current code was guaranteed to work reliably for\ntask mempolicies.\n\nSo I added a mems_allowed field to each mempolicy, stating exactly what\nmems_allowed the policy is relative to, and updated synchronously and reliably\nanytime that the mempolicy is rebound.\n\nAlso removed a useless wrapper routine, numa_policy_rebind(), and had its\ncaller, cpuset_update_task_memory_state(), call directly to the rewritten\npolicy_rebind() routine, and made that rebind routine extern instead of\nstatic, and added a \"mpol_\" prefix to its name, making it\nmpol_rebind_policy().\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "909d75a3b77bdd8baa9429bad3b69a654d2954ce",
      "tree": "f9955ff697b7569fc75e5b8683d886315f34ac49",
      "parents": [
        "cf2a473c4089aa41c26f653200673f5a4cc25047"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sun Jan 08 01:01:55 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:44 2006 -0800"
      },
      "message": "[PATCH] cpuset: implement cpuset_mems_allowed\n\nProvide a cpuset_mems_allowed() method, which the sys_migrate_pages() code\nneeded, to obtain the mems_allowed vector of a cpuset, and replaced the\nworkaround in sys_migrate_pages() to call this new method.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cf2a473c4089aa41c26f653200673f5a4cc25047",
      "tree": "0bce21f4684a382b13e93ba5b85409cf5eab1c2c",
      "parents": [
        "b4b2641843db124637fa3d2cb2101982035dcc82"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sun Jan 08 01:01:54 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:43 2006 -0800"
      },
      "message": "[PATCH] cpuset: combine refresh_mems and update_mems\n\nThe important code paths through alloc_pages_current() and alloc_page_vma(),\nby which most kernel page allocations go, both called\ncpuset_update_current_mems_allowed(), which in turn called refresh_mems().\n-Both- of these latter two routines did a tasklock, got the tasks cpuset\npointer, and checked for out of date cpuset-\u003emems_generation.\n\nThat was a silly duplication of code and waste of CPU cycles on an important\ncode path.\n\nConsolidated those two routines into a single routine, called\ncpuset_update_task_memory_state(), since it updates more than just\nmems_allowed.\n\nChanged all callers of either routine to call the new consolidated routine.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5966514db662fb24c9bb43226a80106bcffd51f8",
      "tree": "9c6d8f4f6fee0d6574de7e225141d37b28811dc3",
      "parents": [
        "96b7f34143c2c823a6a750fcb758fc66c44945d2"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sun Jan 08 01:01:47 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:42 2006 -0800"
      },
      "message": "[PATCH] cpuset: mempolicy one more nodemask conversion\n\nFinish converting mm/mempolicy.c from bitmaps to nodemasks.  The previous\nconversion had left one routine using bitmaps, since it involved a\ncorresponding change to kernel/cpuset.c\n\nFix that interface by replacing with a simple macro that calls nodes_subset(),\nor if !CONFIG_CPUSET, returns (1).\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Christoph Lameter \u003cchristoph@lameter.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": "6ce3c4c0ff62ca6391019b7832fb41a7f28b9e26",
      "tree": "44801fafc41a45368de7a8e79306d57a04735f1d",
      "parents": [
        "48fce3429df84a94766fbbc845fa8450d0715b48"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun Jan 08 01:01:04 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:12:44 2006 -0800"
      },
      "message": "[PATCH] Move page migration related functions near do_migrate_pages()\n\nGroup page migration functions in mempolicy.c\n\nAdd a forward declaration for migrate_page_add (like gather_stats()) and use\nour new found mobility to group all page migration related function around\ndo_migrate_pages().\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.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": "48fce3429df84a94766fbbc845fa8450d0715b48",
      "tree": "4458b95a0ef8a1896049415a0e3fc8a0e89d340a",
      "parents": [
        "132beacf9785d2e6e8aecb59aa078f3ca5668fa6"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun Jan 08 01:01:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:12:44 2006 -0800"
      },
      "message": "[PATCH] mempolicies: unexport get_vma_policy()\n\nSince the numa_maps functionality is now in mempolicy.c we no longer need to\nexport get_vma_policy().\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.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": "132beacf9785d2e6e8aecb59aa078f3ca5668fa6",
      "tree": "7b1274279448e4fde20489b7572455ef93bc4c3d",
      "parents": [
        "1a75a6c825c17249ca49f050a872a04ce0997ce3"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Sun Jan 08 01:01:02 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:12:44 2006 -0800"
      },
      "message": "[PATCH] Drop page table lock before calling migrate_page_add()\n\nmigrate_page_add cannot be called with a spinlock held (calls\nisolate_lru_page which calles schedule_on_each_cpu).  Drop ptl lock in\ncheck_pte_range before calling migrate_page_add().\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1a75a6c825c17249ca49f050a872a04ce0997ce3",
      "tree": "2ca8fc6513a20e5b4bec67686323ce1f5c8e237c",
      "parents": [
        "38e35860dbe6197a4b42eb6e8b47da940b7695dd"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun Jan 08 01:01:02 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:12:44 2006 -0800"
      },
      "message": "[PATCH] Fold numa_maps into mempolicies.c\n\nFirst discussed at http://marc.theaimsgroup.com/?t\u003d113149255100001\u0026r\u003d1\u0026w\u003d2\n\n- Use the check_range() in mempolicy.c to gather statistics.\n\n- Improve the numa_maps code in general and fix some comments.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.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": "38e35860dbe6197a4b42eb6e8b47da940b7695dd",
      "tree": "2794681eb62c4bd84e186693df265c9f1a0b28f4",
      "parents": [
        "ef2bf0dc8675e14cf8cba3b7fb9f48d72640a70e"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun Jan 08 01:01:01 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:12:44 2006 -0800"
      },
      "message": "[PATCH] mempolicies: private pointer in check_range and MPOL_MF_INVERT\n\nThis was was first posted at\nhttp://marc.theaimsgroup.com/?l\u003dlinux-mm\u0026m\u003d113149240227584\u0026w\u003d2\n\n(Part of this functionality is also contained in the direct migration\npathset. The functionality here is more generic and independent of that\npatchset.)\n\n- Add internal flags MPOL_MF_INVERT to control check_range() behavior.\n\n- Replace the pagelist passed through by check_range by a general\n  private pointer that may be used for other purposes.\n  (The following patches will use that to merge numa_maps into\n  mempolicy.c and to better group the page migration code in\n  the policy layer)\n\n- Improve some comments.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.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": "d498471133ff1f9586a06820beaeebc575fe2814",
      "tree": "c7cde93441692e3b32d83dfbf85858ab2d85e481",
      "parents": [
        "ee27497df36823f2793212cad0997c044eb0e1eb"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun Jan 08 01:00:55 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:12:42 2006 -0800"
      },
      "message": "[PATCH] SwapMig: Extend parameters for migrate_pages()\n\nExtend the parameters of migrate_pages() to allow the caller control over the\nfate of successfully migrated or impossible to migrate pages.\n\nSwap migration and direct migration will have the same interface after this\npatch so that patches can be independently applied to the policy layer and the\ncore migration code.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.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": "39743889aaf76725152f16aa90ca3c45f6d52da3",
      "tree": "2a6f658d03dbbd9428934c5e030230a4acb6d5e0",
      "parents": [
        "dc9aa5b9d65fd11b1f5246b46ec610ee8b83c6dd"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun Jan 08 01:00:51 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:12:42 2006 -0800"
      },
      "message": "[PATCH] Swap Migration V5: sys_migrate_pages interface\n\nsys_migrate_pages implementation using swap based page migration\n\nThis is the original API proposed by Ray Bryant in his posts during the first\nhalf of 2005 on linux-mm@kvack.org and linux-kernel@vger.kernel.org.\n\nThe intent of sys_migrate is to migrate memory of a process.  A process may\nhave migrated to another node.  Memory was allocated optimally for the prior\ncontext.  sys_migrate_pages allows to shift the memory to the new node.\n\nsys_migrate_pages is also useful if the processes available memory nodes have\nchanged through cpuset operations to manually move the processes memory.  Paul\nJackson is working on an automated mechanism that will allow an automatic\nmigration if the cpuset of a process is changed.  However, a user may decide\nto manually control the migration.\n\nThis implementation is put into the policy layer since it uses concepts and\nfunctions that are also needed for mbind and friends.  The patch also provides\na do_migrate_pages function that may be useful for cpusets to automatically\nmove memory.  sys_migrate_pages does not modify policies in contrast to Ray\u0027s\nimplementation.\n\nThe current code here is based on the swap based page migration capability and\nthus is not able to preserve the physical layout relative to it containing\nnodeset (which may be a cpuset).  When direct page migration becomes available\nthen the implementation needs to be changed to do a isomorphic move of pages\nbetween different nodesets.  The current implementation simply evicts all\npages in source nodeset that are not in the target nodeset.\n\nPatch supports ia64, i386 and x86_64.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dc9aa5b9d65fd11b1f5246b46ec610ee8b83c6dd",
      "tree": "808da06f0bc8ab5189f1c315a2b99c85a33ed74c",
      "parents": [
        "7cbe34cf86c673503b177ff47cfa2c7030dabb50"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun Jan 08 01:00:50 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:12:41 2006 -0800"
      },
      "message": "[PATCH] Swap Migration V5: MPOL_MF_MOVE interface\n\nAdd page migration support via swap to the NUMA policy layer\n\nThis patch adds page migration support to the NUMA policy layer.  An\nadditional flag MPOL_MF_MOVE is introduced for mbind.  If MPOL_MF_MOVE is\nspecified then pages that do not conform to the memory policy will be evicted\nfrom memory.  When they get pages back in new pages will be allocated\nfollowing the numa policy.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4be38e351c5f455f6f490f5aff29053e33ab4f99",
      "tree": "fd7ba3678cdb5750894f58034f47076dd38c64ae",
      "parents": [
        "1a93205bdffd9d7278d4a66081cdb48452522a58"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Fri Jan 06 00:11:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:28 2006 -0800"
      },
      "message": "[PATCH] mm: move determination of policy_zone into page allocator\n\nCurrently the function to build a zonelist for a BIND policy has the side\neffect to set the policy_zone.  This seems to be a bit strange.  policy\nzone seems to not be initialized elsewhere and therefore 0.  Do we police\nZONE_DMA if no bind policy has been used yet?\n\nThis patch moves the determination of the zone to apply policies to into\nthe page allocator.  We determine the zone while building the zonelist for\nnodes.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "21abb1478a87e26f5fa71dbcb7cf4264272c2248",
      "tree": "01e9a76ec55975b509aa721ad7d9e9cce89d9c82",
      "parents": [
        "5da7ca86078964cbfe6c83efc1205904587706fe"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Fri Jan 06 00:10:47 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:23 2006 -0800"
      },
      "message": "[PATCH] Remove old node based policy interface from mempolicy.c\n\nmempolicy.c contains provisional interface for huge page allocation based on\nnode numbers.  This is in use in SLES9 but was never used (AFAIK) in upstream\nversions of Linux.\n\nHuge page allocations now use zonelists to figure out where to allocate pages.\n The use of zonelists allows us to find the closest hugepage which was the\nconsideration of the NUMA distance for huge page allocations.\n\nRemove the obsolete functions.\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\nAcked-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "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": "8f493d797bc1fe470377adc9d8775845427e240e",
      "tree": "08f4555a0064185152a51ed707e9571dbeedddc7",
      "parents": [
        "abe842eb98c45e2b77c5868ef106616ca828a3e4"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Tue Jan 03 00:07:28 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jan 02 17:01:42 2006 -0800"
      },
      "message": "[PATCH] Make sure interleave masks have at least one node set\n\nOtherwise a bad mem policy system call can confuse the interleaving\ncode into referencing undefined nodes.\n\nOriginally reported by Doug Chapman\n\nI was told it\u0027s CVE-2005-3358\n(one has to love these security people - they make everything sound important)\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6aab341e0a28aff100a09831c5300a2994b8b986",
      "tree": "1af3908275aa5e1b16e80efee554a9a7504c56d4",
      "parents": [
        "458af5439fe7ae7d95ca14106844e61f0795166c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 28 14:34:23 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 28 14:34:23 2005 -0800"
      },
      "message": "mm: re-architect the VM_UNPAGED logic\n\nThis replaces the (in my opinion horrible) VM_UNMAPPED logic with very\nexplicit support for a \"remapped page range\" aka VM_PFNMAP.  It allows a\nVM area to contain an arbitrary range of page table entries that the VM\nnever touches, and never considers to be normal pages.\n\nAny user of \"remap_pfn_range()\" automatically gets this new\nfunctionality, and doesn\u0027t even have to mark the pages reserved or\nindeed mark them any other way.  It just works.  As a side effect, doing\nmmap() on /dev/mem works for arbitrary ranges.\n\nSparc update from David in the next commit.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0b14c179a483e71ea41df2aa4a661760063115bd",
      "tree": "075fc303a3d2fd33f66c0af8f64064cff2b72b79",
      "parents": [
        "664beed0190fae687ac51295694004902ddeb18e"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Nov 21 21:32:15 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 22 09:13:42 2005 -0800"
      },
      "message": "[PATCH] unpaged: VM_UNPAGED\n\nAlthough we tend to associate VM_RESERVED with remap_pfn_range, quite a few\ndrivers set VM_RESERVED on areas which are then populated by nopage.  The\nPageReserved removal in 2.6.15-rc1 changed VM_RESERVED not to free pages in\nzap_pte_range, without changing those drivers not to set it: so their pages\njust leak away.\n\nLet\u0027s not change miscellaneous drivers now: introduce VM_UNPAGED at the core,\nto flag the special areas where the ptes may have no struct page, or if they\nhave then it\u0027s not to be touched.  Replace most instances of VM_RESERVED in\ncore mm by VM_UNPAGED.  Force it on in remap_pfn_range, and the sparc and\nsparc64 io_remap_pfn_range.\n\nRevert addition of VM_RESERVED to powerpc vdso, it\u0027s not needed there.  Is it\nneeded anywhere?  It still governs the mm-\u003ereserved_vm statistic, and special\nvmas not to be merged, and areas not to be core dumped; but could probably be\neliminated later (the drivers are probably specifying it because in 2.4 it\nkept swapout off the vma, but in 2.6 we work from the LRU, which these pages\ndon\u0027t get on).\n\nUse the VM_SHM slot for VM_UNPAGED, and define VM_SHM to 0: it serves no\npurpose whatsoever, and should be removed from drivers when we clean up.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: William Irwin \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "68860ec10bcc07ab4f89f9d940e3b77ae5ca13b3",
      "tree": "a411f9623a113d72f23da38cf2de51f66c177873",
      "parents": [
        "fb5eeeee44edb248b4837416966f19731f497f79"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sun Oct 30 15:02:36 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:22 2005 -0800"
      },
      "message": "[PATCH] cpusets: automatic numa mempolicy rebinding\n\nThis patch automatically updates a tasks NUMA mempolicy when its cpuset\nmemory placement changes.  It does so within the context of the task,\nwithout any need to support low level external mempolicy manipulation.\n\nIf a system is not using cpusets, or if running on a system with just the\nroot (all-encompassing) cpuset, then this remap is a no-op.  Only when a\ntask is moved between cpusets, or a cpusets memory placement is changed\ndoes the following apply.  Otherwise, the main routine below,\nrebind_policy() is not even called.\n\nWhen mixing cpusets, scheduler affinity, and NUMA mempolicies, the\nessential role of cpusets is to place jobs (several related tasks) on a set\nof CPUs and Memory Nodes, the essential role of sched_setaffinity is to\nmanage a jobs processor placement within its allowed cpuset, and the\nessential role of NUMA mempolicy (mbind, set_mempolicy) is to manage a jobs\nmemory placement within its allowed cpuset.\n\nHowever, CPU affinity and NUMA memory placement are managed within the\nkernel using absolute system wide numbering, not cpuset relative numbering.\n\nThis is ok until a job is migrated to a different cpuset, or what\u0027s the\nsame, a jobs cpuset is moved to different CPUs and Memory Nodes.\n\nThen the CPU affinity and NUMA memory placement of the tasks in the job\nneed to be updated, to preserve their cpuset-relative position.  This can\nbe done for CPU affinity using sched_setaffinity() from user code, as one\ntask can modify anothers CPU affinity.  This cannot be done from an\nexternal task for NUMA memory placement, as that can only be modified in\nthe context of the task using it.\n\nHowever, it easy enough to remap a tasks NUMA mempolicy automatically when\na task is migrated, using the existing cpuset mechanism to trigger a\nrefresh of a tasks memory placement after its cpuset has changed.  All that\nis needed is the old and new nodemask, and notice to the task that it needs\nto rebind its mempolicy.  The tasks mems_allowed has the old mask, the\ntasks cpuset has the new mask, and the existing\ncpuset_update_current_mems_allowed() mechanism provides the notice.  The\nbitmap/cpumask/nodemask remap operators provide the cpuset relative\ncalculations.\n\nThis patch leaves open a couple of issues:\n\n 1) Updating vma and shmfs/tmpfs/hugetlbfs memory policies:\n\n    These mempolicies may reference nodes outside of those allowed to\n    the current task by its cpuset.  Tasks are migrated as part of jobs,\n    which reside on what might be several cpusets in a subtree.  When such\n    a job is migrated, all NUMA memory policy references to nodes within\n    that cpuset subtree should be translated, and references to any nodes\n    outside that subtree should be left untouched.  A future patch will\n    provide the cpuset mechanism needed to mark such subtrees.  With that\n    patch, we will be able to correctly migrate these other memory policies\n    across a job migration.\n\n 2) Updating cpuset, affinity and memory policies in user space:\n\n    This is harder.  Any placement state stored in user space using\n    system-wide numbering will be invalidated across a migration.  More\n    work will be required to provide user code with a migration-safe means\n    to manage its cpuset relative placement, while preserving the current\n    API\u0027s that pass system wide numbers, not cpuset relative numbers across\n    the kernel-user boundary.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5fcbb23050936d69de8087d4b311eaf55cb42740",
      "tree": "10d14ca6927bc1bfa4bca4d206d2e1039f6cbf03",
      "parents": [
        "8bccd85ffbaf8ff1448d1235fa6594e207695531"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Sat Oct 29 18:17:00 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:45 2005 -0700"
      },
      "message": "[PATCH] Remove policy contextualization from mbind\n\nPolicy contextualization is only useful for task based policies and not for\nvma based policies.  It may be useful to define allowed nodes that are not\naccessible from this thread because other threads may have access to these\nnodes.  Without this patch strange memory policy situations may cause an\napplication to fail with out of memory.\n\nExample:\n\nLet\u0027s say we have two threads A and B that share the same address space and\na huge array computational array X.\n\nThread A is restricted by its cpuset to nodes 0 and 1 and thread B is\nrestricted by its cpuset to nodes 2 and 3.\n\nThread A now wants to restrict allocations to the first node and thus\napplies a BIND policy on X to node 0 and 2.  The cpuset limits this to node\n0.  Thus pages for X must be allocated on node 0 now.\n\nThread B now touches a page that has never been used in X and faults in a\npage.  According to the BIND policy of the vma for X the page must be\nallocated on page 0.  However, the cpuset of B does not allow allocation on\n0 and 1.  Now the application fails in alloc_pages with out of memory.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.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": "8bccd85ffbaf8ff1448d1235fa6594e207695531",
      "tree": "d5ed1f3b2ba1d301c74cc0a62ed416e634c5bebb",
      "parents": [
        "bb7e7e032d2cb8e0e9a88a2be209de5e61033b39"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Sat Oct 29 18:16:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:45 2005 -0700"
      },
      "message": "[PATCH] Implement sys_* do_* layering in the memory policy layer.\n\n- Do a separation between do_xxx and sys_xxx functions. sys_xxx functions\n  take variable sized bitmaps from user space as arguments. do_xxx functions\n  take fixed sized nodemask_t as arguments and may be used from inside the\n  kernel. Doing so simplifies the initialization code. There is no\n  fs \u003d kernel_ds assumption anymore.\n\n- Split up get_nodes into get_nodes (which gets the node list) and\n  contextualize_policy which restricts the nodes to those accessible\n  to the task and updates cpusets.\n\n- Add comments explaining limitations of bind policy\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.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": "705e87c0c3c38424f7f30556c85bc20e808d2f59",
      "tree": "7a237e6266f4801385e1226cc497b47e3a2458bd",
      "parents": [
        "8f4e2101fd7df9031a754eedb82e2060b51f8c45"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:27 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:40 2005 -0700"
      },
      "message": "[PATCH] mm: pte_offset_map_lock loops\n\nConvert those common loops using page_table_lock on the outside and\npte_offset_map within to use just pte_offset_map_lock within instead.\n\nThese all hold mmap_sem (some exclusively, some not), so at no level can a\npage table be whipped away from beneath them.  But whereas pte_alloc loops\ntested with the \"atomic\" pmd_present, these loops are testing with pmd_none,\nwhich on i386 PAE tests both lower and upper halves.\n\nThat\u0027s now unsafe, so add a cast into pmd_none to test only the vital lower\nhalf: we lose a little sensitivity to a corrupt middle directory, but not\nenough to worry about.  It appears that i386 and UML were the only\narchitectures vulnerable in this way, and pgd and pud no problem.\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": "b5810039a54e5babf428e9a1e89fc1940fabff11",
      "tree": "835836cb527ec9bd525f93eb7e016f3dfb8c8ae2",
      "parents": [
        "f9c98d0287de42221c624482fd4f8d485c98ab22"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Sat Oct 29 18:16:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] core remove PageReserved\n\nRemove PageReserved() calls from core code by tightening VM_RESERVED\nhandling in mm/ to cover PageReserved functionality.\n\nPageReserved special casing is removed from get_page and put_page.\n\nAll setting and clearing of PageReserved is retained, and it is now flagged\nin the page_alloc checks to help ensure we don\u0027t introduce any refcount\nbased freeing of Reserved pages.\n\nMAP_PRIVATE, PROT_WRITE of VM_RESERVED regions is tentatively being\ndeprecated.  We never completely handled it correctly anyway, and is be\nreintroduced in future if required (Hugh has a proof of concept).\n\nOnce PageReserved() calls are removed from kernel/power/swsusp.c, and all\narch/ and driver code, the Set and Clear calls, and the PG_reserved bit can\nbe trivially removed.\n\nLast real user of PageReserved is swsusp, which uses PageReserved to\ndetermine whether a struct page points to valid memory or not.  This still\nneeds to be addressed (a generic page_is_ram() should work).\n\nA last caveat: the ZERO_PAGE is now refcounted and managed with rmap (and\nthus mapcounted and count towards shared rss).  These writes to the struct\npage could cause excessive cacheline bouncing on big systems.  There are a\nnumber of ways this could be addressed if it is an issue.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\n\nRefcount bug fix for filemap_xip.c\n\nSigned-off-by: Carsten Otte \u003ccotte@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "662f3a0b94cc92bd708c27b80f8207cd7db93204",
      "tree": "c7a42829efca15f7ccdcf510c80283f4c08e0343",
      "parents": [
        "dfcd3c0dc426bb75770c34b40e14f2da8845ea62"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Sat Oct 29 18:15:49 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:35 2005 -0700"
      },
      "message": "[PATCH] Remove near all BUGs in mm/mempolicy.c\n\nMost of them can never be triggered and were only for development.\n\nSigned-off-by: \"Andi Kleen\" \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dfcd3c0dc426bb75770c34b40e14f2da8845ea62",
      "tree": "bd7e9f8463a18025c4775c6cdf22abbbd4236b64",
      "parents": [
        "e46a5e28c201f703c18b47b108bfddec44f897c4"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Sat Oct 29 18:15:48 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:35 2005 -0700"
      },
      "message": "[PATCH] Convert mempolicies to nodemask_t\n\nThe NUMA policy code predated nodemask_t so it used open coded bitmaps.\nConvert everything to nodemask_t.  Big patch, but shouldn\u0027t have any actual\nbehaviour changes (except I removed one unnecessary check against\nnode_online_map and one unnecessary BUG_ON)\n\nSigned-off-by: \"Andi Kleen\" \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "af4ca457eaf2d6682059c18463eb106e2ce58198",
      "tree": "399ca5ab3b15d723a6aefd04c764a2a06089ed06",
      "parents": [
        "434f1d10c1adb6c2e333d501ce1e42be610e0723"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 21 02:55:38 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 28 08:16:46 2005 -0700"
      },
      "message": "[PATCH] gfp_t: infrastructure\n\nBeginning of gfp_t annotations:\n\n - -Wbitwise added to CHECKFLAGS\n - old __bitwise renamed to __bitwise__\n - __bitwise defined to either __bitwise__ or nothing, depending on\n   __CHECK_ENDIAN__ being defined\n - gfp_t switched from __nocast to __bitwise__\n - force cast to gfp_t added to __GFP_... constants\n - new helper - gfp_zone(); extracts zone bits out of gfp_t value and casts\n   the result to int\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dd0fc66fb33cd610bc1a5db8a5e232d34879b4d7",
      "tree": "51f96a9db96293b352e358f66032e1f4ff79fafb",
      "parents": [
        "3b0e77bd144203a507eb191f7117d2c5004ea1de"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Fri Oct 07 07:46:04 2005 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 08 15:00:57 2005 -0700"
      },
      "message": "[PATCH] gfp flags annotations - part 1\n\n - added typedef unsigned int __nocast gfp_t;\n\n - replaced __nocast uses for gfp flags with gfp_t - it gives exactly\n   the same warnings as far as sparse is concerned, doesn\u0027t change\n   generated code (from gcc point of view we replaced unsigned int with\n   typedef) and documents what\u0027s going on far better.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5b952b3c143660b6436fcb299b249cefde61c18d",
      "tree": "8b0abd6eba79f4fa0f4144ca94d272a0ef826266",
      "parents": [
        "8d0986e289a4b018fec87fcc49538945fb401f37"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Tue Sep 13 01:25:08 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 13 08:22:28 2005 -0700"
      },
      "message": "[PATCH] Fix MPOL_F_VERIFY\n\nThere was a pretty bad bug in there that the code would always check the full\nVMA, not the range the user requested.\n\nWhen the VMA to be checked was merged with the previous VMA this could lead to\nspurious failures.\n\nSigned-off-by: \"Andi Kleen\" \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d42c69972b853fd33a26c8c7405624be41a22136",
      "tree": "2ac805f0da1279492939f8627103f5f9a040034c",
      "parents": [
        "56d8456b06ad1316bff3c75caed5e06e786f20d8"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed Jul 06 19:56:03 2005 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Sep 08 14:57:23 2005 -0700"
      },
      "message": "[PATCH] PCI: Run PCI driver initialization on local node\n\nRun PCI driver initialization on local node\n\nInstead of adding messy kmalloc_node()s everywhere run the\nPCI driver probe on the node local to the device.\n\nThis would not have helped for IDE, but should for\nother more clean drivers that do more initialization in probe().\nIt won\u0027t help for drivers that do most of the work\non first open (like many network drivers)\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "6e21c8f145f5052c1c2fb4a4b41bee01c848159b",
      "tree": "0b956cfbd67636c19be79fc0cbe0a5ed89fb6b9a",
      "parents": [
        "839b9685e80592809d6dfdd865986cd1b5ddc2fb"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Sat Sep 03 15:54:45 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:43 2005 -0700"
      },
      "message": "[PATCH] /proc/\u003cpid\u003e/numa_maps to show on which nodes pages reside\n\nThis patch was recently discussed on linux-mm:\nhttp://marc.theaimsgroup.com/?t\u003d112085728500002\u0026r\u003d1\u0026w\u003d2\n\nI inherited a large code base from Ray for page migration.  There was a\nsmall patch in there that I find to be very useful since it allows the\ndisplay of the locality of the pages in use by a process.  I reworked that\npatch and came up with a /proc/\u003cpid\u003e/numa_maps that gives more information\nabout the vma\u0027s of a process.  numa_maps is indexes by the start address\nfound in /proc/\u003cpid\u003e/maps.  F.e.  with this patch you can see the page use\nof the \"getty\" process:\n\nmargin:/proc/12008 # cat maps\n00000000-00004000 r--p 00000000 00:00 0\n2000000000000000-200000000002c000 r-xp 00000000 08:04 516                /lib/ld-2.3.3.so\n2000000000038000-2000000000040000 rw-p 00028000 08:04 516                /lib/ld-2.3.3.so\n2000000000040000-2000000000044000 rw-p 2000000000040000 00:00 0\n2000000000058000-2000000000260000 r-xp 00000000 08:04 54707842           /lib/tls/libc.so.6.1\n2000000000260000-2000000000268000 ---p 00208000 08:04 54707842           /lib/tls/libc.so.6.1\n2000000000268000-2000000000274000 rw-p 00200000 08:04 54707842           /lib/tls/libc.so.6.1\n2000000000274000-2000000000280000 rw-p 2000000000274000 00:00 0\n2000000000280000-20000000002b4000 r--p 00000000 08:04 9126923            /usr/lib/locale/en_US.utf8/LC_CTYPE\n2000000000300000-2000000000308000 r--s 00000000 08:04 60071467           /usr/lib/gconv/gconv-modules.cache\n2000000000318000-2000000000328000 rw-p 2000000000318000 00:00 0\n4000000000000000-4000000000008000 r-xp 00000000 08:04 29576399           /sbin/mingetty\n6000000000004000-6000000000008000 rw-p 00004000 08:04 29576399           /sbin/mingetty\n6000000000008000-600000000002c000 rw-p 6000000000008000 00:00 0          [heap]\n60000fff7fffc000-60000fff80000000 rw-p 60000fff7fffc000 00:00 0\n60000ffffff44000-60000ffffff98000 rw-p 60000ffffff44000 00:00 0          [stack]\na000000000000000-a000000000020000 ---p 00000000 00:00 0                  [vdso]\n\ncat numa_maps\n2000000000000000 default MaxRef\u003d43 Pages\u003d11 Mapped\u003d11 N0\u003d4 N1\u003d3 N2\u003d2 N3\u003d2\n2000000000038000 default MaxRef\u003d1 Pages\u003d2 Mapped\u003d2 Anon\u003d2 N0\u003d2\n2000000000040000 default MaxRef\u003d1 Pages\u003d1 Mapped\u003d1 Anon\u003d1 N0\u003d1\n2000000000058000 default MaxRef\u003d43 Pages\u003d61 Mapped\u003d61 N0\u003d14 N1\u003d15 N2\u003d16 N3\u003d16\n2000000000268000 default MaxRef\u003d1 Pages\u003d2 Mapped\u003d2 Anon\u003d2 N0\u003d2\n2000000000274000 default MaxRef\u003d1 Pages\u003d3 Mapped\u003d3 Anon\u003d3 N0\u003d3\n2000000000280000 default MaxRef\u003d8 Pages\u003d3 Mapped\u003d3 N0\u003d3\n2000000000300000 default MaxRef\u003d8 Pages\u003d2 Mapped\u003d2 N0\u003d2\n2000000000318000 default MaxRef\u003d1 Pages\u003d1 Mapped\u003d1 Anon\u003d1 N2\u003d1\n4000000000000000 default MaxRef\u003d6 Pages\u003d2 Mapped\u003d2 N1\u003d2\n6000000000004000 default MaxRef\u003d1 Pages\u003d1 Mapped\u003d1 Anon\u003d1 N0\u003d1\n6000000000008000 default MaxRef\u003d1 Pages\u003d1 Mapped\u003d1 Anon\u003d1 N0\u003d1\n60000fff7fffc000 default MaxRef\u003d1 Pages\u003d1 Mapped\u003d1 Anon\u003d1 N0\u003d1\n60000ffffff44000 default MaxRef\u003d1 Pages\u003d1 Mapped\u003d1 Anon\u003d1 N0\u003d1\n\ngetty uses ld.so.  The first vma is the code segment which is used by 43\nother processes and the pages are evenly distributed over the 4 nodes.\n\nThe second vma is the process specific data portion for ld.so.  This is\nonly one page.\n\nThe display format is:\n\n\u003cstartaddress\u003e\t Links to information in /proc/\u003cpid\u003e/map\n\u003cmemory policy\u003e  This can be \"default\" \"interleave\u003d{}\", \"prefer\u003d\u003cnode\u003e\" or \"bind\u003d{\u003czones\u003e}\"\nMaxRef\u003d\t\t\u003cmaximum reference to a page in this vma\u003e\nPages\u003d\t\t\u003cNr of pages in use\u003e\nMapped\u003d\t\t\u003cNr of pages with mapcount \u003e\nAnon\u003d\t\t\u003cnr of anonymous pages\u003e\nNx\u003d\t\t\u003cNr of pages on Node x\u003e\n\nThe content of the proc-file is self-evident.  If this would be tied into\nthe sparsemem system then the contents of this file would not be too\nuseful.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ba17101b41977f124948e0a7797fdcbb59e19f3e",
      "tree": "0d5e8b860e1294e4e38576624e1909075cb84ea6",
      "parents": [
        "690dbe1ced143876d8fa56b72310738dbe079d0a"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Mon Aug 01 21:11:43 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Aug 01 21:38:00 2005 -0700"
      },
      "message": "[PATCH] sys_set_mempolicy() doesnt check if mode \u003c 0\n\nA kernel BUG() is triggered by a call to set_mempolicy() with a negative\nfirst argument.  This is because the mode is declared as an int, and the\nvalidity check doesnt check \u003c 0 values.  Alternatively, mode could be\ndeclared as unsigned int or unsigned long.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "90c5029e471636f21221bf66b9a46ada2ab79a22",
      "tree": "b3a658d77b16fcecdc3c18bfe6eef679e203b757",
      "parents": [
        "c223695634fb360ed65e5a811161853a05e46962"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@muc.de",
        "time": "Wed Jul 27 11:43:50 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jul 27 16:25:52 2005 -0700"
      },
      "message": "[PATCH] Undo mempolicy shared policy rbtree microoptimization\n\nAll mempolicy changes must be inside the spinlock and readding the rb_erase\nprevents a crash while doing:\n\n\u003e echo \"1\" \u003e /tmp/numatest\n\u003e numactl --length\u003d0x4000 --shm /tmp/numatest --localalloc\n\u003e numactl --length\u003d0x2000 --offset\u003d0 --shm /tmp/numatest --membind\u003d0\n\u003e numactl --length\u003d0x2000 --offset\u003d0x2000 --shm /tmp/numatest --membind\u003d1\n\u003e ipcs\n\u003e ipcrm -M \"the_key_value_of_this_shm_area\"\n\nBased on a patch by John Blackwood\n\nCc: \u003cjohn.blackwood@ccur.com\u003e\nCc: \u003candrea@suse.de\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "91612e0df20a52f61db3cac280c153311b36df7a",
      "tree": "44a19e1d03147aabb842cbaac493a7213b836e4a",
      "parents": [
        "941150a326be88af245034ef4b3e9fa00229aa2d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jun 21 17:15:07 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 18:46:19 2005 -0700"
      },
      "message": "[PATCH] mbind: check_range use standard ptwalk\n\nStrict mbind\u0027s check for currently mapped pages being on node has been\nusing a slow loop which re-evaluates pgd, pud, pmd, pte for each entry:\nreplace that by a standard four-level page table walk like others in mm.\nSince mmap_sem is held for writing, page_table_lock can be taken at the\ninner level to limit latency.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.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": "941150a326be88af245034ef4b3e9fa00229aa2d",
      "tree": "03a058776dccd007150a3f57b1f36bf63b8f6a5d",
      "parents": [
        "400e65146c428d2ef677a927786fda2cec545a76"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jun 21 17:15:06 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 18:46:19 2005 -0700"
      },
      "message": "[PATCH] mbind: fix verify_pages pte_page\n\nStrict mbind\u0027s check that pages already mapped are on right node has been\nusing pte_page without checking if pfn_valid, and without page_table_lock\nto prevent spurious failures when try_to_unmap_one intervenes between the\npte_present and the pte_page.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.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": "e7c8d5c9955a4d2e88e36b640563f5d6d5aba48a",
      "tree": "f04f7b0d08cbc46d2f190a85904a3dd696dc6e88",
      "parents": [
        "63551ae0feaaa23807ebea60de1901564bbef32e"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "christoph@lameter.com",
        "time": "Tue Jun 21 17:14:47 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 18:46:16 2005 -0700"
      },
      "message": "[PATCH] node local per-cpu-pages\n\nThis patch modifies the way pagesets in struct zone are managed.\n\nEach zone has a per-cpu array of pagesets.  So any particular CPU has some\nmemory in each zone structure which belongs to itself.  Even if that CPU is\nnot local to that zone.\n\nSo the patch relocates the pagesets for each cpu to the node that is nearest\nto the cpu instead of allocating the pagesets in the (possibly remote) target\nzone.  This means that the operations to manage pages on remote zone can be\ndone with information available locally.\n\nWe play a macro trick so that non-NUMA pmachines avoid the additional\npointer chase on the page allocator fastpath.\n\nAIM7 benchmark on a 32 CPU SGI Altix\n\nw/o patches:\nTasks    jobs/min  jti  jobs/min/task      real       cpu\n    1      484.68  100       484.6769     12.01      1.97   Fri Mar 25 11:01:42 2005\n  100    27140.46   89       271.4046     21.44    148.71   Fri Mar 25 11:02:04 2005\n  200    30792.02   82       153.9601     37.80    296.72   Fri Mar 25 11:02:42 2005\n  300    32209.27   81       107.3642     54.21    451.34   Fri Mar 25 11:03:37 2005\n  400    34962.83   78        87.4071     66.59    588.97   Fri Mar 25 11:04:44 2005\n  500    31676.92   75        63.3538     91.87    742.71   Fri Mar 25 11:06:16 2005\n  600    36032.69   73        60.0545     96.91    885.44   Fri Mar 25 11:07:54 2005\n  700    35540.43   77        50.7720    114.63   1024.28   Fri Mar 25 11:09:49 2005\n  800    33906.70   74        42.3834    137.32   1181.65   Fri Mar 25 11:12:06 2005\n  900    34120.67   73        37.9119    153.51   1325.26   Fri Mar 25 11:14:41 2005\n 1000    34802.37   74        34.8024    167.23   1465.26   Fri Mar 25 11:17:28 2005\n\nwith slab API changes and pageset patch:\n\nTasks    jobs/min  jti  jobs/min/task      real       cpu\n    1      485.00  100       485.0000     12.00      1.96   Fri Mar 25 11:46:18 2005\n  100    28000.96   89       280.0096     20.79    150.45   Fri Mar 25 11:46:39 2005\n  200    32285.80   79       161.4290     36.05    293.37   Fri Mar 25 11:47:16 2005\n  300    40424.15   84       134.7472     43.19    438.42   Fri Mar 25 11:47:59 2005\n  400    39155.01   79        97.8875     59.46    590.05   Fri Mar 25 11:48:59 2005\n  500    37881.25   82        75.7625     76.82    730.19   Fri Mar 25 11:50:16 2005\n  600    39083.14   78        65.1386     89.35    872.79   Fri Mar 25 11:51:46 2005\n  700    38627.83   77        55.1826    105.47   1022.46   Fri Mar 25 11:53:32 2005\n  800    39631.94   78        49.5399    117.48   1169.94   Fri Mar 25 11:55:30 2005\n  900    36903.70   79        41.0041    141.94   1310.78   Fri Mar 25 11:57:53 2005\n 1000    36201.23   77        36.2012    160.77   1458.31   Fri Mar 25 12:00:34 2005\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Shobhit Dayal \u003cshobhit@calsoftinc.com\u003e\nSigned-off-by: Shai Fultheim \u003cShai@Scalex86.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "01424961e621737c638e489b6a0b5e6602b02612",
      "tree": "ae51380febe42e40d09375648b0d379325b905a7",
      "parents": [
        "bc86120a85ebf553180946e8854d1993f074e9f5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@www.linux.org.uk",
        "time": "Sun Apr 24 12:28:34 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun Apr 24 12:28:34 2005 -0700"
      },
      "message": "[PATCH] mempolicy.c GFP fix\n\nzonelist_policy() forgot to mask non-zone bits from gfp when comparing\nzone number with policy_zone. \n\nACKed-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@parcelfarce.linux.theplanet.co.uk\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"
    }
  ]
}
