)]}'
{
  "log": [
    {
      "commit": "e48e67e08c340def3d0349c2910d23c7985fb6fa",
      "tree": "8cac490109c34d694147ef55bb2ab80769e5f331",
      "parents": [
        "6dda9d55bf545013597724bf0cd79d01bd2bd944"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Mon May 24 14:31:57 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:06:56 2010 -0700"
      },
      "message": "sparsemem: on no vmemmap path put mem_map on node high too\n\nWe need to put mem_map high when virtual memmap is not used.\n\nbefore this patch\nfree mem pfn range on first node:\n[    0.000000]  19 - 1f\n[    0.000000]  28 40 - 80 95\n[    0.000000]  702 740 - 1000 1000\n[    0.000000]  347c - 347e\n[    0.000000]  34e7 3500 - 3b80 3b8b\n[    0.000000]  73b8b 73bc0 - 73c00 73c00\n[    0.000000]  73ddd - 73e00\n[    0.000000]  73fdd - 74000\n[    0.000000]  741dd - 74200\n[    0.000000]  743dd - 74400\n[    0.000000]  745dd - 74600\n[    0.000000]  747dd - 74800\n[    0.000000]  749dd - 74a00\n[    0.000000]  74bdd - 74c00\n[    0.000000]  74ddd - 74e00\n[    0.000000]  74fdd - 75000\n[    0.000000]  751dd - 75200\n[    0.000000]  753dd - 75400\n[    0.000000]  755dd - 75600\n[    0.000000]  757dd - 75800\n[    0.000000]  759dd - 75a00\n[    0.000000]  79bdd 79c00 - 7d540 7d550\n[    0.000000]  7f745 - 7f750\n[    0.000000]  10000b 100040 - 2080000 2080000\nso only 79c00 - 7d540 are major free block under 4g...\n\nafter this patch, we will get\n[    0.000000]  19 - 1f\n[    0.000000]  28 40 - 80 95\n[    0.000000]  702 740 - 1000 1000\n[    0.000000]  347c - 347e\n[    0.000000]  34e7 3500 - 3600 3600\n[    0.000000]  37dd - 3800\n[    0.000000]  39dd - 3a00\n[    0.000000]  3bdd - 3c00\n[    0.000000]  3ddd - 3e00\n[    0.000000]  3fdd - 4000\n[    0.000000]  41dd - 4200\n[    0.000000]  43dd - 4400\n[    0.000000]  45dd - 4600\n[    0.000000]  47dd - 4800\n[    0.000000]  49dd - 4a00\n[    0.000000]  4bdd - 4c00\n[    0.000000]  4ddd - 4e00\n[    0.000000]  4fdd - 5000\n[    0.000000]  51dd - 5200\n[    0.000000]  53dd - 5400\n[    0.000000]  95dd 9600 - 7d540 7d550\n[    0.000000]  7f745 - 7f750\n[    0.000000]  17000b 170040 - 2080000 2080000\nwe will have 9600 - 7d540 for major free block...\n\nsparse-vmemmap path already used __alloc_bootmem_node_high()\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "81d0d950e5037a26b71e568ff235ff9e998f4ab3",
      "tree": "c9f6d2ca8dd5ddacc0bbb0fbc67f30449dbf29ff",
      "parents": [
        "fb90ef93df654f2678933efbbf864adac0ae490e"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Sat Feb 27 09:29:38 2010 -0800"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Mon Mar 01 17:59:24 2010 -0800"
      },
      "message": "sparsemem: Fix compilation on PowerPC\n\nStephen reported:\nbuild (powerpc\nppc64_defconfig) produced these warnings:\n\nmm/sparse.c: In function \u0027sparse_init\u0027:\nmm/sparse.c:488: warning: unused variable \u0027map_count\u0027\nmm/sparse.c:484: warning: unused variable \u0027size2\u0027\nmm/sparse.c:481: warning: unused variable \u0027map_map\u0027\nmm/sparse.c: At top level:\nmm/sparse.c:442: warning: \u0027sparse_early_mem_maps_alloc_node\u0027 defined but not used\n\nIntroduced by commit 9bdac914240759457175ac0d6529a37d2820bc4d\n(\"sparsemem: Put mem map for one node together\").\n\nConditionalize the bits appropriately based on the setting of\nCONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nTested-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c4B895682.1080706@kernel.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "9bdac914240759457175ac0d6529a37d2820bc4d",
      "tree": "8fb7d26a351d2cd526835f1494ebeb818e988abb",
      "parents": [
        "a4322e1bad91fbca27056fc38d2cbca3f1eae0cf"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Wed Feb 10 01:20:22 2010 -0800"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Fri Feb 12 09:42:38 2010 -0800"
      },
      "message": "sparsemem: Put mem map for one node together.\n\nAdd vmemmap_alloc_block_buf for mem map only.\n\nIt will fallback to the old way if it cannot get a block that big.\n\nBefore this patch, when a node have 128g ram installed, memmap are\nsplit into two parts or more.\n[    0.000000]  [ffffea0000000000-ffffea003fffffff] PMD -\u003e [ffff880100600000-ffff88013e9fffff] on node 1\n[    0.000000]  [ffffea0040000000-ffffea006fffffff] PMD -\u003e [ffff88013ec00000-ffff88016ebfffff] on node 1\n[    0.000000]  [ffffea0070000000-ffffea007fffffff] PMD -\u003e [ffff882000600000-ffff8820105fffff] on node 0\n[    0.000000]  [ffffea0080000000-ffffea00bfffffff] PMD -\u003e [ffff882010800000-ffff8820507fffff] on node 0\n[    0.000000]  [ffffea00c0000000-ffffea00dfffffff] PMD -\u003e [ffff882050a00000-ffff8820709fffff] on node 0\n[    0.000000]  [ffffea00e0000000-ffffea00ffffffff] PMD -\u003e [ffff884000600000-ffff8840205fffff] on node 2\n[    0.000000]  [ffffea0100000000-ffffea013fffffff] PMD -\u003e [ffff884020800000-ffff8840607fffff] on node 2\n[    0.000000]  [ffffea0140000000-ffffea014fffffff] PMD -\u003e [ffff884060a00000-ffff8840709fffff] on node 2\n[    0.000000]  [ffffea0150000000-ffffea017fffffff] PMD -\u003e [ffff886000600000-ffff8860305fffff] on node 3\n[    0.000000]  [ffffea0180000000-ffffea01bfffffff] PMD -\u003e [ffff886030800000-ffff8860707fffff] on node 3\n[    0.000000]  [ffffea01c0000000-ffffea01ffffffff] PMD -\u003e [ffff888000600000-ffff8880405fffff] on node 4\n[    0.000000]  [ffffea0200000000-ffffea022fffffff] PMD -\u003e [ffff888040800000-ffff8880707fffff] on node 4\n[    0.000000]  [ffffea0230000000-ffffea023fffffff] PMD -\u003e [ffff88a000600000-ffff88a0105fffff] on node 5\n[    0.000000]  [ffffea0240000000-ffffea027fffffff] PMD -\u003e [ffff88a010800000-ffff88a0507fffff] on node 5\n[    0.000000]  [ffffea0280000000-ffffea029fffffff] PMD -\u003e [ffff88a050a00000-ffff88a0709fffff] on node 5\n[    0.000000]  [ffffea02a0000000-ffffea02bfffffff] PMD -\u003e [ffff88c000600000-ffff88c0205fffff] on node 6\n[    0.000000]  [ffffea02c0000000-ffffea02ffffffff] PMD -\u003e [ffff88c020800000-ffff88c0607fffff] on node 6\n[    0.000000]  [ffffea0300000000-ffffea030fffffff] PMD -\u003e [ffff88c060a00000-ffff88c0709fffff] on node 6\n[    0.000000]  [ffffea0310000000-ffffea033fffffff] PMD -\u003e [ffff88e000600000-ffff88e0305fffff] on node 7\n[    0.000000]  [ffffea0340000000-ffffea037fffffff] PMD -\u003e [ffff88e030800000-ffff88e0707fffff] on node 7\n\nafter patch will get\n[    0.000000]  [ffffea0000000000-ffffea006fffffff] PMD -\u003e [ffff880100200000-ffff88016e5fffff] on node 0\n[    0.000000]  [ffffea0070000000-ffffea00dfffffff] PMD -\u003e [ffff882000200000-ffff8820701fffff] on node 1\n[    0.000000]  [ffffea00e0000000-ffffea014fffffff] PMD -\u003e [ffff884000200000-ffff8840701fffff] on node 2\n[    0.000000]  [ffffea0150000000-ffffea01bfffffff] PMD -\u003e [ffff886000200000-ffff8860701fffff] on node 3\n[    0.000000]  [ffffea01c0000000-ffffea022fffffff] PMD -\u003e [ffff888000200000-ffff8880701fffff] on node 4\n[    0.000000]  [ffffea0230000000-ffffea029fffffff] PMD -\u003e [ffff88a000200000-ffff88a0701fffff] on node 5\n[    0.000000]  [ffffea02a0000000-ffffea030fffffff] PMD -\u003e [ffff88c000200000-ffff88c0701fffff] on node 6\n[    0.000000]  [ffffea0310000000-ffffea037fffffff] PMD -\u003e [ffff88e000200000-ffff88e0701fffff] on node 7\n\n-v2: change buf to vmemmap_buf instead according to Ingo\n     also add CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER according to Ingo\n-v3: according to Andrew, use sizeof(name) instead of hard coded 15\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c1265793639-15071-19-git-send-email-yinghai@kernel.org\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "a4322e1bad91fbca27056fc38d2cbca3f1eae0cf",
      "tree": "4d7b12393e1bd06c9c39e384aa6cc0b35e3257a8",
      "parents": [
        "08677214e318297f228237be0042aac754f48f1d"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Wed Feb 10 01:20:21 2010 -0800"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Fri Feb 12 09:42:37 2010 -0800"
      },
      "message": "sparsemem: Put usemap for one node together\n\nCould save some buffer space instead of applying one by one.\n\nCould help that system that is going to use early_res instead of bootmem\nless entries in early_res make search more faster on system with more memory.\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c1265793639-15071-18-git-send-email-yinghai@kernel.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "f52407ce2deac76c87abc8211a63ea152ba72d54",
      "tree": "6e3976fae721bd178d68d11750f7ad7f86d8feca",
      "parents": [
        "8e7e40d9658cf7b2ae2b76484e235799b3ddaa97"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Sep 21 17:01:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:26 2009 -0700"
      },
      "message": "memory hotplug: alloc page from other node in memory online\n\nTo initialize hotadded node, some pages are allocated.  At that time, the\nnode hasn\u0027t memory, this makes the allocation always fail.  In such case,\nlet\u0027s allocate pages from other nodes.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Yakui Zhao \u003cyakui.zhao@intel.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef161a9863b045909142daea9490b067997f3dc5",
      "tree": "2cf6aa8a617110c7680978b8aaceea87ec6d2a3d",
      "parents": [
        "0f043a81ebe84be3576667f04fdda481609e3816"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@gmail.com",
        "time": "Tue Mar 31 15:19:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:11 2009 -0700"
      },
      "message": "mm: mminit_validate_memmodel_limits(): remove redundant test\n\nIn case if start_pfn overlap the upper bound no need to test end_pfn again\nsince we have it already trimmed.\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "31168481c32c8a485e1003af9433124dede57f8d",
      "tree": "0d0bb17b8f45cb3b176acc63dee4f2a57aaca500",
      "parents": [
        "ed313489badef16d700f5a3be50e8fd8f8294bc8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Nov 22 17:33:24 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 10:03:35 2008 -0800"
      },
      "message": "meminit section warnings\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fc1efbdb7a1175759b099d74b67921396e5e8e3d",
      "tree": "e0079c228cad186a1d5ef1dfcdb4bbe2d4a31188",
      "parents": [
        "070cb06593006e7d565d4763380f3edd8dbdc134"
      ],
      "author": {
        "name": "Huang Weiyi",
        "email": "weiyi.huang@gmail.com",
        "time": "Tue Aug 12 15:09:00 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:07:30 2008 -0700"
      },
      "message": "mm/sparse.c: removed duplicated include\n\nSigned-off-by: Huang Weiyi \u003cweiyi.huang@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": "9e5c6da71e89fa25ced6e88182225a99941bec90",
      "tree": "076faf410107f55d1d6cfdf05c779faf0b5d21e3",
      "parents": [
        "23d5f96ce6571da51c0f6bfa7361e5f91f314b2b"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri Jul 25 19:46:22 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:12 2008 -0700"
      },
      "message": "make mm/sparse.c: make a function static\n\nThis patch makes the needlessly global sparse_early_mem_map_alloc()\nstatic.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "48c906823f3927b981db9f0b03c2e2499977ee93",
      "tree": "f01270b14dbc8e0816e966e1aed1e3294e1c1d4a",
      "parents": [
        "f84f9504bddeec33a72d64ebe95143d3aaeb3f9b"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Wed Jul 23 21:28:15 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:21 2008 -0700"
      },
      "message": "memory hotplug: allocate usemap on the section with pgdat\n\nUsemaps are allocated on the section which has pgdat by this.\n\nBecause usemap size is very small, many other sections usemaps are\nallocated on only one page.  If a section has usemap, it can\u0027t be removed\nuntil removing other sections.  This dependency is not desirable for\nmemory removing.\n\nPgdat has similar feature.  When a section has pgdat area, it must be the\nlast section for removing on the node.  So, if section A has pgdat and\nsection B has usemap for section A, Both sections can\u0027t be removed due to\ndependency each other.\n\nTo solve this issue, this patch collects usemap on same section with pgdat\nas much as possible.  If other sections doesn\u0027t have any dependency, this\nsection will be able to be removed finally.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Hiroyuki KAMEZAWA \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Tony Breeds \u003ctony@bakeyournoodle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2dbb51c49f4fecb8330e43247a0edfbc4b2b8974",
      "tree": "507f06335dd1e66144f176e8e863743895e43d79",
      "parents": [
        "708614e6180f398cd307ea0048d48ba6fa274610"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Jul 23 21:26:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:13 2008 -0700"
      },
      "message": "mm: make defensive checks around PFN values registered for memory usage\n\nThere are a number of different views to how much memory is currently active.\nThere is the arch-independent zone-sizing view, the bootmem allocator and\nmemory models view.\n\nArchitectures register this information at different times and is not\nnecessarily in sync particularly with respect to some SPARSEMEM limitations.\n\nThis patch introduces mminit_validate_memmodel_limits() which is able to\nvalidate and correct PFN ranges with respect to the memory model.  It is only\nSPARSEMEM that currently validates itself.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5167464446e527b5a3b5618ba0baff93048bcbbe",
      "tree": "798e82ec478d6d6935ae371fc764ae95d86a337d",
      "parents": [
        "3a902c5f6851cd0b64c33efaa3bd57aa27a82efb"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Apr 30 00:55:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:55 2008 -0700"
      },
      "message": "revert \"memory hotplug: allocate usemap on the section with pgdat\"\n\nThis:\n\ncommit 86f6dae1377523689bd8468fed2f2dd180fc0560\nAuthor: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nDate:   Mon Apr 28 02:13:33 2008 -0700\n\n    memory hotplug: allocate usemap on the section with pgdat\n\n    Usemaps are allocated on the section which has pgdat by this.\n\n    Because usemap size is very small, many other sections usemaps are allocated\n    on only one page.  If a section has usemap, it can\u0027t be removed until removing\n    other sections.  This dependency is not desirable for memory removing.\n\n    Pgdat has similar feature.  When a section has pgdat area, it must be the last\n    section for removing on the node.  So, if section A has pgdat and section B\n    has usemap for section A, Both sections can\u0027t be removed due to dependency\n    each other.\n\n    To solve this issue, this patch collects usemap on same section with pgdat.\n    If other sections doesn\u0027t have any dependency, this section will be able to be\n    removed finally.\n\n    Signed-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\n    Cc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\n    Cc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\n    Cc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\n    Signed-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n    Signed-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n\nbroke davem\u0027s sparc64 bootup.  Revert it while we work out what went wrong.\n\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d40cee245ff6ad05d3448401d7320be82c1c5af1",
      "tree": "5467cada898e80d5e43592393b21252312c908fa",
      "parents": [
        "d7853d1f8932c847a8d7b3b38e6baedf77148cfb"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Apr 30 00:55:07 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:53 2008 -0700"
      },
      "message": "mm: remove remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@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": "0c0a4a517a31e05efb38304668198a873bfec6ca",
      "tree": "3d02fe9dbf160cd5d328c1e2cf4b40ce37426c5f",
      "parents": [
        "86f6dae1377523689bd8468fed2f2dd180fc0560"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Mon Apr 28 02:13:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:26 2008 -0700"
      },
      "message": "memory hotplug: free memmaps allocated by bootmem\n\nThis patch is to free memmaps which is allocated by bootmem.\n\nFreeing usemap is not necessary.  The pages of usemap may be necessary for\nother sections.\n\nIf removing section is last section on the node, its section is the final user\nof usemap page.  (usemaps are allocated on its section by previous patch.) But\nit shouldn\u0027t be freed too, because the section must be logical offline state\nwhich all pages are isolated against page allocater.  If it is freed, page\nalloctor may use it which will be removed physically soon.  It will be\ndisaster.  So, this patch keeps it as it is.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\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": "86f6dae1377523689bd8468fed2f2dd180fc0560",
      "tree": "90c4495ae947627d610f13c8a185fd16358bc14e",
      "parents": [
        "e70260aabea3af2a84b951e75166dcebe689b88e"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Mon Apr 28 02:13:33 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:25 2008 -0700"
      },
      "message": "memory hotplug: allocate usemap on the section with pgdat\n\nUsemaps are allocated on the section which has pgdat by this.\n\nBecause usemap size is very small, many other sections usemaps are allocated\non only one page.  If a section has usemap, it can\u0027t be removed until removing\nother sections.  This dependency is not desirable for memory removing.\n\nPgdat has similar feature.  When a section has pgdat area, it must be the last\nsection for removing on the node.  So, if section A has pgdat and section B\nhas usemap for section A, Both sections can\u0027t be removed due to dependency\neach other.\n\nTo solve this issue, this patch collects usemap on same section with pgdat.\nIf other sections doesn\u0027t have any dependency, this section will be able to be\nremoved finally.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\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": "9d99217a02a06a7cc83f065b73e976970970c58c",
      "tree": "14d270c37701f9ae621c9cd8b076e207ee86e5d0",
      "parents": [
        "04753278769f3b6c3b79a080edb52f21d83bf6e2"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Mon Apr 28 02:13:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:25 2008 -0700"
      },
      "message": "memory hotplug: align memmap to page size\n\nTo free memmap easier, this patch aligns it to page size.  Bootmem allocater\nmay mix some objects in one pages.  It\u0027s not good for freeing memmap of memory\nhot-remove.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\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": "04753278769f3b6c3b79a080edb52f21d83bf6e2",
      "tree": "0dff4088b44016b6d04930b2fc09419412821aa2",
      "parents": [
        "7f2e9525ba55b1c42ad6c4a5a59d7eb7bdd9be72"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Mon Apr 28 02:13:31 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:25 2008 -0700"
      },
      "message": "memory hotplug: register section/node id to free\n\nThis patch set is to free pages which is allocated by bootmem for\nmemory-hotremove.  Some structures of memory management are allocated by\nbootmem.  ex) memmap, etc.\n\nTo remove memory physically, some of them must be freed according to\ncircumstance.  This patch set makes basis to free those pages, and free\nmemmaps.\n\nBasic my idea is using remain members of struct page to remember information\nof users of bootmem (section number or node id).  When the section is\nremoving, kernel can confirm it.  By this information, some issues can be\nsolved.\n\n  1) When the memmap of removing section is allocated on other\n     section by bootmem, it should/can be free.\n  2) When the memmap of removing section is allocated on the\n     same section, it shouldn\u0027t be freed. Because the section has to be\n     logical memory offlined already and all pages must be isolated against\n     page allocater. If it is freed, page allocator may use it which will\n     be removed physically soon.\n  3) When removing section has other section\u0027s memmap,\n     kernel will be able to show easily which section should be removed\n     before it for user. (Not implemented yet)\n  4) When the above case 2), the page isolation will be able to check and skip\n     memmap\u0027s page when logical memory offline (offline_pages()).\n     Current page isolation code fails in this case because this page is\n     just reserved page and it can\u0027t distinguish this pages can be\n     removed or not. But, it will be able to do by this patch.\n     (Not implemented yet.)\n  5) The node information like pgdat has similar issues. But, this\n     will be able to be solved too by this.\n     (Not implemented yet, but, remembering node id in the pages.)\n\nFortunately, current bootmem allocator just keeps PageReserved flags,\nand doesn\u0027t use any other members of page struct. The users of\nbootmem doesn\u0027t use them too.\n\nThis patch:\n\nThis is to register information which is node or section\u0027s id.  Kernel can\ndistinguish which node/section uses the pages allcated by bootmem.  This is\nbasis for hot-remove sections or nodes.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\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": "ea01ea937dcae2caa146dea1918cccf2f16ed3c4",
      "tree": "aa3189d587dc04f75bd6a0d79d7f5a764200cd81",
      "parents": [
        "2a4e2b8780c6df42b19c053243dada7fa4d311ee"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Mon Apr 28 02:12:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:17 2008 -0700"
      },
      "message": "hotplug memory remove: generic __remove_pages() support\n\nGeneric helper function to remove section mappings and sysfs entries for the\nsection of the memory we are removing.  offline_pages() correctly adjusted\nzone and marked the pages reserved.\n\nTODO: Yasunori Goto is working on patches to free up allocations from bootmem.\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nAcked-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2b91e2eec9678dbda274e906cc32ea8f711da3b",
      "tree": "fd9e9799078c65c8282ca3a996e6c3bd9e94fa4c",
      "parents": [
        "1a27fc0a42162964d758e9d36d2d1b49c082a67c"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel.send@gmail.com",
        "time": "Sat Apr 12 01:19:24 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 26 22:51:09 2008 +0200"
      },
      "message": "x86_64/mm: check and print vmemmap allocation continuous\n\nOn big systems with lots of memory, don\u0027t print out too much during\nbootup, and make it easy to find if it is continuous.\n\non 256G 8 sockets system will get\n [ffffe20000000000-ffffe20002bfffff] PMD -\u003e [ffff810001400000-ffff810003ffffff] on node 0\n[ffffe2001c700000-ffffe2001c7fffff] potential offnode page_structs\n [ffffe20002c00000-ffffe2001c7fffff] PMD -\u003e [ffff81000c000000-ffff8100255fffff] on node 0\n[ffffe20038700000-ffffe200387fffff] potential offnode page_structs\n [ffffe2001c800000-ffffe200387fffff] PMD -\u003e [ffff810820200000-ffff81083c1fffff] on node 1\n [ffffe20040000000-ffffe2007fffffff] PUD -\u003effff811027a00000 on node 2\n [ffffe20038800000-ffffe2003fffffff] PMD -\u003e [ffff811020200000-ffff8110279fffff] on node 2\n[ffffe20054700000-ffffe200547fffff] potential offnode page_structs\n [ffffe20040000000-ffffe200547fffff] PMD -\u003e [ffff811027c00000-ffff81103c3fffff] on node 2\n[ffffe20070700000-ffffe200707fffff] potential offnode page_structs\n [ffffe20054800000-ffffe200707fffff] PMD -\u003e [ffff811820200000-ffff81183c1fffff] on node 3\n [ffffe20080000000-ffffe200bfffffff] PUD -\u003effff81202fa00000 on node 4\n [ffffe20070800000-ffffe2007fffffff] PMD -\u003e [ffff812020200000-ffff81202f9fffff] on node 4\n[ffffe2008c700000-ffffe2008c7fffff] potential offnode page_structs\n [ffffe20080000000-ffffe2008c7fffff] PMD -\u003e [ffff81202fc00000-ffff81203c3fffff] on node 4\n[ffffe200a8700000-ffffe200a87fffff] potential offnode page_structs\n [ffffe2008c800000-ffffe200a87fffff] PMD -\u003e [ffff812820200000-ffff81283c1fffff] on node 5\n [ffffe200c0000000-ffffe200ffffffff] PUD -\u003effff813037a00000 on node 6\n [ffffe200a8800000-ffffe200bfffffff] PMD -\u003e [ffff813020200000-ffff8130379fffff] on node 6\n[ffffe200c4700000-ffffe200c47fffff] potential offnode page_structs\n [ffffe200c0000000-ffffe200c47fffff] PMD -\u003e [ffff813037c00000-ffff81303c3fffff] on node 6\n [ffffe200c4800000-ffffe200e07fffff] PMD -\u003e [ffff813820200000-ffff81383c1fffff] on node 7\n\ninstead of a very long print out...\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e123dd3f0ec1664576456ea1ea045591a0a95f0c",
      "tree": "b73895fd0750749a1b0d85599ca02da4a920c9c0",
      "parents": [
        "539a5fe22620a1665cce504167953a71a43232ad"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Sun Apr 13 11:51:06 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 26 22:51:07 2008 +0200"
      },
      "message": "mm: make mem_map allocation continuous\n\nvmemmap allocation currently has this layout:\n\n [ffffe20000000000-ffffe200001fffff] PMD -\u003effff810001400000 on node 0\n [ffffe20000200000-ffffe200003fffff] PMD -\u003effff810001800000 on node 0\n [ffffe20000400000-ffffe200005fffff] PMD -\u003effff810001c00000 on node 0\n [ffffe20000600000-ffffe200007fffff] PMD -\u003effff810002000000 on node 0\n [ffffe20000800000-ffffe200009fffff] PMD -\u003effff810002400000 on node 0\n...\n\nnote that there is a 2M hole between them - not optimal.\n\nthe root cause is that usemap (24 bytes) will be allocated after every 2M\nmem_map, and it will push next vmemmap (2M) to the next (2M) alignment.\n\nsolution: try to allocate the mem_map continously.\n\nafter the patch, we get:\n\n [ffffe20000000000-ffffe200001fffff] PMD -\u003effff810001400000 on node 0\n [ffffe20000200000-ffffe200003fffff] PMD -\u003effff810001600000 on node 0\n [ffffe20000400000-ffffe200005fffff] PMD -\u003effff810001800000 on node 0\n [ffffe20000600000-ffffe200007fffff] PMD -\u003effff810001a00000 on node 0\n [ffffe20000800000-ffffe200009fffff] PMD -\u003effff810001c00000 on node 0\n...\n\nwhich is the ideal layout.\n\nand usemap will share a page because of they are allocated continuously too:\n\nsparse_early_usemap_alloc: usemap \u003d ffff810024e00000 size \u003d 24\nsparse_early_usemap_alloc: usemap \u003d ffff810024e00080 size \u003d 24\nsparse_early_usemap_alloc: usemap \u003d ffff810024e00100 size \u003d 24\nsparse_early_usemap_alloc: usemap \u003d ffff810024e00180 size \u003d 24\n...\n\nso we make the bootmem allocation more compact and use less memory\nfor usemap \u003d\u003e mission accomplished ;-)\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bead9a3abd15710b0bdfd418daef606722d86282",
      "tree": "7557956e8dfe027c0ecf2f2ed759169a4e02a266",
      "parents": [
        "cf39cc3b56bc4a562db6242d3069f65034ec7549"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 16 01:40:00 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 15 19:30:19 2008 -0700"
      },
      "message": "mm: sparsemem memory_present() fix\n\nFix memory corruption and crash on 32-bit x86 systems.\n\nIf a !PAE x86 kernel is booted on a 32-bit system with more than 4GB of\nRAM, then we call memory_present() with a start/end that goes outside\nthe scope of MAX_PHYSMEM_BITS.\n\nThat causes this loop to happily walk over the limit of the sparse\nmemory section map:\n\n    for (pfn \u003d start; pfn \u003c end; pfn +\u003d PAGES_PER_SECTION) {\n                unsigned long section \u003d pfn_to_section_nr(pfn);\n                struct mem_section *ms;\n\n                sparse_index_init(section, nid);\n                set_section_nid(section, nid);\n\n                ms \u003d __nr_to_section(section);\n                if (!ms-\u003esection_mem_map)\n                        ms-\u003esection_mem_map \u003d sparse_encode_early_nid(nid) |\n\t\t\t                                SECTION_MARKED_PRESENT;\n\n\u0027ms\u0027 will be out of bounds and we\u0027ll corrupt a small amount of memory by\nencoding the node ID and writing SECTION_MARKED_PRESENT (\u003d\u003d0x1) over it.\n\nThe corruption might happen when encoding a non-zero node ID, or due to\nthe SECTION_MARKED_PRESENT which is 0x1:\n\n\tmmzone.h:#define\tSECTION_MARKED_PRESENT\t(1UL\u003c\u003c0)\n\nThe fix is to sanity check anything the architecture passes to\nsparsemem.\n\nThis bug seems to be rather old (as old as sparsemem support itself),\nbut the exact incarnation depended on random details like configs, which\nmade this bug more prominent in v2.6.25-to-be.\n\nAn additional enhancement might be to print a warning about ignored or\ntrimmed memory ranges.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nTested-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Yinghai Lu \u003cYinghai.Lu@sun.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a322f8ab66f50b6c0dcdb59abae84fede7a5fded",
      "tree": "de492ded59ef0ed1f1705244f51e46628fa26603",
      "parents": [
        "0ed361dec36945f3116ee1338638ada9a8920905"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Mon Feb 04 22:29:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "mm: fix section mismatch warning in sparse.c\n\nFix following warning:\nWARNING: mm/built-in.o(.text+0x22069): Section mismatch in reference from the function sparse_early_usemap_alloc() to the function .init.text:__alloc_bootmem_node()\n\nstatic sparse_early_usemap_alloc() were used only by sparse_init()\nand with sparse_init() annotated _init it is safe to\nannotate sparse_early_usemap_alloc with __init too.\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e2779fa281cfda13ac060753d674bbcaa23367e",
      "tree": "e2af17d69b71e0f8b3f00fe949cb8abfba4298ed",
      "parents": [
        "0b7a96114bd5991d355a1f1c1d3d9c0c9d9c1cfc"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:34 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "is_vmalloc_addr(): Check if an address is within the vmalloc boundaries\n\nChecking if an address is a vmalloc address is done in a couple of places.\nDefine a common version in mm.h and replace the other checks.\n\nAgain the include structures suck.  The definition of VMALLOC_START and\nVMALLOC_END is not available in vmalloc.h since highmem.c cannot be included\nthere.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: 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": "bbd0682596f7a434467ee551fee18d5f0b818539",
      "tree": "3afd7cbb301125fc21799a5fd9a70c2b5d700f17",
      "parents": [
        "af0cd5a7c3cded50c25e98acd94912d17a0eb914"
      ],
      "author": {
        "name": "WANG Cong",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Mon Dec 17 16:19:59 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Dec 17 19:28:16 2007 -0800"
      },
      "message": "mm/sparse.c: improve the error handling for sparse_add_one_section()\n\nImprove the error handling for mm/sparse.c::sparse_add_one_section().  And I\nsee no reason to check \u0027usemap\u0027 until holding the \u0027pgdat_resize_lock\u0027.\n\n[geoffrey.levand@am.sony.com: sparse_index_init() returns -EEXIST]\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Geoff Levand \u003cgeoffrey.levand@am.sony.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af0cd5a7c3cded50c25e98acd94912d17a0eb914",
      "tree": "fcdf2cef80bb8846a8171333e78425abf0c3a326",
      "parents": [
        "bd6cba53c524dccf72900435d29722b22f61d835"
      ],
      "author": {
        "name": "WANG Cong",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Mon Dec 17 16:19:58 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Dec 17 19:28:16 2007 -0800"
      },
      "message": "mm/sparse.c: check the return value of sparse_index_alloc()\n\nSince sparse_index_alloc() can return NULL on memory allocation failure,\nwe must deal with the failure condition when calling it.\n\nSigned-off-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6a22c57b8d2a62dea7280a6b2ac807a539ef0716",
      "tree": "8a1da0c5de1fa8c895bd1ac052e99042afa9a454",
      "parents": [
        "3529a233421fc43fa7bfdf7a4317daf28348a23d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 29 11:36:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 29 14:05:37 2007 -0700"
      },
      "message": "Revert \"x86_64: allocate sparsemem memmap above 4G\"\n\nThis reverts commit 2e1c49db4c640b35df13889b86b9d62215ade4b6.\n\nFirst off, testing in Fedora has shown it to cause boot failures,\nbisected down by Martin Ebourne, and reported by Dave Jobes.  So the\ncommit will likely be reverted in the 2.6.23 stable kernels.\n\nSecondly, in the 2.6.24 model, x86-64 has now grown support for\nSPARSEMEM_VMEMMAP, which disables the relevant code anyway, so while the\nbug is not visible any more, it\u0027s become invisible due to the code just\nbeing irrelevant and no longer enabled on the only architecture that\nthis ever affected.\n\nReported-by: Dave Jones \u003cdavej@redhat.com\u003e\nTested-by: Martin Ebourne \u003cfedora@ebourne.me.uk\u003e\nCc: Zou Nan hai \u003cnanhai.zou@intel.com\u003e\nCc: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "98f3cfc1dc7a53b629d43b7844a9b3f786213048",
      "tree": "de98ff0e3c25b01863c31abc0f3054de978b9ef8",
      "parents": [
        "48e94196a533dbee17c252bf80d0310fb8c8c2eb"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Tue Oct 16 01:26:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:02 2007 -0700"
      },
      "message": "memory hotplug: Hot-add with sparsemem-vmemmap\n\nThis patch is to avoid panic when memory hot-add is executed with\nsparsemem-vmemmap.  Current vmemmap-sparsemem code doesn\u0027t support memory\nhot-add.  Vmemmap must be populated when hot-add.  This is for\n2.6.23-rc2-mm2.\n\nTodo: # Even if this patch is applied, the message \"[xxxx-xxxx] potential\n        offnode page_structs\" is displayed. To allocate memmap on its node,\n        memmap (and pgdat) must be initialized itself like chicken and\n        egg relationship.\n\n      # vmemmap_unpopulate will be necessary for followings.\n         - For cancel hot-add due to error.\n         - For unplug.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: 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": "5c0e3066474b57c56ff0d88ca31d95bd14232fee",
      "tree": "90c963c62891db4a9039e84e615c01408b09c845",
      "parents": [
        "46dafbca2bba811665b01d8cedf911204820623c"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Fix corruption of memmap on IA64 SPARSEMEM when mem_section is not a power of 2\n\nThere are problems in the use of SPARSEMEM and pageblock flags that causes\nproblems on ia64.\n\nThe first part of the problem is that units are incorrect in\nSECTION_BLOCKFLAGS_BITS computation.  This results in a map_section\u0027s\nsection_mem_map being treated as part of a bitmap which isn\u0027t good.  This\nwas evident with an invalid virtual address when mem_init attempted to free\nbootmem pages while relinquishing control from the bootmem allocator.\n\nThe second part of the problem occurs because the pageblock flags bitmap is\nbe located with the mem_section.  The SECTIONS_PER_ROOT computation using\nsizeof (mem_section) may not be a power of 2 depending on the size of the\nbitmap.  This renders masks and other such things not power of 2 base.\nThis issue was seen with SPARSEMEM_EXTREME on ia64.  This patch moves the\nbitmap outside of mem_section and uses a pointer instead in the\nmem_section.  The bitmaps are allocated when the section is being\ninitialised.\n\nNote that sparse_early_usemap_alloc() does not use alloc_remap() like\nsparse_early_mem_map_alloc().  The allocation required for the bitmap on\nx86, the only architecture that uses alloc_remap is typically smaller than\na cache line.  alloc_remap() pads out allocations to the cache size which\nwould be a needless waste.\n\nCredit to Bob Picco for identifying the original problem and effecting a\nfix for the SECTION_BLOCKFLAGS_BITS calculation.  Credit to Andy Whitcroft\nfor devising the best way of allocating the bitmaps only when required for\nthe section.\n\n[wli@holomorphy.com: warning fix]\nSigned-off-by: Bob Picco \u003cbob.picco@hp.com\u003e\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nSigned-off-by: William Irwin \u003cbill.irwin@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8f6aac419bd590f535fb110875a51f7db2b62b5b",
      "tree": "64e73e9f7a4b5a68648a2b4b16e66307c3d8d3cf",
      "parents": [
        "540557b9439ec19668553830c90222f9fb0c2e95"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Oct 16 01:24:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:51 2007 -0700"
      },
      "message": "Generic Virtual Memmap support for SPARSEMEM\n\nSPARSEMEM is a pretty nice framework that unifies quite a bit of code over all\nthe arches.  It would be great if it could be the default so that we can get\nrid of various forms of DISCONTIG and other variations on memory maps.  So far\nwhat has hindered this are the additional lookups that SPARSEMEM introduces\nfor virt_to_page and page_address.  This goes so far that the code to do this\nhas to be kept in a separate function and cannot be used inline.\n\nThis patch introduces a virtual memmap mode for SPARSEMEM, in which the memmap\nis mapped into a virtually contigious area, only the active sections are\nphysically backed.  This allows virt_to_page page_address and cohorts become\nsimple shift/add operations.  No page flag fields, no table lookups, nothing\ninvolving memory is required.\n\nThe two key operations pfn_to_page and page_to_page become:\n\n   #define __pfn_to_page(pfn)      (vmemmap + (pfn))\n   #define __page_to_pfn(page)     ((page) - vmemmap)\n\nBy having a virtual mapping for the memmap we allow simple access without\nwasting physical memory.  As kernel memory is typically already mapped 1:1\nthis introduces no additional overhead.  The virtual mapping must be big\nenough to allow a struct page to be allocated and mapped for all valid\nphysical pages.  This vill make a virtual memmap difficult to use on 32 bit\nplatforms that support 36 address bits.\n\nHowever, if there is enough virtual space available and the arch already maps\nits 1-1 kernel space using TLBs (f.e.  true of IA64 and x86_64) then this\ntechnique makes SPARSEMEM lookups even more efficient than CONFIG_FLATMEM.\nFLATMEM needs to read the contents of the mem_map variable to get the start of\nthe memmap and then add the offset to the required entry.  vmemmap is a\nconstant to which we can simply add the offset.\n\nThis patch has the potential to allow us to make SPARSMEM the default (and\neven the only) option for most systems.  It should be optimal on UP, SMP and\nNUMA on most platforms.  Then we may even be able to remove the other memory\nmodels: FLATMEM, DISCONTIG etc.\n\n[apw@shadowen.org: config cleanups, resplit code etc]\n[kamezawa.hiroyu@jp.fujitsu.com: Fix sparsemem_vmemmap init]\n[apw@shadowen.org: vmemmap: remove excess debugging]\n[apw@shadowen.org: simplify initialisation code and reduce duplication]\n[apw@shadowen.org: pull out the vmemmap code into its own file]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-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": "540557b9439ec19668553830c90222f9fb0c2e95",
      "tree": "07dfa0e88580d4101dbb11ebc59348233e18b2f0",
      "parents": [
        "cd881a6b22902b356cacf8fd2e4e895871068eec"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Tue Oct 16 01:24:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:51 2007 -0700"
      },
      "message": "sparsemem: record when a section has a valid mem_map\n\nWe have flags to indicate whether a section actually has a valid mem_map\nassociated with it.  This is never set and we rely solely on the present bit\nto indicate a section is valid.  By definition a section is not valid if it\nhas no mem_map and there is a window during init where the present bit is set\nbut there is no mem_map, during which pfn_valid() will return true\nincorrectly.\n\nUse the existing SECTION_HAS_MEM_MAP flag to indicate the presence of a valid\nmem_map.  Switch valid_section{,_nr} and pfn_valid() to this bit.  Add a new\npresent_section{,_nr} and pfn_present() interfaces for those users who care to\nknow that a section is going to be valid.\n\n[akpm@linux-foundation.org: coding-syle fixes]\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cd881a6b22902b356cacf8fd2e4e895871068eec",
      "tree": "e26ecdf5ef148b34b1b827ce4da083194c022984",
      "parents": [
        "74a0b5762713a26496db72eac34fbbed46f20fce"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Tue Oct 16 01:24:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:51 2007 -0700"
      },
      "message": "sparsemem: clean up spelling error in comments\n\nSPARSEMEM is a pretty nice framework that unifies quite a bit of code over all\nthe arches.  It would be great if it could be the default so that we can get\nrid of various forms of DISCONTIG and other variations on memory maps.  So far\nwhat has hindered this are the additional lookups that SPARSEMEM introduces\nfor virt_to_page and page_address.  This goes so far that the code to do this\nhas to be kept in a separate function and cannot be used inline.\n\nThis patch introduces a virtual memmap mode for SPARSEMEM, in which the memmap\nis mapped into a virtually contigious area, only the active sections are\nphysically backed.  This allows virt_to_page page_address and cohorts become\nsimple shift/add operations.  No page flag fields, no table lookups, nothing\ninvolving memory is required.\n\nThe two key operations pfn_to_page and page_to_page become:\n\n   #define __pfn_to_page(pfn)      (vmemmap + (pfn))\n   #define __page_to_pfn(page)     ((page) - vmemmap)\n\nBy having a virtual mapping for the memmap we allow simple access without\nwasting physical memory.  As kernel memory is typically already mapped 1:1\nthis introduces no additional overhead.  The virtual mapping must be big\nenough to allow a struct page to be allocated and mapped for all valid\nphysical pages.  This vill make a virtual memmap difficult to use on 32 bit\nplatforms that support 36 address bits.\n\nHowever, if there is enough virtual space available and the arch already maps\nits 1-1 kernel space using TLBs (f.e.  true of IA64 and x86_64) then this\ntechnique makes SPARSEMEM lookups even more efficient than CONFIG_FLATMEM.\nFLATMEM needs to read the contents of the mem_map variable to get the start of\nthe memmap and then add the offset to the required entry.  vmemmap is a\nconstant to which we can simply add the offset.\n\nThis patch has the potential to allow us to make SPARSMEM the default (and\neven the only) option for most systems.  It should be optimal on UP, SMP and\nNUMA on most platforms.  Then we may even be able to remove the other memory\nmodels: FLATMEM, DISCONTIG etc.\n\nThe current aim is to bring a common virtually mapped mem_map to all\narchitectures.  This should facilitate the removal of the bespoke\nimplementations from the architectures.  This also brings performance\nimprovements for most architecture making sparsmem vmemmap the more desirable\nmemory model.  The ultimate aim of this work is to expand sparsemem support to\nencompass all the features of the other memory models.  This could allow us to\ndrop support for and remove the other models in the longer term.\n\nBelow are some comparitive kernbench numbers for various architectures,\ncomparing default memory model against SPARSEMEM VMEMMAP.  All but ia64 show\nmarginal improvement; we expect the ia64 figures to be sorted out when the\nlarger mapping support returns.\n\nx86-64 non-NUMA\n             Base    VMEMAP    % change (-ve good)\nUser        85.07     84.84    -0.26\nSystem      34.32     33.84    -1.39\nTotal      119.38    118.68    -0.59\n\nia64\n             Base    VMEMAP    % change (-ve good)\nUser      1016.41   1016.93    0.05\nSystem      50.83     51.02    0.36\nTotal     1067.25   1067.95    0.07\n\nx86-64 NUMA\n             Base   VMEMAP    % change (-ve good)\nUser        30.77   431.73     0.22\nSystem      45.39    43.98    -3.11\nTotal      476.17   475.71    -0.10\n\nppc64\n             Base   VMEMAP    % change (-ve good)\nUser       488.77   488.35    -0.09\nSystem      56.92    56.37    -0.97\nTotal      545.69   544.72    -0.18\n\nBelow are some AIM bencharks on IA64 and x86-64 (thank Bob).  The seems\npretty much flat as you would expect.\n\nia64 results 2 cpu non-numa 4Gb SCSI disk\n\nBenchmark\tVersion\tMachine\tRun Date\nAIM Multiuser Benchmark - Suite VII\t\"1.1\"\textreme\tJun  1 07:17:24 2007\n\nTasks\tJobs/Min\tJTI\tReal\tCPU\tJobs/sec/task\n1\t98.9\t\t100\t58.9\t1.3\t1.6482\n101\t5547.1\t\t95\t106.0\t79.4\t0.9154\n201\t6377.7\t\t95\t183.4\t158.3\t0.5288\n301\t6932.2\t\t95\t252.7\t237.3\t0.3838\n401\t7075.8\t\t93\t329.8\t316.7\t0.2941\n501\t7235.6\t\t94\t403.0\t396.2\t0.2407\n600\t7387.5\t\t94\t472.7\t475.0\t0.2052\n\nBenchmark\tVersion\tMachine\tRun Date\nAIM Multiuser Benchmark - Suite VII\t\"1.1\"\tvmemmap\tJun  1 09:59:04 2007\n\nTasks\tJobs/Min\tJTI\tReal\tCPU\tJobs/sec/task\n1\t99.1\t\t100\t58.8\t1.2\t1.6509\n101\t5480.9\t\t95\t107.2\t79.2\t0.9044\n201\t6490.3\t\t95\t180.2\t157.8\t0.5382\n301\t6886.6\t\t94\t254.4\t236.8\t0.3813\n401\t7078.2\t\t94\t329.7\t316.0\t0.2942\n501\t7250.3\t\t95\t402.2\t395.4\t0.2412\n600\t7399.1\t\t94\t471.9\t473.9\t0.2055\n\nopen power 710 2 cpu, 4 Gb, SCSI and configured physically\n\nBenchmark\tVersion\tMachine\tRun Date\nAIM Multiuser Benchmark - Suite VII\t\"1.1\"\textreme\tMay 29 15:42:53 2007\n\nTasks\tJobs/Min\tJTI\tReal\tCPU\tJobs/sec/task\n1\t25.7\t\t100\t226.3\t4.3\t0.4286\n101\t1096.0\t\t97\t536.4\t199.8\t0.1809\n201\t1236.4\t\t96\t946.1\t389.1\t0.1025\n301\t1280.5\t\t96\t1368.0\t582.3\t0.0709\n401\t1270.2\t\t95\t1837.4\t771.0\t0.0528\n501\t1251.4\t\t96\t2330.1\t955.9\t0.0416\n601\t1252.6\t\t96\t2792.4\t1139.2\t0.0347\n701\t1245.2\t\t96\t3276.5\t1334.6\t0.0296\n918\t1229.5\t\t96\t4345.4\t1728.7\t0.0223\n\nBenchmark\tVersion\tMachine\tRun Date\nAIM Multiuser Benchmark - Suite VII\t\"1.1\"\tvmemmap\tMay 30 07:28:26 2007\n\nTasks\tJobs/Min\tJTI\tReal\tCPU\tJobs/sec/task\n1\t25.6\t\t100\t226.9\t4.3\t0.4275\n101\t1049.3\t\t97\t560.2\t198.1\t0.1731\n201\t1199.1\t\t97\t975.6\t390.7\t0.0994\n301\t1261.7\t\t96\t1388.5\t591.5\t0.0699\n401\t1256.1\t\t96\t1858.1\t771.9\t0.0522\n501\t1220.1\t\t96\t2389.7\t955.3\t0.0406\n601\t1224.6\t\t96\t2856.3\t1133.4\t0.0340\n701\t1252.0\t\t96\t3258.7\t1314.1\t0.0298\n915\t1232.8\t\t96\t4319.7\t1704.0\t0.0225\n\namd64 2 2-core, 4Gb and SATA\n\nBenchmark\tVersion\tMachine\tRun Date\nAIM Multiuser Benchmark - Suite VII\t\"1.1\"\textreme\tJun  2 03:59:48 2007\n\nTasks\tJobs/Min\tJTI\tReal\tCPU\tJobs/sec/task\n1\t13.0\t\t100\t446.4\t2.1\t0.2173\n101\t533.4\t\t97\t1102.0\t110.2\t0.0880\n201\t578.3\t\t97\t2022.8\t220.8\t0.0480\n301\t583.8\t\t97\t3000.6\t332.3\t0.0323\n401\t580.5\t\t97\t4020.1\t442.2\t0.0241\n501\t574.8\t\t98\t5072.8\t558.8\t0.0191\n600\t566.5\t\t98\t6163.8\t671.0\t0.0157\n\nBenchmark\tVersion\tMachine\tRun Date\nAIM Multiuser Benchmark - Suite VII\t\"1.1\"\tvmemmap\tJun  3 04:19:31 2007\n\nTasks\tJobs/Min\tJTI\tReal\tCPU\tJobs/sec/task\n1\t13.0\t\t100\t447.8\t2.0\t0.2166\n101\t536.5\t\t97\t1095.6\t109.7\t0.0885\n201\t567.7\t\t97\t2060.5\t219.3\t0.0471\n301\t582.1\t\t96\t3009.4\t330.2\t0.0322\n401\t578.2\t\t96\t4036.4\t442.4\t0.0240\n501\t585.1\t\t98\t4983.2\t555.1\t0.0195\n600\t565.5\t\t98\t6175.2\t660.6\t0.0157\n\nThis patch:\n\nFix some spelling errors.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "85770ffe4f0cdd4396b17f14762adc25a571a348",
      "tree": "23f69f720e53cee67632b04c1754c3a7a64dab72",
      "parents": [
        "df068464169a84a6a66c05d140f43a46d5eb6176"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Wed Aug 22 14:01:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Aug 22 19:52:44 2007 -0700"
      },
      "message": "sparsemem: ensure we initialise the node mapping for SPARSEMEM_STATIC\n\nBooting SPARSEMEM on NUMA systems trips a BUG in page_alloc.c:\n\n\tInitializing HighMem for node 0 (00038000:00100000)\n\tInitializing HighMem for node 1 (00100000:001ffe00)\n\t------------[ cut here ]------------\n\tkernel BUG at /home/apw/git/linux-2.6/mm/page_alloc.c:456!\n\t[...]\n\nThis occurs because the section to node id mapping is not being\nsetup correctly during init under SPARSEMEM_STATIC, leading to an\nattempt to free pages from all nodes into the zones on node 0.\n\nWhen the zone_table[] was removed in the following commit, a new\nsection to node mapping table was introduced:\n\n    commit 89689ae7f95995723fbcd5c116c47933a3bb8b13\n    [PATCH] Get rid of zone_table[]\n\nThat conversion inadvertantly only initialised the node mapping in\nSPARSEMEM_EXTREME.  Ensure we initialise the node mapping in\nSPARSEMEM_STATIC.\n\n[akpm@linux-foundation.org: make the stubs static inline]\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dec2e6b7aa5d45bc3508e19907a7716b0c5307e5",
      "tree": "6214a1061268c805aded57413e98544456f175ab",
      "parents": [
        "7aa6ec56b9e9e95eb6c83516ddbb6159fd11c224"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Sun Jul 22 11:12:44 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jul 22 11:03:38 2007 -0700"
      },
      "message": "x86_64: fix section mismatch warning in init.c\n\nFix following warning:\nWARNING: vmlinux.o(.text+0x188ea): Section mismatch: reference to .init.text:__alloc_bootmem_core (between \u0027alloc_bootmem_high_node\u0027 and \u0027get_gate_vma\u0027)\n\nalloc_bootmem_high_node() is only used from __init scope so declare it __init.\nAnd in addition declare the weak variant __init too.\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "193faea9280a809cc30e81d7e503e01b1d7b7042",
      "tree": "d4b80d4795ac1e708b8a13d45d571383617b761c",
      "parents": [
        "4249e08e92647b406422553bfb16276b2bf849aa"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Fri Jun 08 13:46:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jun 08 17:23:33 2007 -0700"
      },
      "message": "Move three functions that are only needed for CONFIG_MEMORY_HOTPLUG\n\ninto the appropriate #ifdef.\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e1c49db4c640b35df13889b86b9d62215ade4b6",
      "tree": "8b886843a57f5ff683700a9f623294e3f24d07ef",
      "parents": [
        "fa0aa866c82e441787e07169cb4925e3b673e891"
      ],
      "author": {
        "name": "Zou Nan hai",
        "email": "nanhai.zou@intel.com",
        "time": "Fri Jun 01 00:46:28 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jun 01 08:18:27 2007 -0700"
      },
      "message": "x86_64: allocate sparsemem memmap above 4G\n\nOn systems with huge amount of physical memory, VFS cache and memory memmap\nmay eat all available system memory under 4G, then the system may fail to\nallocate swiotlb bounce buffer.\n\nThere was a fix for this issue in arch/x86_64/mm/numa.c, but that fix dose\nnot cover sparsemem model.\n\nThis patch add fix to sparsemem model by first try to allocate memmap above\n4G.\n\nSigned-off-by: Zou Nan hai \u003cnanhai.zou@intel.com\u003e\nAcked-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "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": "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": "6a5b518f222449e707e553573f937faf6e57f03d",
      "tree": "df05575e5f9c128fe564cfe83ce7fe4255b39028",
      "parents": [
        "7db00552d937e4c0825895734ba5fe257dfe8ced"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sun May 06 23:54:25 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sun May 06 23:54:25 2007 -0700"
      },
      "message": "[MM]: sparse_init() should be __init.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\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": "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": "f2d0aa5bf8d4f7ae4cb1a7feebf5b1afddd0b9b0",
      "tree": "f018b4472a40d6ed1d815b68a716f29991993aba",
      "parents": [
        "969b755aadf7bcf3df5991a127a103acd0145a52"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Sat Oct 28 10:38:32 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 28 11:30:52 2006 -0700"
      },
      "message": "[PATCH] memory hotplug: __GFP_NOWARN is better for __kmalloc_section_memmap()\n\nAdd __GFP_NOWARN flag to calling of __alloc_pages() in\n__kmalloc_section_memmap().  It can reduce noisy failure message.\n\nIn ia64, section size is 1 GB, this means that order 8 pages are necessary\nfor each section\u0027s memmap.  It is often very hard requirement under heavy\nmemory pressure as you know.  So, __alloc_pages() gives up allocation and\nshows many noisy stack traces which means no page for each sections.\n(Current my environment shows 32 times of stack trace....)\n\nBut, __kmalloc_section_memmap() calls vmalloc() after failure of it, and it\ncan succeed allocation of memmap.  So, its stack trace warning becomes just\nnoisy.  I suppose it shouldn\u0027t be shown.\n\nSigned-off-by: 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": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "34af946a22724c4e2b204957f2b24b22a0fb121c",
      "tree": "7881dcbd0a698257c126198cdb6d97d4e45ee51e",
      "parents": [
        "b6cd0b772dcc5dc9b4c03d53946474dee399fa72"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 27 02:53:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:39 2006 -0700"
      },
      "message": "[PATCH] spin/rwlock init cleanups\n\nlocking init cleanups:\n\n - convert \" \u003d SPIN_LOCK_UNLOCKED\" to spin_lock_init() or DEFINE_SPINLOCK()\n - convert rwlocks in a similar manner\n\nthis patch was generated automatically.\n\nMotivation:\n\n - cleanliness\n - lockdep needs control of lock initialization, which the open-coded\n   variants do not give\n - it\u0027s also useful for -rt and for lock debugging in general\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "30c253e6da655d73eb8bfe2adca9b8f4d82fb81e",
      "tree": "97c49ad364855b95ce52d97a62d176a077ff2a85",
      "parents": [
        "ddc2e812d592457747c4367fb73edcaa8e1e49ff"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Fri Jun 23 02:03:41 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:51 2006 -0700"
      },
      "message": "[PATCH] sparsemem: record nid during memory present\n\nRecord the node id as we mark sections for instantiation.  Use this nid\nduring instantiation to direct allocations.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Mike Kravetz \u003ckravetz@us.ibm.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Bob Picco \u003cbob.picco@hp.com\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Martin Bligh \u003cmbligh@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "12783b002db1f02c29353c8f698a85514420b9f4",
      "tree": "d0cec6913308fb34d539192dd0928cd0d7aae714",
      "parents": [
        "ad8f5797302ed389476debcc51b4630f387618b9"
      ],
      "author": {
        "name": "Mike Kravetz",
        "email": "kravetz@us.ibm.com",
        "time": "Sat May 20 15:00:05 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun May 21 12:59:17 2006 -0700"
      },
      "message": "[PATCH] SPARSEMEM incorrectly calculates section number\n\nA bad calculation/loop in __section_nr() could result in incorrect section\ninformation being put into sysfs memory entries.  This primarily impacts\nmemory add operations as the sysfs information is used while onlining new\nmemory.\n\nFix suggested by Dave Hansen.\n\nNote that the bug may not be obvious from the patch.  It actually occurs in\nthe function\u0027s return statement:\n\n\treturn (root_nr * SECTIONS_PER_ROOT) + (ms - root);\n\nIn the existing code, root_nr has already been multiplied by\nSECTIONS_PER_ROOT.\n\nSigned-off-by: Mike Kravetz \u003ckravetz@us.ibm.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": "39d24e64263cd3211705d3b61ea4171c65030921",
      "tree": "b527b1395b070180b7f930c0a89530f11bce7b3c",
      "parents": [
        "48564e628bd7662d7a0b3ac81c41cd0e4cc36dae"
      ],
      "author": {
        "name": "Mike Kravetz",
        "email": "kravetz@us.ibm.com",
        "time": "Mon May 15 09:44:13 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon May 15 11:20:56 2006 -0700"
      },
      "message": "[PATCH] add slab_is_available() routine for boot code\n\nslab_is_available() indicates slab based allocators are available for use.\nSPARSEMEM code needs to know this as it can be called at various times\nduring the boot process.\n\nSigned-off-by: Mike Kravetz \u003ckravetz@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "46a66eecdf7bc12562ecb492297447ed0e1ecf59",
      "tree": "b758b51763c2365130a2a58547fa0bc30d71cdc8",
      "parents": [
        "2c43630fb0ff3f01c29367248ffa4a851e2c9b34"
      ],
      "author": {
        "name": "Mike Kravetz",
        "email": "mjkravetz@verizon.net",
        "time": "Mon May 01 12:16:09 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon May 01 18:17:46 2006 -0700"
      },
      "message": "[PATCH] sparsemem interaction with memory add bug fixes\n\nThis patch fixes two bugs with the way sparsemem interacts with memory add.\nThey are:\n\n- memory leak if memmap for section already exists\n\n- calling alloc_bootmem_node() after boot\n\nThese bugs were discovered and a first cut at the fixes were provided by\nArnd Bergmann \u003carnd@arndb.de\u003e and Joel Schopp \u003cjschopp@us.ibm.com\u003e.\n\nSigned-off-by: Mike Kravetz \u003ckravetz@us.ibm.com\u003e\nSigned-off-by: Joel Schopp \u003cjschopp@austin.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "22fc6eccbf4ce4eb6265e6ada7b50a7b9cc57d05",
      "tree": "3887dc6f1eeb658d773be037971b98d6f5fb3dd7",
      "parents": [
        "6d524aed1f50b2b1d5b4ad5a4e2fe3f38106d0a6"
      ],
      "author": {
        "name": "Ravikiran G Thirumalai",
        "email": "kiran@scalex86.org",
        "time": "Sun Jan 08 01:01:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:38 2006 -0800"
      },
      "message": "[PATCH] Change maxaligned_in_smp alignemnt macros to internodealigned_in_smp macros\n\n____cacheline_maxaligned_in_smp is currently used to align critical structures\nand avoid false sharing.  It uses per-arch L1_CACHE_SHIFT_MAX and people find\nL1_CACHE_SHIFT_MAX useless.\n\nHowever, we have been using ____cacheline_maxaligned_in_smp to align\nstructures on the internode cacheline size.  As per Andi\u0027s suggestion,\nfollowing patch kills ____cacheline_maxaligned_in_smp and introduces\nINTERNODE_CACHE_SHIFT, which defaults to L1_CACHE_SHIFT for all arches.\nArches needing L3/Internode cacheline alignment can define\nINTERNODE_CACHE_SHIFT in the arch asm/cache.h.  Patch replaces\n____cacheline_maxaligned_in_smp with ____cacheline_internodealigned_in_smp\n\nWith this patch, L1_CACHE_SHIFT_MAX can be killed\n\nSigned-off-by: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nSigned-off-by: Shai Fultheim \u003cshai@scalex86.org\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0b0acbec1bed75ec1e1daa7f7006323a2a2b2844",
      "tree": "e0d54fbaa6b8b0955ed881af8956b4085039b2d1",
      "parents": [
        "3947be1969a9ce455ec30f60ef51efb10e4323d1"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Sat Oct 29 18:16:55 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:44 2005 -0700"
      },
      "message": "[PATCH] memory hotplug: move section_mem_map alloc to sparse.c\n\nThis basically keeps up from having to extern __kmalloc_section_memmap().\n\nThe vaddr_in_vmalloc_area() helper could go in a vmalloc header, but that\nheader gets hard to work with, because it needs some arch-specific macros.\nJust stick it in here for now, instead of creating another header.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Lion Vollnhals \u003cwebmaster@schiggl.de\u003e\nSigned-off-by: Jiri Slaby \u003cxslaby@fi.muni.cz\u003e\nSigned-off-by: 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": "4ca644d970bf2542623228a4624af356d20ca267",
      "tree": "1040782e8799d5531a5ee1d5f1143e26e8781e9d",
      "parents": [
        "ed8ece2ec8d3c2031b1a1a0737568bb0d49454e0"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Sat Oct 29 18:16:51 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:44 2005 -0700"
      },
      "message": "[PATCH] memory hotplug prep: __section_nr helper\n\nA little helper that we use in the hotplug code.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "28ae55c98e4d16eac9a05a8a259d7763ef3aeb18",
      "tree": "0ac0a08d88a692b9b9934344b5e439058d71772a",
      "parents": [
        "3e347261a80b57df792ab9464b5f0ed59add53a8"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Sat Sep 03 15:54:29 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:38 2005 -0700"
      },
      "message": "[PATCH] sparsemem extreme: hotplug preparation\n\nThis splits up sparse_index_alloc() into two pieces.  This is needed\nbecause we\u0027ll allocate the memory for the second level in a different place\nfrom where we actually consume it to keep the allocation from happening\nunderneath a lock\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Bob Picco \u003cbob.picco@hp.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": "3e347261a80b57df792ab9464b5f0ed59add53a8",
      "tree": "047b35e0f9ec82b3beeff882a9af6292a500097c",
      "parents": [
        "802f192e4a600f7ef84ca25c8b818c8830acef5a"
      ],
      "author": {
        "name": "Bob Picco",
        "email": "bob.picco@hp.com",
        "time": "Sat Sep 03 15:54:28 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:38 2005 -0700"
      },
      "message": "[PATCH] sparsemem extreme implementation\n\nWith cleanups from Dave Hansen \u003chaveblue@us.ibm.com\u003e\n\nSPARSEMEM_EXTREME makes mem_section a one dimensional array of pointers to\nmem_sections.  This two level layout scheme is able to achieve smaller\nmemory requirements for SPARSEMEM with the tradeoff of an additional shift\nand load when fetching the memory section.  The current SPARSEMEM\nimplementation is a one dimensional array of mem_sections which is the\ndefault SPARSEMEM configuration.  The patch attempts isolates the\nimplementation details of the physical layout of the sparsemem section\narray.\n\nSPARSEMEM_EXTREME requires bootmem to be functioning at the time of\nmemory_present() calls.  This is not always feasible, so architectures\nwhich do not need it may allocate everything statically by using\nSPARSEMEM_STATIC.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Bob Picco \u003cbob.picco@hp.com\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "802f192e4a600f7ef84ca25c8b818c8830acef5a",
      "tree": "51e9a6ed164e6a2d8741af510c3954ad79bf19af",
      "parents": [
        "0216f86dafb389c0ad97529fd45e64e883298cfd"
      ],
      "author": {
        "name": "Bob Picco",
        "email": "bob.picco@hp.com",
        "time": "Sat Sep 03 15:54:26 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:38 2005 -0700"
      },
      "message": "[PATCH] SPARSEMEM EXTREME\n\nA new option for SPARSEMEM is ARCH_SPARSEMEM_EXTREME.  Architecture\nplatforms with a very sparse physical address space would likely want to\nselect this option.  For those architecture platforms that don\u0027t select the\noption, the code generated is equivalent to SPARSEMEM currently in -mm.\nI\u0027ll be posting a patch on ia64 ml which uses this new SPARSEMEM feature.\n\nARCH_SPARSEMEM_EXTREME makes mem_section a one dimensional array of\npointers to mem_sections.  This two level layout scheme is able to achieve\nsmaller memory requirements for SPARSEMEM with the tradeoff of an\nadditional shift and load when fetching the memory section.  The current\nSPARSEMEM -mm implementation is a one dimensional array of mem_sections\nwhich is the default SPARSEMEM configuration.  The patch attempts isolates\nthe implementation details of the physical layout of the sparsemem section\narray.\n\nARCH_SPARSEMEM_EXTREME depends on 64BIT and is by default boolean false.\n\nI\u0027ve boot tested under aim load ia64 configured for ARCH_SPARSEMEM_EXTREME.\n I\u0027ve also boot tested a 4 way Opteron machine with !ARCH_SPARSEMEM_EXTREME\nand tested with aim.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Bob Picco \u003cbob.picco@hp.com\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "29751f6991e845f7d002a6ae520bf996b38c8dcd",
      "tree": "f76c4c660ac4d204436f68851979343d2a9ba224",
      "parents": [
        "641c767389b19859a45e6de46d8e18cd935bdb60"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Thu Jun 23 00:08:00 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:05 2005 -0700"
      },
      "message": "[PATCH] sparsemem hotplug base\n\nMake sparse\u0027s initalization be accessible at runtime.  This allows sparse\nmappings to be created after boot in a hotplug situation.\n\nThis patch is separated from the previous one just to give an indication how\nmuch of the sparse infrastructure is *just* for hotplug memory.\n\nThe section_mem_map doesn\u0027t really store a pointer.  It stores something that\nis convenient to do some math against to get a pointer.  It isn\u0027t valid to\njust do *section_mem_map, so I don\u0027t think it should be stored as a pointer.\n\nThere are a couple of things I\u0027d like to store about a section.  First of all,\nthe fact that it is !NULL does not mean that it is present.  There could be\nsuch a combination where section_mem_map *is* NULL, but the math gets you\nproperly to a real mem_map.  So, I don\u0027t think that check is safe.\n\nSince we\u0027re storing 32-bit-aligned structures, we have a few bits in the\nbottom of the pointer to play with.  Use one bit to encode whether there\u0027s\nreally a mem_map there, and the other one to tell whether there\u0027s a valid\nsection there.  We need to distinguish between the two because sometimes\nthere\u0027s a gap between when a section is discovered to be present and when we\ncan get the mem_map for it.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Jack Steiner \u003csteiner@sgi.com\u003e\nSigned-off-by: Bob Picco \u003cbob.picco@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d41dee369bff3b9dcb6328d4d822926c28cc2594",
      "tree": "a0405f3b7af3ebca21838a7d427bd75a067bf850",
      "parents": [
        "af705362ab6018071310c5fcd436a6b457517d5f"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Thu Jun 23 00:07:54 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:04 2005 -0700"
      },
      "message": "[PATCH] sparsemem memory model\n\nSparsemem abstracts the use of discontiguous mem_maps[].  This kind of\nmem_map[] is needed by discontiguous memory machines (like in the old\nCONFIG_DISCONTIGMEM case) as well as memory hotplug systems.  Sparsemem\nreplaces DISCONTIGMEM when enabled, and it is hoped that it can eventually\nbecome a complete replacement.\n\nA significant advantage over DISCONTIGMEM is that it\u0027s completely separated\nfrom CONFIG_NUMA.  When producing this patch, it became apparent in that NUMA\nand DISCONTIG are often confused.\n\nAnother advantage is that sparse doesn\u0027t require each NUMA node\u0027s ranges to be\ncontiguous.  It can handle overlapping ranges between nodes with no problems,\nwhere DISCONTIGMEM currently throws away that memory.\n\nSparsemem uses an array to provide different pfn_to_page() translations for\neach SECTION_SIZE area of physical memory.  This is what allows the mem_map[]\nto be chopped up.\n\nIn order to do quick pfn_to_page() operations, the section number of the page\nis encoded in page-\u003eflags.  Part of the sparsemem infrastructure enables\nsharing of these bits more dynamically (at compile-time) between the\npage_zone() and sparsemem operations.  However, on 32-bit architectures, the\nnumber of bits is quite limited, and may require growing the size of the\npage-\u003eflags type in certain conditions.  Several things might force this to\noccur: a decrease in the SECTION_SIZE (if you want to hotplug smaller areas of\nmemory), an increase in the physical address space, or an increase in the\nnumber of used page-\u003eflags.\n\nOne thing to note is that, once sparsemem is present, the NUMA node\ninformation no longer needs to be stored in the page-\u003eflags.  It might provide\nspeed increases on certain platforms and will be stored there if there is\nroom.  But, if out of room, an alternate (theoretically slower) mechanism is\nused.\n\nThis patch introduces CONFIG_FLATMEM.  It is used in almost all cases where\nthere used to be an #ifndef DISCONTIG, because SPARSEMEM and DISCONTIGMEM\noften have to compile out the same areas of code.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Martin Bligh \u003cmbligh@aracnet.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Bob Picco \u003cbob.picco@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
