)]}'
{
  "log": [
    {
      "commit": "641916881322a2dee5b120d509a3bdd05a502510",
      "tree": "79c0b1f449bcf09404ba932b07330a24bce4d00d",
      "parents": [
        "060d11b0b35d13eb2251fd08403d900b71df5791"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Aug 30 23:56:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Aug 31 01:42:22 2007 -0700"
      },
      "message": "process_zones(): fix recovery code\n\nDon\u0027t try to free memory which we didn\u0027t allocate.\n\nAcked-by: 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": "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": "a8bbf72ab9b3072ece630d97689145b1a2f01221",
      "tree": "4d55318fff1aecd3c5d2c1e877847bcb2347dd2e",
      "parents": [
        "252e48389ed30d7c77385fb92fca765a680de408"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jul 31 00:37:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 31 15:39:36 2007 -0700"
      },
      "message": "Do not trigger OOM-killer for high-order allocation failures\n\nout_of_memory() may be called when an allocation is failing and the direct\nreclaim is not making any progress.  This does not take into account the\nrequested order of the allocation.  If the request if for an order larger\nthan PAGE_ALLOC_COSTLY_ORDER, it is reasonable to fail the allocation\nbecause the kernel makes no guarantees about those allocations succeeding.\n\nThis false OOM situation can occur if a user is trying to grow the hugepage\npool in a script like;\n\n#!/bin/bash\nREQUIRED\u003d$1\necho 1 \u003e /proc/sys/vm/hugepages_treat_as_movable\necho $REQUIRED \u003e /proc/sys/vm/nr_hugepages\nACTUAL\u003d`cat /proc/sys/vm/nr_hugepages`\nwhile [ $REQUIRED -ne $ACTUAL ]; do\n\techo Huge page pool at $ACTUAL growing to $REQUIRED\n\techo $REQUIRED \u003e /proc/sys/vm/nr_hugepages\n\tACTUAL\u003d`cat /proc/sys/vm/nr_hugepages`\n\tsleep 1\ndone\n\nThis is a reasonable scenario when ZONE_MOVABLE is in use but triggers OOM\neasily on 2.6.23-rc1. This patch will fail an allocation for an order above\nPAGE_ALLOC_COSTLY_ORDER instead of killing processes and retrying.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "296699de6bdc717189a331ab6bbe90e05c94db06",
      "tree": "53c847ecc8cce11952502921844052e44ca60d5e",
      "parents": [
        "b0cb1a19d05b8ea8611a9ef48a17fe417f1832e6"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Jul 29 23:27:18 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jul 29 16:45:38 2007 -0700"
      },
      "message": "Introduce CONFIG_SUSPEND for suspend-to-Ram and standby\n\nIntroduce CONFIG_SUSPEND representing the ability to enter system sleep\nstates, such as the ACPI S3 state, and allow the user to choose SUSPEND\nand HIBERNATION independently of each other.\n\nMake HOTPLUG_CPU be selected automatically if SUSPEND or HIBERNATION has\nbeen chosen and the kernel is intended for SMP systems.\n\nAlso, introduce CONFIG_PM_SLEEP which is automatically selected if\nCONFIG_SUSPEND or CONFIG_HIBERNATION is set and use it to select the\ncode needed for both suspend and hibernation.\n\nThe top-level power management headers and the ACPI code related to\nsuspend and hibernation are modified to use the new definitions (the\nchanges in drivers/acpi/sleep/main.c are, mostly, moving code to reduce\nthe number of ifdefs).\n\nThere are many other files in which CONFIG_PM can be replaced with\nCONFIG_PM_SLEEP or even with CONFIG_SUSPEND, but they can be updated in\nthe future.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5445f956ec3c8c19b760775e9ff92a160e3a167",
      "tree": "034d62678f1e402e6d71b07ba0bf96544554a2ba",
      "parents": [
        "ee2077d97b2f392cfc0b884775ac58aa9b9b8c8f"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jul 26 10:41:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 26 11:35:19 2007 -0700"
      },
      "message": "Allow nodes to exist that only contain ZONE_MOVABLE\n\nWith the introduction of kernelcore\u003d, a configurable zone is created on\nrequest.  In some cases, this value will be small enough that some nodes\ncontain only ZONE_MOVABLE.  On some NUMA configurations when this occurs,\narch-independent zone-sizing will get the size of the memory holes within\nthe node incorrect.  The value of present_pages goes negative and the boot\nfails.\n\nThis patch fixes the bug in the calculation of the size of the hole.  The\ntest case is to boot test a NUMA machine with a low value of kernelcore\u003d\nbefore and after the patch is applied.  While this bug exists in early\nkernel it cannot be triggered in practice.\n\nThis patch has been boot-tested on a variety machines with and without\nkernelcore\u003d set.\n\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": "e228929bc257b963523ed75aa60d2ad77ece2189",
      "tree": "d72cf8e6d8a126792565549527efc2c9a6fcdcbe",
      "parents": [
        "8d1b87530e7df5c9541a69910ef7f786f034eca0"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 00:31:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jul 20 08:44:19 2007 -0700"
      },
      "message": "mm: fix memory hotplug oops from ZONE_MOVABLE changes.\n\nzone_movable_pfn is presently marked as __initdata and referenced from\nadjust_zone_range_for_zone_movable(), which in turn is referenced by\nzone_spanned_pages_in_node().  Both of these are __meminit annotated.  When\nmemory hotplug is enabled, this will oops on a hot-add, due to\nzone_movable_pfn having been freed.\n\n__meminitdata annotation gives the desired behaviour.\n\nThis will only impact platforms that enable both memory hotplug\nand ARCH_POPULATES_NODE_MAP.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe3cba17c49471e99d3421e675fc8b3deaaf0b70",
      "tree": "df696c4584c6db2e439f068d2474fcb946ca587d",
      "parents": [
        "d8983910a4045fa21022cfccf76ed13eb40fd7f5"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Thu Jul 19 01:48:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "mm: share PG_readahead and PG_reclaim\n\nShare the same page flag bit for PG_readahead and PG_reclaim.\n\nOne is used only on file reads, another is only for emergency writes.  One\nis used mostly for fresh/young pages, another is for old pages.\n\nCombinations of possible interactions are:\n\na) clear PG_reclaim \u003d\u003e implicit clear of PG_readahead\n\tit will delay an asynchronous readahead into a synchronous one\n\tit actually does _good_ for readahead:\n\t\tthe pages will be reclaimed soon, it\u0027s readahead thrashing!\n\t\tin this case, synchronous readahead makes more sense.\n\nb) clear PG_readahead \u003d\u003e implicit clear of PG_reclaim\n\tone(and only one) page will not be reclaimed in time\n\tit can be avoided by checking PageWriteback(page) in readahead first\n\nc) set PG_reclaim \u003d\u003e implicit set of PG_readahead\n\twill confuse readahead and make it restart the size rampup process\n\tit\u0027s a trivial problem, and can mostly be avoided by checking\n\tPageWriteback(page) first in readahead\n\nd) set PG_readahead \u003d\u003e implicit set of PG_reclaim\n\tPG_readahead will never be set on already cached pages.\n\tPG_reclaim will always be cleared on dirtying a page.\n\tso not a problem.\n\nIn summary,\n\ta)   we get better behavior\n\tb,d) possible interactions can be avoided\n\tc)   racy condition exists that might affect readahead, but the chance\n\t     is _really_ low, and the hurt on readahead is trivial.\n\nCompound pages also use PG_reclaim, but for now they do not interact with\nreclaim/readahead code.\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d77c2d7cc5126639a47d73300b40d461f2811a0f",
      "tree": "d02b32ca92fde9a04be9bee0f0b7c8961479448c",
      "parents": [
        "2ba2d00363975242dee9bb22cf798b487e3cd61e"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Thu Jul 19 01:47:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:43 2007 -0700"
      },
      "message": "readahead: introduce PG_readahead\n\nIntroduce a new page flag: PG_readahead.\n\nIt acts as a look-ahead mark, which tells the page reader: Hey, it\u0027s time to\ninvoke the read-ahead logic.  For the sake of I/O pipelining, don\u0027t wait until\nit runs out of cached pages!\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Steven Pratt \u003cslpratt@austin.ibm.com\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2f1a551dea8b37c2e0cb886885c250fb703e9d8",
      "tree": "11a5f256703d856017ceb2268bd02b7b510dee30",
      "parents": [
        "1e5140279f31e47d58ed6036ee61ba7a65710e63"
      ],
      "author": {
        "name": "Meelap Shah",
        "email": "meelap@umich.edu",
        "time": "Tue Jul 17 04:04:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:07 2007 -0700"
      },
      "message": "knfsd: nfsd4: vary maximum delegation limit based on RAM size\n\nOur original NFSv4 delegation policy was to give out a read delegation on any\nopen when it was possible to.\n\nSince the lifetime of a delegation isn\u0027t limited to that of an open, a client\nmay quite reasonably hang on to a delegation as long as it has the inode\ncached.  This becomes an obvious problem the first time a client\u0027s inode cache\napproaches the size of the server\u0027s total memory.\n\nOur first quick solution was to add a hard-coded limit.  This patch makes a\nmild incremental improvement by varying that limit according to the server\u0027s\ntotal memory size, allowing at most 4 delegations per megabyte of RAM.\n\nMy quick back-of-the-envelope calculation finds that in the worst case (where\nevery delegation is for a different inode), a delegation could take about\n1.5K, which would make the worst case usage about 6% of memory.  The new limit\nworks out to be about the same as the old on a 1-gig server.\n\n[akpm@linux-foundation.org: Don\u0027t needlessly bloat vmlinux]\n[akpm@linux-foundation.org: Make it right for highmem machines]\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5ad333eb66ff1e52a87639822ae088577669dcf9",
      "tree": "addae6bbd19585f19328f309924d06d647e8f2b7",
      "parents": [
        "7e63efef857575320fb413fbc3d0ee704b72845f"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Tue Jul 17 04:03:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:22:59 2007 -0700"
      },
      "message": "Lumpy Reclaim V4\n\nWhen we are out of memory of a suitable size we enter reclaim.  The current\nreclaim algorithm targets pages in LRU order, which is great for fairness at\norder-0 but highly unsuitable if you desire pages at higher orders.  To get\npages of higher order we must shoot down a very high proportion of memory;\n\u003e95% in a lot of cases.\n\nThis patch set adds a lumpy reclaim algorithm to the allocator.  It targets\ngroups of pages at the specified order anchored at the end of the active and\ninactive lists.  This encourages groups of pages at the requested orders to\nmove from active to inactive, and active to free lists.  This behaviour is\nonly triggered out of direct reclaim when higher order pages have been\nrequested.\n\nThis patch set is particularly effective when utilised with an\nanti-fragmentation scheme which groups pages of similar reclaimability\ntogether.\n\nThis patch set is based on Peter Zijlstra\u0027s lumpy reclaim V2 patch which forms\nthe foundation.  Credit to Mel Gorman for sanitity checking.\n\nMel said:\n\n  The patches have an application with hugepage pool resizing.\n\n  When lumpy-reclaim is used used with ZONE_MOVABLE, the hugepages pool can\n  be resized with greater reliability.  Testing on a desktop machine with 2GB\n  of RAM showed that growing the hugepage pool with ZONE_MOVABLE on it\u0027s own\n  was very slow as the success rate was quite low.  Without lumpy-reclaim,\n  each attempt to grow the pool by 100 pages would yield 1 or 2 hugepages.\n  With lumpy-reclaim, getting 40 to 70 hugepages on each attempt was typical.\n\n[akpm@osdl.org: ia64 pfn_to_nid fixes and loop cleanup]\n[bunk@stusta.de: static declarations for internal functions]\n[a.p.zijlstra@chello.nl: initial lumpy V2 implementation]\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Bob Picco \u003cbob.picco@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": "7e63efef857575320fb413fbc3d0ee704b72845f",
      "tree": "ce33c10e5f5d9ea16b0e6944d6994b1f9cc22040",
      "parents": [
        "ed7ed365172e27b0efe9d43cc962723c7193e34e"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jul 17 04:03:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:22:59 2007 -0700"
      },
      "message": "Add a movablecore\u003d parameter for sizing ZONE_MOVABLE\n\nThis patch adds a new parameter for sizing ZONE_MOVABLE called\nmovablecore\u003d.  While kernelcore\u003d is used to specify the minimum amount of\nmemory that must be available for all allocation types, movablecore\u003d is\nused to specify the minimum amount of memory that is used for migratable\nallocations.  The amount of memory used for migratable allocations\ndetermines how large the huge page pool could be dynamically resized to at\nruntime for example.\n\nHow movablecore is actually handled is that the total number of pages in\nthe system is calculated and a value is set for kernelcore that is\n\nkernelcore \u003d\u003d totalpages - movablecore\n\nBoth kernelcore\u003d and movablecore\u003d can be safely specified at the same time.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-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": "ed7ed365172e27b0efe9d43cc962723c7193e34e",
      "tree": "6c22daf6908f92c64aae2b425e6383fe0ed404ac",
      "parents": [
        "396faf0303d273219db5d7eb4a2879ad977ed185"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jul 17 04:03:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:22:59 2007 -0700"
      },
      "message": "handle kernelcore\u003d: generic\n\nThis patch adds the kernelcore\u003d parameter for x86.\n\nOnce all patches are applied, a new command-line parameter exist and a new\nsysctl.  This patch adds the necessary documentation.\n\nFrom: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\n\n  When \"kernelcore\" boot option is specified, kernel can\u0027t boot up on ia64\n  because of an infinite loop.  In addition, the parsing code can be handled\n  in an architecture-independent manner.\n\n  This patch uses common code to handle the kernelcore\u003d parameter.  It is\n  only available to architectures that support arch-independent zone-sizing\n  (i.e.  define CONFIG_ARCH_POPULATES_NODE_MAP).  Other architectures will\n  ignore the boot parameter.\n\n[bunk@stusta.de: make cmdline_parse_kernelcore() static]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nAcked-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": "2a1e274acf0b1c192face19a4be7c12d4503eaaf",
      "tree": "f7e98e1fe19d38bb10bf178fb8f8ed1789b659b2",
      "parents": [
        "769848c03895b63e5662eb7e4ec8c4866f7d0183"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jul 17 04:03:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:22:59 2007 -0700"
      },
      "message": "Create the ZONE_MOVABLE zone\n\nThe following 8 patches against 2.6.20-mm2 create a zone called ZONE_MOVABLE\nthat is only usable by allocations that specify both __GFP_HIGHMEM and\n__GFP_MOVABLE.  This has the effect of keeping all non-movable pages within a\nsingle memory partition while allowing movable allocations to be satisfied\nfrom either partition.  The patches may be applied with the list-based\nanti-fragmentation patches that groups pages together based on mobility.\n\nThe size of the zone is determined by a kernelcore\u003d parameter specified at\nboot-time.  This specifies how much memory is usable by non-movable\nallocations and the remainder is used for ZONE_MOVABLE.  Any range of pages\nwithin ZONE_MOVABLE can be released by migrating the pages or by reclaiming.\n\nWhen selecting a zone to take pages from for ZONE_MOVABLE, there are two\nthings to consider.  First, only memory from the highest populated zone is\nused for ZONE_MOVABLE.  On the x86, this is probably going to be ZONE_HIGHMEM\nbut it would be ZONE_DMA on ppc64 or possibly ZONE_DMA32 on x86_64.  Second,\nthe amount of memory usable by the kernel will be spread evenly throughout\nNUMA nodes where possible.  If the nodes are not of equal size, the amount of\nmemory usable by the kernel on some nodes may be greater than others.\n\nBy default, the zone is not as useful for hugetlb allocations because they are\npinned and non-migratable (currently at least).  A sysctl is provided that\nallows huge pages to be allocated from that zone.  This means that the huge\npage pool can be resized to the size of ZONE_MOVABLE during the lifetime of\nthe system assuming that pages are not mlocked.  Despite huge pages being\nnon-movable, we do not introduce additional external fragmentation of note as\nhuge pages are always the largest contiguous block we care about.\n\nCredit goes to Andy Whitcroft for catching a large variety of problems during\nreview of the patches.\n\nThis patch creates an additional zone, ZONE_MOVABLE.  This zone is only usable\nby allocations which specify both __GFP_HIGHMEM and __GFP_MOVABLE.  Hot-added\nmemory continues to be placed in their existing destination as there is no\nmechanism to redirect them to a specific zone.\n\n[y-goto@jp.fujitsu.com: Fix section mismatch of memory hotplug related code]\n[akpm@linux-foundation.org: various fixes]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54114994f4de7e8076fc250e44501e55e19b75b5",
      "tree": "b0b0c2b5c3cf1c0daa7c6db7911c42dcf912f181",
      "parents": [
        "203a2935c734c054bfd4665fb5d8835498af50a8"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Sun Jul 15 23:40:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:45 2007 -0700"
      },
      "message": "fault-injection: add min-order parameter to fail_page_alloc\n\nLimiting smaller allocation failures by fault injection helps to find real\npossible bugs.  Because higher order allocations are likely to fail and\nzero-order allocations are not likely to fail.\n\nThis patch adds min-order parameter to fail_page_alloc.  It specifies the\nminimum page allocation order to be injected failures.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b49ad484c54116862d717ffafcab1c9a46600b48",
      "tree": "d081db8e0026022d13cc08a6c594c9471c74e1d4",
      "parents": [
        "6193a2ff180920f84ee06977165ebf32431fc2d2"
      ],
      "author": {
        "name": "Dan Aloni",
        "email": "da-x@monatomic.org",
        "time": "Sun Jul 15 23:38:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:36 2007 -0700"
      },
      "message": "mm/page_alloc.c: lower printk severity\n\nSigned-off-by: Dan Aloni \u003cda-x@monatomic.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ea6e6887dad1fd44e6d5020a0fd355af4f2b6b3",
      "tree": "184e6c217acd1013b60f439bb7cb8b400525ca43",
      "parents": [
        "8f0accc8627043702e6ea2bb8b9aa3a171ef8393"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Sun Jul 15 23:38:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:36 2007 -0700"
      },
      "message": "mm: more __meminit annotations\n\nCurrently zone_spanned_pages_in_node() and zone_absent_pages_in_node() are\nnon-static for ARCH_POPULATES_NODE_MAP and static otherwise.  However, only\nthe non-static versions are __meminit annotated, despite only being called\nfrom __meminit functions in either case.\n\nzone_init_free_lists() is currently non-static and not __meminit annotated\neither, despite only being called once in the entire tree by\ninit_currently_empty_zone(), which too is __meminit.  So make it static and\nproperly annotated.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "98011f569e2ae1e4ae394f6e23faa16676d50de4",
      "tree": "6cde069a3fd943c36d4029b21d8b7ad4c24811f6",
      "parents": [
        "140d5a49046b6d73dce4a4229e88c000a99ee126"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "jbeulich@novell.com",
        "time": "Sun Jul 15 23:38:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:36 2007 -0700"
      },
      "message": "mm: fix improper .init-type section references\n\n.. which modpost started warning about.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1037b83bd04e31449dc9323f1e8ddada4264ef66",
      "tree": "aad6be88185e675503847d3cf43a257ceb93d0f9",
      "parents": [
        "b92151bab91ef906378d3e0e7128d55dd641e966"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun Jul 15 23:38:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:35 2007 -0700"
      },
      "message": "MM: alloc_large_system_hash() can free some memory for non power-of-two bucketsize\n\nalloc_large_system_hash() is called at boot time to allocate space for\nseveral large hash tables.\n\nLately, TCP hash table was changed and its bucketsize is not a power-of-two\nanymore.\n\nOn most setups, alloc_large_system_hash() allocates one big page (order \u003e\n0) with __get_free_pages(GFP_ATOMIC, order).  This single high_order page\nhas a power-of-two size, bigger than the needed size.\n\nWe can free all pages that wont be used by the hash table.\n\nOn a 1GB i386 machine, this patch saves 128 KB of LOWMEM memory.\n\nTCP established hash table entries: 32768 (order: 6, 393216 bytes)\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0c0b2b808f232741eadac272bd4bc51f18df0f4",
      "tree": "c2568efdc496cc165a4e72d8aa2542b22035e342",
      "parents": [
        "18a8bd949d6adb311ea816125ff65050df1f3f6e"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Sun Jul 15 23:38:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:35 2007 -0700"
      },
      "message": "change zonelist order: zonelist order selection logic\n\nMake zonelist creation policy selectable from sysctl/boot option v6.\n\nThis patch makes NUMA\u0027s zonelist (of pgdat) order selectable.\nAvailable order are Default(automatic)/ Node-based / Zone-based.\n\n[Default Order]\nThe kernel selects Node-based or Zone-based order automatically.\n\n[Node-based Order]\nThis policy treats the locality of memory as the most important parameter.\nZonelist order is created by each zone\u0027s locality. This means lower zones\n(ex. ZONE_DMA) can be used before higher zone (ex. ZONE_NORMAL) exhausion.\nIOW. ZONE_DMA will be in the middle of zonelist.\ncurrent 2.6.21 kernel uses this.\n\nPros.\n * A user can expect local memory as much as possible.\nCons.\n * lower zone will be exhansted before higher zone. This may cause OOM_KILL.\n\nMaybe suitable if ZONE_DMA is relatively big and you never see OOM_KILL\nbecause of ZONE_DMA exhaution and you need the best locality.\n\n(example)\nassume 2 node NUMA. node(0) has ZONE_DMA/ZONE_NORMAL, node(1) has ZONE_NORMAL.\n\n*node(0)\u0027s memory allocation order:\n\n node(0)\u0027s NORMAL -\u003e node(0)\u0027s DMA -\u003e node(1)\u0027s NORMAL.\n\n*node(1)\u0027s memory allocation order:\n\n node(1)\u0027s NORMAL -\u003e node(0)\u0027s NORMAL -\u003e node(0)\u0027s DMA.\n\n[Zone-based order]\nThis policy treats the zone type as the most important parameter.\nZonelist order is created by zone-type order. This means lower zone\nnever be used bofere higher zone exhaustion.\nIOW. ZONE_DMA will be always at the tail of zonelist.\n\nPros.\n * OOM_KILL(bacause of lower zone) occurs only if the whole zones are exhausted.\nCons.\n * memory locality may not be best.\n\n(example)\nassume 2 node NUMA. node(0) has ZONE_DMA/ZONE_NORMAL, node(1) has ZONE_NORMAL.\n\n*node(0)\u0027s memory allocation order:\n\n node(0)\u0027s NORMAL -\u003e node(1)\u0027s NORMAL -\u003e node(0)\u0027s DMA.\n\n*node(1)\u0027s memory allocation order:\n\n node(1)\u0027s NORMAL -\u003e node(0)\u0027s NORMAL -\u003e node(0)\u0027s DMA.\n\nbootoption \"numa_zonelist_order\u003d\" and proc/sysctl is supporetd.\n\ncommand:\n%echo N \u003e /proc/sys/vm/numa_zonelist_order\n\nWill rebuild zonelist in Node-based order.\n\ncommand:\n%echo Z \u003e /proc/sys/vm/numa_zonelist_order\n\nWill rebuild zonelist in Zone-based order.\n\nThanks to Lee Schermerhorn, he gives me much help and codes.\n\n[Lee.Schermerhorn@hp.com: add check_highest_zone to build_zonelists_in_zone_order]\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"jesse.barnes@intel.com\" \u003cjesse.barnes@intel.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": "d09c6b809432668371b5de9102f4f9aa6a7c79cc",
      "tree": "23a80218149ce732dfab1afca6abd3f370bc0131",
      "parents": [
        "902233ee494f9d9da6dbb818316fcbf892bebbed"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Thu Jun 14 15:13:16 2007 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jun 15 16:18:08 2007 -0700"
      },
      "message": "mm: Fix memory/cpu hotplug section mismatch and oops.\n\nWhen building with memory hotplug enabled and cpu hotplug disabled, we\nend up with the following section mismatch:\n\nWARNING: mm/built-in.o(.text+0x4e58): Section mismatch: reference to\n.init.text: (between \u0027free_area_init_node\u0027 and \u0027__build_all_zonelists\u0027)\n\nThis happens as a result of:\n\n        -\u003e free_area_init_node()\n          -\u003e free_area_init_core()\n            -\u003e zone_pcp_init() \u003c-- all __meminit up to this point\n              -\u003e zone_batchsize() \u003c-- marked as __cpuinit                     fo\n\nThis happens because CONFIG_HOTPLUG_CPU\u003dn sets __cpuinit to __init, but\nCONFIG_MEMORY_HOTPLUG\u003dy unsets __meminit.\n\nChanging zone_batchsize() to __devinit fixes this.\n\n__devinit is the only thing that is common between CONFIG_HOTPLUG_CPU\u003dy and\nCONFIG_MEMORY_HOTPLUG\u003dy. In the long run, perhaps this should be moved to\nanother section identifier completely. Without this, memory hot-add\nof offline nodes (via hotadd_new_pgdat()) will oops if CPU hotplug is\nnot also enabled.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nAcked-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n\n--\n\n mm/page_alloc.c |    2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n"
    },
    {
      "commit": "12d810c1b8c2b913d48e629e2b5c01d105029839",
      "tree": "b39162d3168f6173af3d0e5790e16eb45a70dfaf",
      "parents": [
        "00c541eae7a477e3d1adb1ebf27cccc0bdb5f824"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Thu May 31 00:40:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 31 07:58:14 2007 -0700"
      },
      "message": "m68k: discontinuous memory support\n\nFix support for discontinuous memory\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "418508c13222ddba475873ea95c8aeadd26104f2",
      "tree": "6056f5d28f1a0ac8474a275680e3991cc315ed30",
      "parents": [
        "ead5f0b5fa41dd3649a44bfc922d06641ff3dbcf"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed May 23 13:57:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:13 2007 -0700"
      },
      "message": "fix unused setup_nr_node_ids\n\nmm/page_alloc.c:931: warning: \u0027setup_nr_node_ids\u0027 defined but not used\n\nThis is now the only (!) compiler warning I get in my UML build :)\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "577a32f620271416d05f852477151fb51c790bc6",
      "tree": "9c4f219f59fc8117aa7d376d130d57f1ac841a8e",
      "parents": [
        "92080309df1975729a9f8b45fd56528817e34db8"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Thu May 17 23:29:25 2007 +0200"
      },
      "committer": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Sat May 19 09:11:58 2007 +0200"
      },
      "message": "mm: fix section mismatch warnings\n\nmodpost had two cases hardcoded for mm/\nShift over to __init_refok and kill the\nhardcoded function names in modpost.\n\nThis has the drawback that the functions\nwill always be kept no matter configuration.\nWith previous code the function were placed in\ninit section if configuration allowed it.\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "6f076f5dd9d227cea2704061048894b00cc0d62b",
      "tree": "0c6be41a5d1d77ef78e76ba9d1861a062aef55bd",
      "parents": [
        "a6a62b69b9f1b0cec0a119c5f4cd2f17d091e8f5"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Thu May 10 03:15:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 10 09:26:52 2007 -0700"
      },
      "message": "early_pfn_to_nid needs to be __meminit\n\nSince it is referenced by memmap_init_zone (which is __meminit) via the\nearly_pfn_in_nid macro when CONFIG_NODES_SPAN_OTHER_NODES is set (which\nbasically means PowerPC 64).\n\nThis removes a section mismatch warning in those circumstances.\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4037d452202e34214e8a939fa5621b2b3bbb45b7",
      "tree": "31b59c0ca94fba4d53b6738b0bad3d1e9fde3063",
      "parents": [
        "77461ab33229d48614402decfb1b2eaa6d446861"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:35:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Move remote node draining out of slab allocators\n\nCurrently the slab allocators contain callbacks into the page allocator to\nperform the draining of pagesets on remote nodes.  This requires SLUB to have\na whole subsystem in order to be compatible with SLAB.  Moving node draining\nout of the slab allocators avoids a section of code in SLUB.\n\nMove the node draining so that is is done when the vm statistics are updated.\nAt that point we are already touching all the cachelines with the pagesets of\na processor.\n\nAdd a expire counter there.  If we have to update per zone or global vm\nstatistics then assume that the pageset will require subsequent draining.\n\nThe expire counter will be decremented on each vm stats update pass until it\nreaches zero.  Then we will drain one batch from the pageset.  The draining\nwill cause vm counter updates which will then cause another expiration until\nthe pcp is empty.  So we will drain a batch every 3 seconds.\n\nNote that remote node draining is a somewhat esoteric feature that is required\non large NUMA systems because otherwise significant portions of system memory\ncan become trapped in pcp queues.  The number of pcp is determined by the\nnumber of processors and nodes in a system.  A system with 4 processors and 2\nnodes has 8 pcps which is okay.  But a system with 1024 processors and 512\nnodes has 512k pcps with a high potential for large amount of memory being\ncaught in them.\n\nSigned-off-by: 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": "8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d",
      "tree": "f4e305edaedbde05774bb1e4acd89a9475661d2e",
      "parents": [
        "f37bc2712b54ec641e0c0c8634f1a4b61d9956c0"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 09 02:35:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Add suspend-related notifications for CPU hotplug\n\nSince nonboot CPUs are now disabled after tasks and devices have been\nfrozen and the CPU hotplug infrastructure is used for this purpose, we need\nspecial CPU hotplug notifications that will help the CPU-hotplug-aware\nsubsystems distinguish normal CPU hotplug events from CPU hotplug events\nrelated to a system-wide suspend or resume operation in progress.  This\npatch introduces such notifications and causes them to be used during\nsuspend and resume transitions.  It also changes all of the\nCPU-hotplug-aware subsystems to take these notifications into consideration\n(for now they are handled in the same way as the corresponding \"normal\"\nones).\n\n[oleg@tv-sign.ru: cleanups]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72280ede316911fd5a82ef78d12a6705b1007d36",
      "tree": "c6cdec169d300f6967c47771917d99035423bf91",
      "parents": [
        "a3142c8e1dd57ff48040bdb3478cff9312543dc3"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Tue May 08 00:23:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:57 2007 -0700"
      },
      "message": "Add white list into modpost.c for memory hotplug code and ia64\u0027s machvec section\n\nThis patch is add white list into modpost.c for some functions and\nia64\u0027s section to fix section mismatchs.\n\n  sparse_index_alloc() and zone_wait_table_init() calls bootmem allocator\n  at boot time, and kmalloc/vmalloc at hotplug time. If config\n  memory hotplug is on, there are references of bootmem allocater(init text)\n  from them (normal text). This is cause of section mismatch.\n\n  Bootmem is called by many functions and it must be\n  used only at boot time. I think __init of them should keep for\n  section mismatch check. So, I would like to register sparse_index_alloc()\n  and zone_wait_table_init() into white list.\n\n  In addition, ia64\u0027s .machvec section is function table of some platform\n  dependent code. It is mixture of .init.text and normal text. These\n  reference of __init functions are valid too.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3142c8e1dd57ff48040bdb3478cff9312543dc3",
      "tree": "14beeb03421338b917a956e9269a2ce95e0f62cf",
      "parents": [
        "0ceb331433e8aad9c5f441a965d7c681f8b9046f"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Tue May 08 00:23:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:57 2007 -0700"
      },
      "message": "Fix section mismatch of memory hotplug related code.\n\nThis is to fix many section mismatches of code related to memory hotplug.\nI checked compile with memory hotplug on/off on ia64 and x86-64 box.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7be9823491ecbaf9700d7d3502cb4b4dd0ed868a",
      "tree": "10f606c59837d851376823dae5d8faf50a51bde8",
      "parents": [
        "433ecb4ab312f873870b67ee374502e84f6dcf92"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun May 06 14:50:42 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "swsusp: use inline functions for changing page flags\n\nReplace direct invocations of SetPageNosave(), SetPageNosaveFree() etc.  with\ncalls to inline functions that can be changed in subsequent patches without\nmodifying the code calling them.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6d7779538f765963ced45a3fa4bed7ba8d2c277d",
      "tree": "07d47e6ff1ab30309004e2ba0674dcabd83945c1",
      "parents": [
        "d85f33855c303acfa87fa457157cef755b6087df"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "mm: optimize compound_head() by avoiding a shared page flag\n\nThe patch adds PageTail(page) and PageHead(page) to check if a page is the\nhead or the tail of a compound page.  This is done by masking the two bits\ndescribing the state of a compound page and then comparing them.  So one\ncomparision and a branch instead of two bit checks and two branches.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d85f33855c303acfa87fa457157cef755b6087df",
      "tree": "f1184a1a24b432727b0399594ede37c7539db888",
      "parents": [
        "30520864839dc796fd314812e7036e754880b47d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "Make page-\u003eprivate usable in compound pages\n\nIf we add a new flag so that we can distinguish between the first page and the\ntail pages then we can avoid to use page-\u003eprivate in the first page.\npage-\u003eprivate \u003d\u003d page for the first page, so there is no real information in\nthere.\n\nFreeing up page-\u003eprivate makes the use of compound pages more transparent.\nThey become more usable like real pages.  Right now we have to be careful f.e.\n if we are going beyond PAGE_SIZE allocations in the slab on i386 because we\ncan then no longer use the private field.  This is one of the issues that\ncause us not to support debugging for page size slabs in SLAB.\n\nHaving page-\u003eprivate available for SLUB would allow more meta information in\nthe page struct.  I can probably avoid the 16 bit ints that I have in there\nright now.\n\nAlso if page-\u003eprivate is available then a compound page may be equipped with\nbuffer heads.  This may free up the way for filesystems to support larger\nblocks than page size.\n\nWe add PageTail as an alias of PageReclaim.  Compound pages cannot currently\nbe reclaimed.  Because of the alias one needs to check PageCompound first.\n\nThe RFC for the this approach was discussed at\nhttp://marc.info/?t\u003d117574302800001\u0026r\u003d1\u0026w\u003d2\n\n[nacc@us.ibm.com: fix hugetlbfs]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3b1d92c56514987010bb0201b5c71aeb633fc4f8",
      "tree": "f31a72692c35eb27fc94590964ba389776c0439f",
      "parents": [
        "8da3430d8a7f885c2bf65121181d76c9d290a86e"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Sun May 06 14:49:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "Do not disable interrupts when reading min_free_kbytes\n\nThe sysctl handler for min_free_kbytes calls setup_per_zone_pages_min() on\nread or write.  This function iterates through every zone and calls\nspin_lock_irqsave() on the zone LRU lock.  When reading min_free_kbytes,\nthis is a total waste of time that disables interrupts on the local\nprocessor.  It might even be noticable machines with large numbers of zones\nif a process started constantly reading min_free_kbytes.\n\nThis patch only calls setup_per_zone_pages_min() only on write. Tested on\nan x86 laptop and it did the right thing.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "14e072984179d3d421bf9ab75cc67e0961742841",
      "tree": "65a5a6f7d9756b8e7010278b58908d04da257a28",
      "parents": [
        "ac267728f13c55017ed5ee243c9c3166e27ab929"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Sun May 06 14:49:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "add pfn_valid_within helper for sub-MAX_ORDER hole detection\n\nGenerally we work under the assumption that memory the mem_map array is\ncontigious and valid out to MAX_ORDER_NR_PAGES block of pages, ie.  that if we\nhave validated any page within this MAX_ORDER_NR_PAGES block we need not check\nany other.  This is not true when CONFIG_HOLES_IN_ZONE is set and we must\ncheck each and every reference we make from a pfn.\n\nAdd a pfn_valid_within() helper which should be used when scanning pages\nwithin a MAX_ORDER_NR_PAGES block when we have already checked the validility\nof the block normally with pfn_valid().  This can then be optimised away when\nwe do not have holes within a MAX_ORDER_NR_PAGES block of pages.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Bob Picco \u003cbob.picco@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": "476f35348eb8d2a827765992899fea78b7dcc46f",
      "tree": "81dbace9de3d4ffa3ecc67bffe265134962117bd",
      "parents": [
        "aee16b3cee2746880e40945a9b5bff4f309cfbc4"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@engr.sgi.com",
        "time": "Sun May 06 14:48:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:51 2007 -0700"
      },
      "message": "Safer nr_node_ids and nr_node_ids determination and initial values\n\nThe nr_cpu_ids value is currently only calculated in smp_init.  However, it\nmay be needed before (SLUB needs it on kmem_cache_init!) and other kernel\ncomponents may also want to allocate dynamically sized per cpu array before\nsmp_init.  So move the determination of possible cpus into sched_init()\nwhere we already loop over all possible cpus early in boot.\n\nAlso initialize both nr_node_ids and nr_cpu_ids with the highest value they\ncould take.  If we have accidental users before these values are determined\nthen the current valud of 0 may cause too small per cpu and per node arrays\nto be allocated.  If it is set to the maximum possible then we only waste\nsome memory for early boot users.\n\nSigned-off-by: 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": "5409bae07a63630ba5a40f3f00b7f3e6d7eceedd",
      "tree": "cc8837a90476091fc1fec7f20e4a2ca99ffbae41",
      "parents": [
        "93a6fefe2f6fc380870c0985b246bec7f37a06f7"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Wed Feb 28 20:12:27 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Mar 01 14:53:37 2007 -0800"
      },
      "message": "[PATCH] Rename PG_checked to PG_owner_priv_1\n\nRename PG_checked to PG_owner_priv_1 to reflect its availablilty as a\nprivate flag for use by the owner/allocator of the page.  In the case of\npagecache pages (which might be considered to be owned by the mm),\nfilesystems may use the flag.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8ef8286689c6b5bc76212437b85bdd2ba749ee44",
      "tree": "9ef088691bd06699adc6c7875bc1b2e6e96ce066",
      "parents": [
        "53b8a315b76a3f3c70a5644976c0095460eb13d8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Feb 20 13:57:52 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 20 17:10:13 2007 -0800"
      },
      "message": "[PATCH] slab: reduce size of alien cache to cover only possible nodes\n\nThe alien cache is a per cpu per node array allocated for every slab on the\nsystem.  Currently we size this array for all nodes that the kernel does\nsupport.  For IA64 this is 1024 nodes.  So we allocate an array with 1024\nobjects even if we only boot a system with 4 nodes.\n\nThis patch uses \"nr_node_ids\" to determine the number of possible nodes\nsupported by a hardware configuration and only allocates an alien cache\nsized for possible nodes.\n\nThe initialization of nr_node_ids occurred too late relative to the bootstrap\nof the slab allocator and so I moved the setup_nr_node_ids() into\nfree_area_init_nodes().\n\nSigned-off-by: 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": "74c7aa8b8581e0ba8d6d17c623b9279aaabbb0cf",
      "tree": "e8bfdd1d4bd5a7d4ee0e0bbf83c45c9f2b5deb59",
      "parents": [
        "5ec553a90448b3edbd26c1acc72464f877614bfa"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Feb 20 13:57:51 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 20 17:10:13 2007 -0800"
      },
      "message": "[PATCH] Replace highest_possible_node_id() with nr_node_ids\n\nhighest_possible_node_id() is currently used to calculate the last possible\nnode idso that the network subsystem can figure out how to size per node\narrays.\n\nI think having the ability to determine the maximum amount of nodes in a\nsystem at runtime is useful but then we should name this entry\ncorrespondingly, it should return the number of node_ids, and the the value\nneeds to be setup only once on bootup.  The node_possible_map does not\nchange after bootup.\n\nThis patch introduces nr_node_ids and replaces the use of\nhighest_possible_node_id().  nr_node_ids is calculated on bootup when the\npage allocators pagesets are initialized.\n\n[deweerdt@free.fr: fix oops]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Frederik Deweerdt \u003cfrederik.deweerdt@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4b51d66989218aad731a721b5b28c79bf5388c09",
      "tree": "8ff7acbd219f699c20c2f1fd201ffb3db5a64062",
      "parents": [
        "66701b1499a3ff11882c8c4aef36e8eac86e17b1"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Feb 10 01:43:10 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: optional ZONE_DMA in the VM\n\nMake ZONE_DMA optional in core code.\n\n- ifdef all code for ZONE_DMA and related definitions following the example\n  for ZONE_DMA32 and ZONE_HIGHMEM.\n\n- Without ZONE_DMA, ZONE_HIGHMEM and ZONE_DMA32 we get to a ZONES_SHIFT of\n  0.\n\n- Modify the VM statistics to work correctly without a DMA zone.\n\n- Modify slab to not create DMA slabs if there is no ZONE_DMA.\n\n[akpm@osdl.org: cleanup]\n[jdike@addtoit.com: build fix]\n[apw@shadowen.org: Simplify calculation of the number of bits we need for ZONES_SHIFT]\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: Jeff Dike \u003cjdike@addtoit.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": "65e458d43dff872ee560e721fb0fdb367bb5adb0",
      "tree": "e903ec97a4a6c0ee952108b696387ef098a6a80c",
      "parents": [
        "05a0416be2b88d859efcbc4a4290555a04d169a1"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Feb 10 01:43:05 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:18 2007 -0800"
      },
      "message": "[PATCH] Drop get_zone_counts()\n\nValues are available via ZVC sums.\n\nSigned-off-by: 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": "9195481d2f869a2707a272057f3f8664fd277534",
      "tree": "995f43619af48009b616bf5a7ce4a6bffd75de79",
      "parents": [
        "96177299416dbccb73b54e6b344260154a445375"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Feb 10 01:43:04 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:18 2007 -0800"
      },
      "message": "[PATCH] Drop nr_free_pages_pgdat()\n\nFunction is unnecessary now.  We can use the summing features of the ZVCs to\nget the values we need.\n\nSigned-off-by: 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": "96177299416dbccb73b54e6b344260154a445375",
      "tree": "586454851d0fbbb365d6b12c852d5a7dd6b004f4",
      "parents": [
        "51ed4491271be8c56bdb2a03481ed34ea4984bc2"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Feb 10 01:43:03 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:18 2007 -0800"
      },
      "message": "[PATCH] Drop free_pages()\n\nnr_free_pages is now a simple access to a global variable.  Make it a macro\ninstead of a function.\n\nThe nr_free_pages now requires vmstat.h to be included.  There is one\noccurrence in power management where we need to add the include.  Directly\nrefrer to global_page_state() there to clarify why the #include was added.\n\n[akpm@osdl.org: arm build fix]\n[akpm@osdl.org: sparc64 build fix]\nSigned-off-by: 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": "d23ad42324cc4378132e51f2fc5c9ba6cbe75182",
      "tree": "6844416befb3988e432e8f422f3a369e2f760d39",
      "parents": [
        "c878538598d1e7ab41ecc0de8894e34e2fdef630"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Feb 10 01:43:02 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:17 2007 -0800"
      },
      "message": "[PATCH] Use ZVC for free_pages\n\nThis is again simplifies some of the VM counter calculations through the use\nof the ZVC consolidated counters.\n\n[michal.k.k.piotrowski@gmail.com: build fix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Michal Piotrowski \u003cmichal.k.k.piotrowski@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c878538598d1e7ab41ecc0de8894e34e2fdef630",
      "tree": "d22e73fddef75521e287c3e7754a1d3224c348d9",
      "parents": [
        "c3704ceb4ad055b489b143f4e37c57d128908012"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Feb 10 01:43:01 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:17 2007 -0800"
      },
      "message": "[PATCH] Use ZVC for inactive and active counts\n\nThe determination of the dirty ratio to determine writeback behavior is\ncurrently based on the number of total pages on the system.\n\nHowever, not all pages in the system may be dirtied.  Thus the ratio is always\ntoo low and can never reach 100%.  The ratio may be particularly skewed if\nlarge hugepage allocations, slab allocations or device driver buffers make\nlarge sections of memory not available anymore.  In that case we may get into\na situation in which f.e.  the background writeback ratio of 40% cannot be\nreached anymore which leads to undesired writeback behavior.\n\nThis patchset fixes that issue by determining the ratio based on the actual\npages that may potentially be dirty.  These are the pages on the active and\nthe inactive list plus free pages.\n\nThe problem with those counts has so far been that it is expensive to\ncalculate these because counts from multiple nodes and multiple zones will\nhave to be summed up.  This patchset makes these counters ZVC counters.  This\nmeans that a current sum per zone, per node and for the whole system is always\navailable via global variables and not expensive anymore to calculate.\n\nThe patchset results in some other good side effects:\n\n- Removal of the various functions that sum up free, active and inactive\n  page counts\n\n- Cleanup of the functions that display information via the proc filesystem.\n\nThis patch:\n\nThe use of a ZVC for nr_inactive and nr_active allows a simplification of some\ncounter operations.  More ZVC functionality is used for sums etc in the\nfollowing patches.\n\n[akpm@osdl.org: UP build fix]\nSigned-off-by: 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": "a6af2bc3d5ce8722b9d09c5bdd5383c91c419653",
      "tree": "d4af36e83f25d84979584b670b692068eb2b5a56",
      "parents": [
        "e10a4437cb37c85f2df95432025b392d98aac2aa"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Sat Feb 10 01:42:57 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:17 2007 -0800"
      },
      "message": "[PATCH] Avoid excessive sorting of early_node_map[]\n\nfind_min_pfn_for_node() and find_min_pfn_with_active_regions() sort\nearly_node_map[] on every call.  This is an excessive amount of sorting and\nthat can be avoided.  This patch always searches the whole early_node_map[]\nin find_min_pfn_for_node() instead of returning the first value found.  The\nmap is then only sorted once when required.  Successfully boot tested on a\nnumber of machines.\n\n[akpm@osdl.org: cleanup]\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": "a25700a53f715fde30443e737e52310c6d4a311a",
      "tree": "7f0593a68d7c791f3d01ce04f061b534fa26db91",
      "parents": [
        "45941d0481f538324fa21d6450116d13f6e51e91"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu Feb 08 14:20:40 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 09 09:25:47 2007 -0800"
      },
      "message": "[PATCH] mm: show bounce pages in oom killer output\n\nAlso split that long line up - people like to send us wordwrapped oom-kill\ntraces.\n\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6fd6b17c6d9713f56b5f20903ec3e00fa6cc435e",
      "tree": "f5dd7477e48fc5a1184d3472548291397be9c2b5",
      "parents": [
        "f56df2f4db6e4af87fb8e941cff69f4501a111df"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jan 31 16:43:36 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jan 31 16:46:40 2007 -0800"
      },
      "message": "Revert \"[PATCH] mm: micro optimise zone_watermark_ok\"\n\nThis reverts commit e80ee884ae0e3794ef2b65a18a767d502ad712ee.\n\nPawel Sikora had a boot-time oops due to it - because the sign change\ninvalidates the following comparisons, since \u0027free_pages\u0027 can be\nnegative.\n\nThe micro-optimization just isn\u0027t worth it.\n\nBisected-by: Pawel Sikora \u003cpluto@agmk.net\u003e\nAcked-by: Andrew Morton \u003cakpm@osdl.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2f3aa02576632cdb60bd3de1f4bf55e9ac65604",
      "tree": "2b9b73675de73866fbd219fab5bf2d804e6817b1",
      "parents": [
        "47a4d5be7c50b2e9b905abbe2b97dc87051c5a44"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Wed Jan 10 23:15:30 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Jan 11 18:18:20 2007 -0800"
      },
      "message": "[PATCH] Fix sparsemem on Cell\n\nFix an oops experienced on the Cell architecture when init-time functions,\nearly_*(), are called at runtime.  It alters the call paths to make sure\nthat the callers explicitly say whether the call is being made on behalf of\na hotplug even, or happening at boot-time.\n\nIt has been compile tested on ppc64, ia64, s390, i386 and x86_64.\n\nAcked-by: Arnd Bergmann \u003carndb@de.ibm.com\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nAcked-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f2e12bb272f2544d1504f982270e90ae3dcc4ff2",
      "tree": "68e8d10521fdcf1d7f4df411d87809cd1110b929",
      "parents": [
        "6929da4427b4335365dd51ab0b7dd2a0393656f0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jan 05 16:37:02 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:29 2007 -0800"
      },
      "message": "[PATCH] Check for populated zone in __drain_pages\n\nBoth process_zones() and drain_node_pages() check for populated zones\nbefore touching pagesets.  However, __drain_pages does not do so,\n\nThis may result in a NULL pointer dereference for pagesets in unpopulated\nzones if a NUMA setup is combined with cpu hotplug.\n\nInitially the unpopulated zone has the pcp pointers pointing to the boot\npagesets.  Since the zone is not populated the boot pageset pointers will\nnot be changed during page allocator and slab bootstrap.\n\nIf a cpu is later brought down (first call to __drain_pages()) then the pcp\npointers for cpus in unpopulated zones are set to NULL since __drain_pages\ndoes not first check for an unpopulated zone.\n\nIf the cpu is then brought up again then we call process_zones() which will\nignore the unpopulated zone.  So the pageset pointers will still be NULL.\n\nIf the cpu is then again brought down then __drain_pages will attempt to\ndrain pages by following the NULL pageset pointer for unpopulated zones.\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": "9ab37b8f21b4dfe256d736c13738d20c88a1f3ad",
      "tree": "11b7b33b1e88ce19175492f25cfc71add2b3dcd6",
      "parents": [
        "dd0ec16fa6cf2498b831663a543e1b67fce6e155"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jan 05 16:36:30 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:23 2007 -0800"
      },
      "message": "[PATCH] Sanely size hash tables when using large base pages\n\nAt the moment the inode/dentry cache hash tables (common by way of\nalloc_large_system_hash()) are incorrectly sized by their respective\ndetection logic when we attempt to use large base pages on systems with\nlittle memory.\n\nThis results in odd behaviour when using a 64kB PAGE_SIZE, such as:\n\nDentry cache hash table entries: 8192 (order: -1, 32768 bytes)\nInode-cache hash table entries: 4096 (order: -2, 16384 bytes)\n\nThe mount cache hash table is seemingly the only one that gets this right\nby directly taking PAGE_SIZE in to account.\n\nThe following patch attempts to catch the bogus values and round it up to\nat least 0-order.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "02a0e53d8227aff5e62e0433f82c12c1c2805fd6",
      "tree": "fe32435308e5f1afe8bd12357bd8c5ff3b4133c7",
      "parents": [
        "55935a34a428a1497e3b37982e2782c09c6f914d"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Wed Dec 13 00:34:25 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:49 2006 -0800"
      },
      "message": "[PATCH] cpuset: rework cpuset_zone_allowed api\n\nElaborate the API for calling cpuset_zone_allowed(), so that users have to\nexplicitly choose between the two variants:\n\n  cpuset_zone_allowed_hardwall()\n  cpuset_zone_allowed_softwall()\n\nUntil now, whether or not you got the hardwall flavor depended solely on\nwhether or not you or\u0027d in the __GFP_HARDWALL gfp flag to the gfp_mask\nargument.\n\nIf you didn\u0027t specify __GFP_HARDWALL, you implicitly got the softwall\nversion.\n\nUnfortunately, this meant that users would end up with the softwall version\nwithout thinking about it.  Since only the softwall version might sleep,\nthis led to bugs with possible sleeping in interrupt context on more than\none occassion.\n\nThe hardwall version requires that the current tasks mems_allowed allows\nthe node of the specified zone (or that you\u0027re in interrupt or that\n__GFP_THISNODE is set or that you\u0027re on a one cpuset system.)\n\nThe softwall version, depending on the gfp_mask, might allow a node if it\nwas allowed in the nearest enclusing cpuset marked mem_exclusive (which\nrequires taking the cpuset lock \u0027callback_mutex\u0027 to evaluate.)\n\nThis patch removes the cpuset_zone_allowed() call, and forces the caller to\nexplicitly choose between the hardwall and the softwall case.\n\nIf the caller wants the gfp_mask to determine this choice, they should (1)\nbe sure they can sleep or that __GFP_HARDWALL is set, and (2) invoke the\ncpuset_zone_allowed_softwall() routine.\n\nThis adds another 100 or 200 bytes to the kernel text space, due to the few\nlines of nearly duplicate code at the top of both cpuset_zone_allowed_*\nroutines.  It should save a few instructions executed for the calls that\nturned into calls of cpuset_zone_allowed_hardwall, thanks to not having to\nset (before the call) then check (within the call) the __GFP_HARDWALL flag.\n\nFor the most critical call, from get_page_from_freelist(), the same\ninstructions are executed as before -- the old cpuset_zone_allowed()\nroutine it used to call is the same code as the\ncpuset_zone_allowed_softwall() routine that it calls now.\n\nNot a perfect win, but seems worth it, to reduce this chance of hitting a\nsleeping with irq off complaint again.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6b1b60f41eef3ba7b188fd72f1d6de478aafd93c",
      "tree": "96be18f573ef01f65547e8d74f0b4d7ce52f2c11",
      "parents": [
        "f1729c28a37e4f11ea5d9f468ab26adadb1aadab"
      ],
      "author": {
        "name": "Don Mullis",
        "email": "dwm@meer.net",
        "time": "Fri Dec 08 02:39:53 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:29:03 2006 -0800"
      },
      "message": "[PATCH] fault-injection: defaults likely to please a new user\n\nAssign defaults most likely to please a new user:\n 1) generate some logging output\n    (verbose\u003d2)\n 2) avoid injecting failures likely to lock up UI\n    (ignore_gfp_wait\u003d1, ignore_gfp_highmem\u003d1)\n\nSigned-off-by: Don Mullis \u003cdwm@meer.net\u003e\nCc: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "933e312e73f8fc39652bd4d216a5393cc3a014b9",
      "tree": "a2aacc2a098c3c95fe5a94fef1a2cc9751bee79b",
      "parents": [
        "8a8b6502fb669c3a0638a08955442814cedc86b1"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Fri Dec 08 02:39:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:29:02 2006 -0800"
      },
      "message": "[PATCH] fault-injection capability for alloc_pages()\n\nThis patch provides fault-injection capability for alloc_pages()\n\nBoot option:\n\nfail_page_alloc\u003d\u003cinterval\u003e,\u003cprobability\u003e,\u003cspace\u003e,\u003ctimes\u003e\n\n\t\u003cinterval\u003e -- specifies the interval of failures.\n\n\t\u003cprobability\u003e -- specifies how often it should fail in percent.\n\n\t\u003cspace\u003e -- specifies the size of free space where memory can be\n\t\t   allocated safely in pages.\n\n\t\u003ctimes\u003e -- specifies how many times failures may happen at most.\n\nDebugfs:\n\n/debug/fail_page_alloc/interval\n/debug/fail_page_alloc/probability\n/debug/fail_page_alloc/specifies\n/debug/fail_page_alloc/times\n/debug/fail_page_alloc/ignore-gfp-highmem\n/debug/fail_page_alloc/ignore-gfp-wait\n\nExample:\n\n\tfail_page_alloc\u003d10,100,0,-1\n\nThe page allocation (alloc_pages(), ...) fails once per 10 times.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f0d1b0b30d250a07627ad8b9fbbb5c7cc08422e8",
      "tree": "0aa5379150574374351fb92af7881a48dbfcf2ce",
      "parents": [
        "b3d7ae5f47a58a9f7b152deeaf7daa1fc558a8f1"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Dec 08 02:37:49 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:51 2006 -0800"
      },
      "message": "[PATCH] LOG2: Implement a general integer log2 facility in the kernel\n\nThis facility provides three entry points:\n\n\tilog2()\t\tLog base 2 of unsigned long\n\tilog2_u32()\tLog base 2 of u32\n\tilog2_u64()\tLog base 2 of u64\n\nThese facilities can either be used inside functions on dynamic data:\n\n\tint do_something(long q)\n\t{\n\t\t...;\n\t\ty \u003d ilog2(x)\n\t\t...;\n\t}\n\nOr can be used to statically initialise global variables with constant values:\n\n\tunsigned n \u003d ilog2(27);\n\nWhen performing static initialisation, the compiler will report \"error:\ninitializer element is not constant\" if asked to take a log of zero or of\nsomething not reducible to a constant.  They treat negative numbers as\nunsigned.\n\nWhen not dealing with a constant, they fall back to using fls() which permits\nthem to use arch-specific log calculation instructions - such as BSR on\nx86/x86_64 or SCAN on FRV - if available.\n\n[akpm@osdl.org: MMC fix]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Wojtek Kaniewski \u003cwojtekka@toxygen.net\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": "02316067852187b8bec781bec07410e91af79627",
      "tree": "856e3f4610c91a6548bf3bf5c70ecbc0b28a4145",
      "parents": [
        "a38a44c1a93078fc5fadc4ac2df8dea4697069e2"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 06 20:38:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:39 2006 -0800"
      },
      "message": "[PATCH] hotplug CPU: clean up hotcpu_notifier() use\n\nThere was lots of #ifdef noise in the kernel due to hotcpu_notifier(fn,\nprio) not correctly marking \u0027fn\u0027 as used in the !HOTPLUG_CPU case, and thus\ngenerating compiler warnings of unused symbols, hence forcing people to add\n#ifdefs.\n\nthe compiler can skip truly unused functions just fine:\n\n    text    data     bss     dec     hex filename\n 1624412  728710 3674856 6027978  5bfaca vmlinux.before\n 1624412  728710 3674856 6027978  5bfaca vmlinux.after\n\n[akpm@osdl.org: topology.c fix]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "04903664325acb3f199dd8a4b8f1aa437e9fd6b2",
      "tree": "6da8e4716c1477d578b9d89cd23be703aac8bedc",
      "parents": [
        "93f210dd9e614ddab7ecef0b4c9ba6ad3720d860"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed Dec 06 20:37:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:37 2006 -0800"
      },
      "message": "[PATCH] remove HASH_HIGHMEM\n\nIt has no users and it\u0027s doubtful that we\u0027ll need it again.\n\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "33f2ef89f8e181486b63fdbdc97c6afa6ca9f34b",
      "tree": "b90eac24ff367bc628c44eaa51a9f0ea1b69d1a4",
      "parents": [
        "3c517a6132098ca37e122a2980fc64a9e798b0d7"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Wed Dec 06 20:33:32 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] mm: make compound page destructor handling explicit\n\nCurrently we we use the lru head link of the second page of a compound page\nto hold its destructor.  This was ok when it was purely an internal\nimplmentation detail.  However, hugetlbfs overrides this destructor\nviolating the layering.  Abstract this out as explicit calls, also\nintroduce a type for the callback function allowing them to be type\nchecked.  For each callback we pre-declare the function, causing a type\nerror on definition rather than on use elsewhere.\n\n[akpm@osdl.org: cleanups]\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "952f3b51beb592f3f1de15adcdef802fc086ea91",
      "tree": "45d9b240230494d3d985400f81f963b67db1e788",
      "parents": [
        "5bcd234d881d83ac0259c6d42d98f134e31c60a8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:26 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] GFP_THISNODE must not trigger global reclaim\n\nThe intent of GFP_THISNODE is to make sure that an allocation occurs on a\nparticular node.  If this is not possible then NULL needs to be returned so\nthat the caller can choose what to do next on its own (the slab allocator\ndepends on that).\n\nHowever, GFP_THISNODE currently triggers reclaim before returning a failure\n(GFP_THISNODE means GFP_NORETRY is set).  If we have over allocated a node\nthen we will currently do some reclaim before returning NULL.  The caller\nmay want memory from other nodes before reclaim should be triggered.  (If\nthe caller wants reclaim then he can directly use __GFP_THISNODE instead).\n\nThere is no flag to avoid reclaim in the page allocator and adding yet\nanother GFP_xx flag would be difficult given that we are out of available\nflags.\n\nSo just compare and see if all bits for GFP_THISNODE (__GFP_THISNODE,\n__GFP_NORETRY and __GFP_NOWARN) are set.  If so then we return NULL before\nwaking up kswapd.\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": "ce421c799b5bde77aa60776d6fb61036ae0aea11",
      "tree": "98e0a52cdafdfa28c986991f57854209e68b8226",
      "parents": [
        "5d1854e15ee979f8e27330f0d3ce5e2703afa1dc"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Wed Dec 06 20:33:08 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:23 2006 -0800"
      },
      "message": "[PATCH] mm: cleanup indentation on switch for CPU operations\n\nThese patches introduced new switch statements which are indented contrary\nto the concensus in mm/*.c.  Fix them up to match that concensus.\n\n    [PATCH] node local per-cpu-pages\n    [PATCH] ZVC: Scale thresholds depending on the size of the system\n    commit e7c8d5c9955a4d2e88e36b640563f5d6d5aba48a\n    commit df9ecaba3f152d1ea79f2a5e0b87505e03f47590\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\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": "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": "bc4ba393c007248f76c05945abb7b7b892cdd1cc",
      "tree": "3c2cf7e13ecf991c58ffc00617757fcdeb3d863f",
      "parents": [
        "ebe29738f3934ad6a93c8bd76e30aa5d797a269d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:02 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:23 2006 -0800"
      },
      "message": "[PATCH] drain_node_page(): Drain pages in batch units\n\ndrain_node_pages() currently drains the complete pageset of all pages.  If\nthere are a large number of pages in the queues then we may hold off\ninterrupts for too long.\n\nDuplicate the method used in free_hot_cold_page.  Only drain pcp-\u003ebatch\npages at one time.\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": "b43a57bb4dae72e8f7232e7c821a8799eda30022",
      "tree": "4293286b44c8b11bac6a03c4ddfe75aea40aa089",
      "parents": [
        "a3eea484f7a1aadb70ed6665338026a09ad6ce85"
      ],
      "author": {
        "name": "Kirill Korotaev",
        "email": "dev@openvz.org",
        "time": "Wed Dec 06 20:32:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:22 2006 -0800"
      },
      "message": "[PATCH] OOM can panic due to processes stuck in __alloc_pages()\n\nOOM can panic due to the processes stuck in __alloc_pages() doing infinite\nrebalance loop while no memory can be reclaimed.  OOM killer tries to kill\nsome processes, but unfortunetaly, rebalance label was moved by someone\nbelow the TIF_MEMDIE check, so buddy allocator doesn\u0027t see that process is\nOOM-killed and it can simply fail the allocation :/\n\nObserved in reality on RHEL4(2.6.9)+OpenVZ kernel when a user doing some\nmemory allocation tricks triggered OOM panic.\n\nSigned-off-by: Denis Lunev \u003cden@sw.ru\u003e\nSigned-off-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cc102509074bba0316f2b5deebd7ef4447da295e",
      "tree": "44ac5fc0c0dd7a24e8925e680a03361f4722a5a6",
      "parents": [
        "7602bdf2fd14a40dd9b104e516fdc05e1bd17952"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Dec 06 20:32:00 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:21 2006 -0800"
      },
      "message": "[PATCH] mm: add arch_alloc_page\n\nAdd an arch_alloc_page to match arch_free_page.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "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": "89689ae7f95995723fbcd5c116c47933a3bb8b13",
      "tree": "4d73ff59b557fa1a84c6064406ff101c76ff8adc",
      "parents": [
        "c0a499c2c42992cff097b38be29d2ba60d2fd99a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:31:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:20 2006 -0800"
      },
      "message": "[PATCH] Get rid of zone_table[]\n\nThe zone table is mostly not needed.  If we have a node in the page flags\nthen we can get to the zone via NODE_DATA() which is much more likely to be\nalready in the cpu cache.\n\nIn case of SMP and UP NODE_DATA() is a constant pointer which allows us to\naccess an exact replica of zonetable in the node_zones field.  In all of\nthe above cases there will be no need at all for the zone table.\n\nThe only remaining case is if in a NUMA system the node numbers do not fit\ninto the page flags.  In that case we make sparse generate a table that\nmaps sections to nodes and use that table to to figure out the node number.\n This table is sized to fit in a single cache line for the known 32 bit\nNUMA platform which makes it very likely that the information can be\nobtained without a cache miss.\n\nFor sparsemem the zone table seems to be have been fairly large based on\nthe maximum possible number of sections and the number of zones per node.\nThere is some memory saving by removing zone_table.  The main benefit is to\nreduce the cache foootprint of the VM from the frequent lookups of zones.\nPlus it simplifies the page allocator.\n\n[akpm@osdl.org: build fix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0798e5193cd70f6c867ec176d7730589f944c627",
      "tree": "abe3ada0b04080729418a0c301d8b55b4363b56e",
      "parents": [
        "a2ce774096110ccc5c02cbdc05897d005fcd3db8"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Wed Dec 06 20:31:38 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 minor cleanups\n\n- s/freeliest/freelist/ spelling fix\n\n- Check for NULL *z zone seems useless - even if it could happen, so\n  what?  Perhaps we should have a check later on if we are faced with an\n  allocation request that is not allowed to fail - shouldn\u0027t that be a\n  serious kernel error, passing an empty zonelist with a mandate to not\n  fail?\n\n- Initializing \u0027z\u0027 to zonelist-\u003ezones can wait until after the first\n  get_page_from_freelist() fails; we only use \u0027z\u0027 in the wakeup_kswapd()\n  loop, so let\u0027s initialize \u0027z\u0027 there, in a \u0027for\u0027 loop.  Seems clearer.\n\n- Remove superfluous braces around a break\n\n- Fix a couple errant spaces\n\n- Adjust indentation on the cpuset_zone_allowed() check, to match the\n  lines just before it -- seems easier to read in this case.\n\n- Add another set of braces to the zone_watermark_ok logic\n\nFrom: Paul Jackson \u003cpj@sgi.com\u003e\n\n  Backout one item from a previous \"memory page_alloc minor cleanups\" patch.\n   Until and unless we are certain that no one can ever pass an empty zonelist\n  to __alloc_pages(), this check for an empty zonelist (or some BUG\n  equivalent) is essential.  The code in get_page_from_freelist() blow ups if\n  passed an empty zonelist.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\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": "1abbfb412b1610ec3a7ec0164108cee01191d9f5",
      "tree": "ab63b4e9b901455385a55ffa4a30b23343d363eb",
      "parents": [
        "0b1082efb92eedb28e982cfae526267ebdcf5622"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@skynet.ie",
        "time": "Thu Nov 23 12:01:41 2006 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Nov 23 09:30:38 2006 -0800"
      },
      "message": "[PATCH] x86_64: fix bad page state in process \u0027swapper\u0027\n\nfind_min_pfn_for_node() and find_min_pfn_with_active_regions() both\ndepend on a sorted early_node_map[].  However, sort_node_map() is being\ncalled after fin_min_pfn_with_active_regions() in\nfree_area_init_nodes().\n\nIn most cases, this is ok, but on at least one x86_64, the SRAT table\ncaused the E820 ranges to be registered out of order.  This gave the\nwrong values for the min PFN range resulting in some pages not being\ninitialised.\n\nThis patch sorts the early_node_map in find_min_pfn_for_node().  It has\nbeen boot tested on x86, x86_64, ppc64 and ia64.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "941c7105dc4f4961727acc518e18e00b9a03cbf3",
      "tree": "a57c90d295b48492d2e6f1151cdcdff31475aa70",
      "parents": [
        "c7e12b838989b0e432c7a1cdf1e6c6fd936007f6"
      ],
      "author": {
        "name": "nkalmala",
        "email": "nkalmala@gmail.com",
        "time": "Thu Nov 02 22:07:04 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Nov 03 12:27:56 2006 -0800"
      },
      "message": "[PATCH] mm: un-needed add-store operation wastes a few bytes\n\nUn-needed add-store operation wastes a few bytes.\n8 bytes wasted with -O2, on a ppc.\n\nSigned-off-by: nkalmala \u003cnkalmala@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0c6cb974636dd29681b03f8eb0ae227decab01fb",
      "tree": "dfcf831a0c067eec8e1afbd4c22be3e1e736155e",
      "parents": [
        "057647fc47b3a5fbcfa997041db3f483d506603c"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@skynet.ie",
        "time": "Sat Oct 28 10:38:59 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 28 11:30:55 2006 -0700"
      },
      "message": "[PATCH] Calculation fix for memory holes beyong the end of physical memory\n\nabsent_pages_in_range() made the assumption that users of the\narch-independent zone-sizing API would not care about holes beyound the end\nof physical memory.  This was not the case and was \"fixed\" in a patch\ncalled \"Account for holes that are outside the range of physical memory\".\nHowever, when given a range that started before a hole in \"real\" memory and\nended beyond the end of memory, it would get the result wrong.  The bug is\nin mainline but a patch is below.\n\nIt has been tested successfully on a number of machines and architectures.\nAdditional credit to Keith Mannthey for discovering the problem, helping\nidentify the correct fix and confirming it Worked For Him.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: keith mannthey \u003ckmannth@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3bb1a852ab6c9cdf211a2f4a2f502340c8c38eca",
      "tree": "d08aa652e8eb40c47d5bc37fa1a240b4fb7db029",
      "parents": [
        "2ae88149a27cadf2840e0ab8155bef13be285c03"
      ],
      "author": {
        "name": "Martin Bligh",
        "email": "mbligh@mbligh.org",
        "time": "Sat Oct 28 10:38:24 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 28 11:30:50 2006 -0700"
      },
      "message": "[PATCH] vmscan: Fix temp_priority race\n\nThe temp_priority field in zone is racy, as we can walk through a reclaim\npath, and just before we copy it into prev_priority, it can be overwritten\n(say with DEF_PRIORITY) by another reclaimer.\n\nThe same bug is contained in both try_to_free_pages and balance_pgdat, but\nit is fixed slightly differently.  In balance_pgdat, we keep a separate\npriority record per zone in a local array.  In try_to_free_pages there is\nno need to do this, as the priority level is the same for all zones that we\nreclaim from.\n\nImpact of this bug is that temp_priority is copied into prev_priority, and\nsetting this artificially high causes reclaimers to set distress\nartificially low.  They then fail to reclaim mapped pages, when they are,\nin fact, under severe memory pressure (their priority may be as low as 0).\nThis causes the OOM killer to fire incorrectly.\n\nFrom: Andrew Morton \u003cakpm@osdl.org\u003e\n\n__zone_reclaim() isn\u0027t modifying zone-\u003eprev_priority.  But zone-\u003eprev_priority\nis used in the decision whether or not to bring mapped pages onto the inactive\nlist.  Hence there\u0027s a risk here that __zone_reclaim() will fail because\nzone-\u003eprev_priority ir large (ie: low urgency) and lots of mapped pages end up\nstuck on the active list.\n\nFix that up by decreasing (ie making more urgent) zone-\u003eprev_priority as\n__zone_reclaim() scans the zone\u0027s pages.\n\nThis bug perhaps explains why ZONE_RECLAIM_PRIORITY was created.  It should be\npossible to remove that now, and to just start out at DEF_PRIORITY?\n\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7516795739bd53175629b90fab0ad488d7a6a9f7",
      "tree": "1f6b4b7a4f08a25155605b10d5963b7c6ca72e7b",
      "parents": [
        "047a66d4bb24aaf19f41d620f8f0534c2153cd0b"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Sat Oct 21 10:24:14 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 21 13:35:06 2006 -0700"
      },
      "message": "[PATCH] Reintroduce NODES_SPAN_OTHER_NODES for powerpc\n\nReintroduce NODES_SPAN_OTHER_NODES for powerpc\n\nRevert \"[PATCH] Remove SPAN_OTHER_NODES config definition\"\n    This reverts commit f62859bb6871c5e4a8e591c60befc8caaf54db8c.\nRevert \"[PATCH] mm: remove arch independent NODES_SPAN_OTHER_NODES\"\n    This reverts commit a94b3ab7eab4edcc9b2cb474b188f774c331adf7.\n\nAlso update the comments to indicate that this is still required\nand where its used.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Mike Kravetz \u003ckravetz@us.ibm.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Will Schmidt \u003cwill_schmidt@vnet.ibm.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6220ec7844fda2686496013a66b5b9169976b991",
      "tree": "7274cbe70f0ef3da085e1f74e3605fa8d1cfc777",
      "parents": [
        "e51959faa61278c762389802faf8ba1a40676628"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu Oct 19 23:29:05 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:43 2006 -0700"
      },
      "message": "[PATCH] highest_possible_node_id() linkage fix\n\nQooting Adrian:\n\n- net/sunrpc/svc.c uses highest_possible_node_id()\n\n- include/linux/nodemask.h says highest_possible_node_id() is\n  out-of-line #if MAX_NUMNODES \u003e 1\n\n- the out-of-line highest_possible_node_id() is in lib/cpumask.c\n\n- lib/Makefile: lib-$(CONFIG_SMP) +\u003d cpumask.o\n  CONFIG_ARCH_DISCONTIGMEM_ENABLE\u003dy, CONFIG_SMP\u003dn, CONFIG_SUNRPC\u003dy\n\n-\u003e highest_possible_node_id() is used in net/sunrpc/svc.c\n   CONFIG_NODES_SHIFT defined and \u003e 0\n\n-\u003e include/linux/numa.h: MAX_NUMNODES \u003e 1\n\n-\u003e compile error\n\nThe bug is not present on architectures where ARCH_DISCONTIGMEM_ENABLE\ndepends on NUMA (but m32r isn\u0027t the only affected architecture).\n\nSo move the function into page_alloc.c\n\nCc: Adrian Bunk \u003cbunk@stusta.de\u003e\nCc: 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": "3fcfab16c5b86eaa3db3a9a31adba550c5b67141",
      "tree": "bd348fa081b8fbec2c79fbf8f173a306d70b2b2c",
      "parents": [
        "79e2de4bc53d7ca2a8eedee49e4a92479b4b530e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu Oct 19 23:28:16 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:35 2006 -0700"
      },
      "message": "[PATCH] separate bdi congestion functions from queue congestion functions\n\nSeparate out the concept of \"queue congestion\" from \"backing-dev congestion\".\nCongestion is a backing-dev concept, not a queue concept.\n\nThe blk_* congestion functions are retained, as wrappers around the core\nbacking-dev congestion functions.\n\nThis proper layering is needed so that NFS can cleanly use the congestion\nfunctions, and so that CONFIG_BLOCK\u003dn actually links.\n\nCc: \"Thomas Maier\" \u003cbalagi@justmail.de\u003e\nCc: \"Jens Axboe\" \u003cjens.axboe@oracle.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9858db504caedb2424b9a32744c23f9a81ec1731",
      "tree": "516b4735df82feb9b14bea4984769e7ac013373d",
      "parents": [
        "dafb13673c463bc2aade4a4819704dde0f5fa37f"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Oct 11 01:21:30 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:19 2006 -0700"
      },
      "message": "[PATCH] mm: locks_freed fix\n\nMove the lock debug checks below the page reserved checks.  Also, having\ndebug_check_no_locks_freed in kernel_map_pages is wrong.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dafb13673c463bc2aade4a4819704dde0f5fa37f",
      "tree": "4944daaa4ca8e9d988e4357ae902fda6ea531d28",
      "parents": [
        "699397499742d1245ea5d677a08fa265df666d2d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Oct 11 01:21:30 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:19 2006 -0700"
      },
      "message": "[PATCH] mm: arch_free_page fix\n\nAfter the PG_reserved check was added, arch_free_page was being called in the\nwrong place (it could be called for a page we don\u0027t actually want to free).\nFix that.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b888132b0ff29ca0733589a594c243ed612438eb",
      "tree": "6bb64b98ed5f835db3bc7ddfe3a79788fe9890f4",
      "parents": [
        "6391af174ad75f72e92043c1dd8302660a2fec58"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@skynet.ie",
        "time": "Wed Oct 11 01:20:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:14 2006 -0700"
      },
      "message": "[PATCH] mm: remove memmap_zone_idx()\n\nmemmap_zone_idx() is not used anymore.  It was required by an earlier\nversion of\naccount-for-memmap-and-optionally-the-kernel-image-as-holes.patch but not\nany more.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "88ca3b94e82e763ef90c8e57cacd51a3c143ea62",
      "tree": "d08b8cc64baa7925723f87669c9d0c3b9761f2ac",
      "parents": [
        "fe1668ae5bf0145014c71797febd9ad5670d5d05"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Wed Oct 04 02:15:25 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 07:55:12 2006 -0700"
      },
      "message": "[PATCH] page_alloc: fix kernel-doc and func. declaration\n\nFix kernel-doc and function declaration (missing \"void\") in\nmm/page_alloc.c.\n\nAdd mm/page_alloc.c to kernel-api.tmpl in DocBook.\n\nmm/page_alloc.c:2589:38: warning: non-ANSI function declaration of function \u0027remove_all_active_ranges\u0027\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e80ee884ae0e3794ef2b65a18a767d502ad712ee",
      "tree": "6e5704f603d1596df930bc22f5e926cc50550102",
      "parents": [
        "b2abacf3a2699a8020829c85c16f358ba85cecaf"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Wed Oct 04 02:15:23 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 07:55:12 2006 -0700"
      },
      "message": "[PATCH] mm: micro optimise zone_watermark_ok\n\nHaving min be a signed quantity means gcc can\u0027t turn high latency divides\ninto shifts.  There happen to be two such divides for GFP_ATOMIC (ie.\nnetworking, ie.  important) allocations, one of which depends on the other.\n Fixing this makes code smaller as a bonus.\n\nShame on somebody (probably me).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "423b41d773abe443bb546ce91361192073b96f88",
      "tree": "495b410fb4001ecf0daba6198e6b4c009a638ff8",
      "parents": [
        "17a3b05047119b7fc72ef03962e202becc659579"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Wed Sep 27 01:50:12 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:13 2006 -0700"
      },
      "message": "[PATCH] mm/page_alloc: use NULL instead of 0 for ptr\n\nUse NULL instead of 0 for pointer value, eliminate sparse warnings.\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "66a550308b8e4cbaba185d0326cb05d1bd758101",
      "tree": "e0ac829da7702413e57c7de288ce27398f32cfdb",
      "parents": [
        "d5f541ed6e31518508c688912e7464facf253c87"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Sep 27 01:50:09 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:13 2006 -0700"
      },
      "message": "[PATCH] Do not allocate pagesets for unpopulated zones.\n\nWe do not need to allocate pagesets for unpopulated zones.\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": "d5f541ed6e31518508c688912e7464facf253c87",
      "tree": "028d296306e247ca32ec5db398d365dcd70d26b7",
      "parents": [
        "765c4507af71c39aba21006bbd3ec809fe9714ff"
      ],
      "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:13 2006 -0700"
      },
      "message": "[PATCH] Add node to zone for the NUMA case\n\nAdd the node in order to optimize zone_to_nid.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.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": "08e0f6a9705376732fd3bc9bf8ba97a6b5211eb1",
      "tree": "dfb761013377b983641fae33223157880171c498",
      "parents": [
        "c72419138fa34e1bc1f1c6fa54ee77df55a05ed0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Sep 27 01:50:06 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:12 2006 -0700"
      },
      "message": "[PATCH] Add NUMA_BUILD definition in kernel.h to avoid #ifdef CONFIG_NUMA\n\nThe NUMA_BUILD constant is always available and will be set to 1 on\nNUMA_BUILDs.  That way checks valid only under CONFIG_NUMA can easily be done\nwithout #ifdef CONFIG_NUMA\n\nF.e.\n\nif (NUMA_BUILD \u0026\u0026 \u003cnuma_condition\u003e) {\n...\n}\n\n[akpm: not a thing we\u0027d normally do, but CONFIG_NUMA is special: it is\n causing ifdef explosion in core kernel, so let\u0027s see if this is a comfortable\n way in whcih to control that]\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": "c72419138fa34e1bc1f1c6fa54ee77df55a05ed0",
      "tree": "293e2d11f5d4b8487aeccbb4eca71f3572012c17",
      "parents": [
        "de3083ec3e6bfb1ab60bc8a410f37702529f953c"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Wed Sep 27 01:50:05 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:12 2006 -0700"
      },
      "message": "[PATCH] Condense output of show_free_areas()\n\nOn larger systems, the amount of output dumped on the console when you do\nSysRq-M is beyond insane.  This patch is trying to reduce it somewhat as\neven with the smaller NUMA systems that have hit the desktop this seems to\nbe a fair thing to do.\n\nThe philosophy I have taken is as follows:\n 1) If a zone is empty, don\u0027t tell, we don\u0027t need yet another line\n    telling us so. The information is available since one can look up\n    the fact how many zones were initialized in the first place.\n 2) Put as much information on a line is possible, if it can be done\n    in one line, rahter than two, then do it in one. I tried to format\n    the temperature stuff for easy reading.\n\nChange show_free_areas() to not print lines for empty zones.  If no zone\noutput is printed, the zone is empty.  This reduces the number of lines\ndumped to the console in sysrq on a large system by several thousand lines.\n\nChange the zone temperature printouts to use one line per CPU instead of\ntwo lines (one hot, one cold).  On a 1024 CPU, 1024 node system, this\nreduces the console output by over a million lines of output.\n\nWhile this is a bigger problem on large NUMA systems, it is also applicable\nto smaller desktop sized and mid range NUMA systems.\n\nOld format:\n\nMem-info:\nNode 0 DMA per-cpu:\ncpu 0 hot: high 42, batch 7 used:24\ncpu 0 cold: high 14, batch 3 used:1\ncpu 1 hot: high 42, batch 7 used:34\ncpu 1 cold: high 14, batch 3 used:0\ncpu 2 hot: high 42, batch 7 used:0\ncpu 2 cold: high 14, batch 3 used:0\ncpu 3 hot: high 42, batch 7 used:0\ncpu 3 cold: high 14, batch 3 used:0\ncpu 4 hot: high 42, batch 7 used:0\ncpu 4 cold: high 14, batch 3 used:0\ncpu 5 hot: high 42, batch 7 used:0\ncpu 5 cold: high 14, batch 3 used:0\ncpu 6 hot: high 42, batch 7 used:0\ncpu 6 cold: high 14, batch 3 used:0\ncpu 7 hot: high 42, batch 7 used:0\ncpu 7 cold: high 14, batch 3 used:0\nNode 0 DMA32 per-cpu: empty\nNode 0 Normal per-cpu: empty\nNode 0 HighMem per-cpu: empty\nNode 1 DMA per-cpu:\n[snip]\nFree pages:     5410688kB (0kB HighMem)\nActive:9536 inactive:4261 dirty:6 writeback:0 unstable:0 free:338168 slab:1931 mapped:1900 pagetables:208\nNode 0 DMA free:1676304kB min:3264kB low:4080kB high:4896kB active:128048kB inactive:61568kB present:1970880kB pages_scanned:0 all_unreclaimable? no\nlowmem_reserve[]: 0 0 0 0\nNode 0 DMA32 free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no\nlowmem_reserve[]: 0 0 0 0\nNode 0 Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no\nlowmem_reserve[]: 0 0 0 0\nNode 0 HighMem free:0kB min:512kB low:512kB high:512kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no\nlowmem_reserve[]: 0 0 0 0\nNode 1 DMA free:1951728kB min:3280kB low:4096kB high:4912kB active:5632kB inactive:1504kB present:1982464kB pages_scanned:0 all_unreclaimable? no\nlowmem_reserve[]: 0 0 0 0\n....\n\nNew format:\n\nMem-info:\nNode 0 DMA per-cpu:\nCPU    0: Hot: hi:   42, btch:   7 usd:  41   Cold: hi:   14, btch:   3 usd:   2\nCPU    1: Hot: hi:   42, btch:   7 usd:  40   Cold: hi:   14, btch:   3 usd:   1\nCPU    2: Hot: hi:   42, btch:   7 usd:   0   Cold: hi:   14, btch:   3 usd:   0\nCPU    3: Hot: hi:   42, btch:   7 usd:   0   Cold: hi:   14, btch:   3 usd:   0\nCPU    4: Hot: hi:   42, btch:   7 usd:   0   Cold: hi:   14, btch:   3 usd:   0\nCPU    5: Hot: hi:   42, btch:   7 usd:   0   Cold: hi:   14, btch:   3 usd:   0\nCPU    6: Hot: hi:   42, btch:   7 usd:   0   Cold: hi:   14, btch:   3 usd:   0\nCPU    7: Hot: hi:   42, btch:   7 usd:   0   Cold: hi:   14, btch:   3 usd:   0\nNode 1 DMA per-cpu:\n[snip]\nFree pages:     5411088kB (0kB HighMem)\nActive:9558 inactive:4233 dirty:6 writeback:0 unstable:0 free:338193 slab:1942 mapped:1918 pagetables:208\nNode 0 DMA free:1677648kB min:3264kB low:4080kB high:4896kB active:129296kB inactive:58864kB present:1970880kB pages_scanned:0 all_unreclaimable? no\nlowmem_reserve[]: 0 0 0 0\nNode 1 DMA free:1948448kB min:3280kB low:4096kB high:4912kB active:6864kB inactive:3536kB present:1982464kB pages_scanned:0 all_unreclaimable? no\nlowmem_reserve[]: 0 0 0 0\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fb01439c5b778d5974a488c5d4fe85e6d0e18a68",
      "tree": "dd5483b2555adbdc51f215fcb010484d423f63a0",
      "parents": [
        "9c7cd6877cf8db15269163deda69392263124c1e"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@skynet.ie",
        "time": "Wed Sep 27 01:49:59 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:12 2006 -0700"
      },
      "message": "[PATCH] Allow an arch to expand node boundaries\n\nArch-independent zone-sizing determines the size of a node\n(pgdat-\u003enode_spanned_pages) based on the physical memory that was\nregistered by the architecture.  However, when\nCONFIG_MEMORY_HOTPLUG_RESERVE is set, the architecture expects that the\nspanned_pages will be much larger and that mem_map will be allocated that\nis used lated on memory hot-add.\n\nThis patch allows an architecture that sets CONFIG_MEMORY_HOTPLUG_RESERVE\nto call push_node_boundaries() which will set the node beginning and end to\nat *least* the requested boundary.\n\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: \"Keith Mannthey\" \u003ckmannth@gmail.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9c7cd6877cf8db15269163deda69392263124c1e",
      "tree": "ff5197bdd2d5f02a5032c050eb39349534a4b14b",
      "parents": [
        "0e0b864e069c52a7b3e4a7da56e29b03a012fd75"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@skynet.ie",
        "time": "Wed Sep 27 01:49:58 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:11 2006 -0700"
      },
      "message": "[PATCH] Account for holes that are outside the range of physical memory\n\nabsent_pages_in_range() made the assumption that users of the API would not\ncare about holes beyound the end of physical memory.  This was not the\ncase.  This patch will account for ranges outside of physical memory as\nholes correctly.\n\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: \"Keith Mannthey\" \u003ckmannth@gmail.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0e0b864e069c52a7b3e4a7da56e29b03a012fd75",
      "tree": "e3fcfd997ef912ed3c61cb2b5c2ca57a7f45ec58",
      "parents": [
        "05e0caad3b7bd0d0fbeff980bca22f186241a501"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Sep 27 01:49:56 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:11 2006 -0700"
      },
      "message": "[PATCH] Account for memmap and optionally the kernel image as holes\n\nThe x86_64 code accounted for memmap and some portions of the the DMA zone as\nholes.  This was because those areas would never be reclaimed and accounting\nfor them as memory affects min watermarks.  This patch will account for the\nmemmap as a memory hole.  Architectures may optionally use set_dma_reserve()\nif they wish to account for a portion of memory in ZONE_DMA as a hole.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: \"Keith Mannthey\" \u003ckmannth@gmail.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c713216deebd95d2b0ab38fef8bb2361c0180c2d",
      "tree": "a5a8c61be427e3591811ff712b9ec7ef2f1a1f20",
      "parents": [
        "2bd0cfbde2c0a74e209acbf045f1298cc2f61e01"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Sep 27 01:49:43 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:11 2006 -0700"
      },
      "message": "[PATCH] Introduce mechanism for registering active regions of memory\n\nAt a basic level, architectures define structures to record where active\nranges of page frames are located.  Once located, the code to calculate zone\nsizes and holes in each architecture is very similar.  Some of this zone and\nhole sizing code is difficult to read for no good reason.  This set of patches\neliminates the similar-looking architecture-specific code.\n\nThe patches introduce a mechanism where architectures register where the\nactive ranges of page frames are with add_active_range().  When all areas have\nbeen discovered, free_area_init_nodes() is called to initialise the pgdat and\nzones.  The zone sizes and holes are then calculated in an architecture\nindependent manner.\n\nPatch 1 introduces the mechanism for registering and initialising PFN ranges\nPatch 2 changes ppc to use the mechanism - 139 arch-specific LOC removed\nPatch 3 changes x86 to use the mechanism - 136 arch-specific LOC removed\nPatch 4 changes x86_64 to use the mechanism - 74 arch-specific LOC removed\nPatch 5 changes ia64 to use the mechanism - 52 arch-specific LOC removed\nPatch 6 accounts for mem_map as a memory hole as the pages are not reclaimable.\n\tIt adjusts the watermarks slightly\n\nTony Luck has successfully tested for ia64 on Itanium with tiger_defconfig,\ngensparse_defconfig and defconfig.  Bob Picco has also tested and debugged on\nIA64.  Jack Steiner successfully boot tested on a mammoth SGI IA64-based\nmachine.  These were on patches against 2.6.17-rc1 and release 3 of these\npatches but there have been no ia64-changes since release 3.\n\nThere are differences in the zone sizes for x86_64 as the arch-specific code\nfor x86_64 accounts the kernel image and the starting mem_maps as memory holes\nbut the architecture-independent code accounts the memory as present.\n\nThe big benefit of this set of patches is a sizable reduction of\narchitecture-specific code, some of which is very hairy.  There should be a\ngreater reduction when other architectures use the same mechanisms for zone\nand hole sizing but I lack the hardware to test on.\n\nAdditional credit;\n\tDave Hansen for the initial suggestion and comments on early patches\n\tAndy Whitcroft for reviewing early versions and catching numerous\n\t\terrors\n\tTony Luck for testing and debugging on IA64\n\tBob Picco for fixing bugs related to pfn registration, reviewing a\n\t\tnumber of patch revisions, providing a number of suggestions\n\t\ton future direction and testing heavily\n\tJack Steiner and Robin Holt for testing on IA64 and clarifying\n\t\tissues related to memory holes\n\tYasunori for testing on IA64\n\tAndi Kleen for reviewing and feeding back about x86_64\n\tChristian Kujau for providing valuable information related to ACPI\n\t\tproblems on x86_64 and testing potential fixes\n\nThis patch:\n\nDefine the structure to represent an active range of page frames within a node\nin an architecture independent manner.  Architectures are expected to register\nactive ranges of PFNs using add_active_range(nid, start_pfn, end_pfn) and call\nfree_area_init_nodes() passing the PFNs of the end of each zone.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Bob Picco \u003cbob.picco@hp.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: \"Keith Mannthey\" \u003ckmannth@gmail.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f623f0db8e6aa86a37be86167e4ff478821a9f4f",
      "tree": "fab12e8dc57d14101e9e512ba708b83f74551dd9",
      "parents": [
        "e3920fb42c8ddfe63befb54d95c0e13eabacea9b"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Sep 25 23:32:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:59 2006 -0700"
      },
      "message": "[PATCH] swsusp: Fix mark_free_pages\n\nClean up mm/page_alloc.c#mark_free_pages() and make it avoid clearing\nPageNosaveFree for PageNosave pages.  This allows us to get rid of an ugly\nhack in kernel/power/snapshot.c#copy_data_pages().\n\nAdditionally, the page-copying loop in copy_data_pages() is moved to an\ninline function.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\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": "0ff38490c836dc379ff7ec45b10a15a662f4e5f6",
      "tree": "cb42d5d3cace3c8d12f0b304879039c503807981",
      "parents": [
        "972d1a7b140569084439a81265a0f15b74e924e0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:52 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:51 2006 -0700"
      },
      "message": "[PATCH] zone_reclaim: dynamic slab reclaim\n\nCurrently one can enable slab reclaim by setting an explicit option in\n/proc/sys/vm/zone_reclaim_mode.  Slab reclaim is then used as a final\noption if the freeing of unmapped file backed pages is not enough to free\nenough pages to allow a local allocation.\n\nHowever, that means that the slab can grow excessively and that most memory\nof a node may be used by slabs.  We have had a case where a machine with\n46GB of memory was using 40-42GB for slab.  Zone reclaim was effective in\ndealing with pagecache pages.  However, slab reclaim was only done during\nglobal reclaim (which is a bit rare on NUMA systems).\n\nThis patch implements slab reclaim during zone reclaim.  Zone reclaim\noccurs if there is a danger of an off node allocation.  At that point we\n\n1. Shrink the per node page cache if the number of pagecache\n   pages is more than min_unmapped_ratio percent of pages in a zone.\n\n2. Shrink the slab cache if the number of the nodes reclaimable slab pages\n   (patch depends on earlier one that implements that counter)\n   are more than min_slab_ratio (a new /proc/sys/vm tunable).\n\nThe shrinking of the slab cache is a bit problematic since it is not node\nspecific.  So we simply calculate what point in the slab we want to reach\n(current per node slab use minus the number of pages that neeed to be\nallocated) and then repeately run the global reclaim until that is\nunsuccessful or we have reached the limit.  I hope we will have zone based\nslab reclaim at some point which will make that easier.\n\nThe default for the min_slab_ratio is 5%\n\nAlso remove the slab option from /proc/sys/vm/zone_reclaim_mode.\n\n[akpm@osdl.org: cleanups]\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": "972d1a7b140569084439a81265a0f15b74e924e0",
      "tree": "e86e676e407503ef3d98020a88bb925235f11434",
      "parents": [
        "8417bba4b151346ed475fcc923693c9e3be89063"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:51 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:51 2006 -0700"
      },
      "message": "[PATCH] ZVC: Support NR_SLAB_RECLAIMABLE / NR_SLAB_UNRECLAIMABLE\n\nRemove the atomic counter for slab_reclaim_pages and replace the counter\nand NR_SLAB with two ZVC counter that account for unreclaimable and\nreclaimable slab pages: NR_SLAB_RECLAIMABLE and NR_SLAB_UNRECLAIMABLE.\n\nChange the check in vmscan.c to refer to to NR_SLAB_RECLAIMABLE.  The\nintend seems to be to check for slab pages that could be freed.\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": "8417bba4b151346ed475fcc923693c9e3be89063",
      "tree": "93d559e32bc76077c1f837aed09a5df56849c610",
      "parents": [
        "d00bcc98d7ec2c87391c9d9e1cca519ef64d33ef"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:51 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:51 2006 -0700"
      },
      "message": "[PATCH] Replace min_unmapped_ratio by min_unmapped_pages in struct zone\n\n*_pages is a better description of the role of the variable.\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": "39bbcb8f88154c4ac9853baf3f1134af4c987517",
      "tree": "79f9867ead896c28d138545089e6d85db426c09f",
      "parents": [
        "006d22d9bbb7e66279ba5cc4556b54eeaf8fd556"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:51 2006 -0700"
      },
      "message": "[PATCH] mm: do not check unpopulated zones for draining and counter updates\n\nIf a zone is unpopulated then we do not need to check for pages that are to\nbe drained and also not for vm counters that may need to be updated.\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": "006d22d9bbb7e66279ba5cc4556b54eeaf8fd556",
      "tree": "5af5a6676af234db8836bb1e3ef71e6cf8ccb0a9",
      "parents": [
        "46a82b2d5591335277ed2930611f6acb4ce654ed"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:48 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:51 2006 -0700"
      },
      "message": "[PATCH] Optimize free_one_page\n\nFree one_page currently adds the page to a fake list and calls\nfree_page_bulk.  Fee_page_bulk takes it off again and then calles\n__free_one_page.\n\nMake free_one_page go directly to __free_one_page.  Saves list on / off and\na temporary list in free_one_page for higher ordered pages.\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": "1192d526412b1b8ccb1493064cea06efc12c772b",
      "tree": "8caa9e73ae1ead8d057ca6d273ed091c324e9ef9",
      "parents": [
        "bd1b1677b5d4f39deda068bf5cc43ce3aaec839f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Sep 25 23:31:45 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:50 2006 -0700"
      },
      "message": "[PATCH] Cleanup: Add zone pointer to get_page_from_freelist\n\nThere are frequent references to *z in get_page_from_freelist.\n\nAdd an explicit zone variable that can be used in all these places.\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"
    }
  ],
  "next": "e53ef38d05dd59ed281a35590e4a5b64d8ff4c52"
}
