)]}'
{
  "log": [
    {
      "commit": "6babc32c41e3642d875372cb6afbd9ade7a9f311",
      "tree": "e37e7c5a1d73c5c1f64ec06229cd94b85ccf3b16",
      "parents": [
        "4b19de6d1cb07c8bcb6778e771f9cfd5bcfdfd3e"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Thu Oct 02 14:50:18 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 02 15:53:13 2008 -0700"
      },
      "message": "mm: handle initialising compound pages at orders greater than MAX_ORDER\n\nWhen we initialise a compound page we initialise the page flags and head\npage pointer for all base pages spanned by that page.  When we initialise\na gigantic page (a page of order greater than or equal to MAX_ORDER) we\nhave to initialise more than MAX_ORDER_NR_PAGES pages.  Currently we\nassume that all elements of the mem_map in this page are contigious in\nmemory.  However this is only guarenteed out to MAX_ORDER_NR_PAGES pages,\nand with SPARSEMEM enabled they will not be contigious.  This leads us to\nwalk off the end of the first section and scribble on everything which\nfollows, BAD.\n\nWhen we reach a MAX_ORDER_NR_PAGES boundary we much locate the next\nsection of the mem_map.  As gigantic pages can only be maximally aligned\nwe know this will occur at exact multiple of MAX_ORDER_NR_PAGES pages from\nthe start of the page.\n\nThis is a bug fix for the gigantic page support in hugetlbfs.\n\nCredit to Mel Gorman for spotting the issue.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Jon Tollefson \u003ckniht@linux.vnet.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": "527655835ebac8f58a8f800a10700712a4c2affd",
      "tree": "ddce45f35b3f89f73cf5a090bc6804ec507f0bb2",
      "parents": [
        "39dbbb4523754df4a822c69191a848a03e556dc7"
      ],
      "author": {
        "name": "Marcin Slusarz",
        "email": "marcin.slusarz@gmail.com",
        "time": "Tue Sep 02 14:35:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 02 19:21:37 2008 -0700"
      },
      "message": "mm/bootmem: silence section mismatch warning - contig_page_data/bootmem_node_data\n\nWARNING: vmlinux.o(.data+0x1f5c0): Section mismatch in reference from the variable contig_page_data to the variable .init.data:bootmem_node_data\nThe variable contig_page_data references\nthe variable __initdata bootmem_node_data\nIf the reference is valid then annotate the\nvariable with __init* (see linux/init.h) or name the variable:\n*driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console,\n\nSigned-off-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nCc: Johannes Weiner \u003channes@saeurebad.de\u003e\nCc: Sean MacLennan \u003csmaclennan@pikatech.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": "344c790e3821dac37eb742ddd0b611a300f78b9a",
      "tree": "af7aad0ef87e320c9bfa84c9f14b32c095c0918c",
      "parents": [
        "169ccbd44eb20f5bb7e4352451eba25397e29749"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Tue Sep 02 14:35:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 02 19:21:37 2008 -0700"
      },
      "message": "mm: make setup_zone_migrate_reserve() aware of overlapping nodes\n\nI have gotten to the root cause of the hugetlb badness I reported back on\nAugust 15th.  My system has the following memory topology (note the\noverlapping node):\n\n            Node 0 Memory: 0x8000000-0x44000000\n            Node 1 Memory: 0x0-0x8000000 0x44000000-0x80000000\n\nsetup_zone_migrate_reserve() scans the address range 0x0-0x8000000 looking\nfor a pageblock to move onto the MIGRATE_RESERVE list.  Finding no\ncandidates, it happily continues the scan into 0x8000000-0x44000000.  When\na pageblock is found, the pages are moved to the MIGRATE_RESERVE list on\nthe wrong zone.  Oops.\n\nsetup_zone_migrate_reserve() should skip pageblocks in overlapping nodes.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.25.x, 2.6.26.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "74768ed833344bb0f82b97cee46320a3d7f09ecd",
      "tree": "eee3404d1dd51eb184eab88e12dbc774dc693522",
      "parents": [
        "866c36637f79506b283a6872a7c313b5ef499985"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "jbeulich@novell.com",
        "time": "Tue Aug 12 15:08:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:07:27 2008 -0700"
      },
      "message": "page allocator: use no-panic variant of alloc_bootmem() in alloc_large_system_hash()\n\n..  since a failed allocation is being (initially) handled gracefully, and\npanic()-ed upon failure explicitly in the function if retries with smaller\nsizes failed.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d1958f05095a7e9ecbba86235122784a3d1b561",
      "tree": "9c0621d0f689c4711d5de2e770140698366b14aa",
      "parents": [
        "3971e1a917548977cff71418a7c3575ffbc9571f"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Tue Jul 29 22:33:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 09:41:44 2008 -0700"
      },
      "message": "mm: remove find_max_pfn_with_active_regions\n\nIt has no user now\n\nAlso print out info about adding/removing active regions.\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: 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": "9b1a4d38373a5581a4e01032a3ccdd94cd93477b",
      "tree": "3d0f0ebd1ac4512551fc35e57d173870eb060c0c",
      "parents": [
        "eeec4fad963490821348a331cca6102ae1c4a7a3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:30 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:31 2008 +1000"
      },
      "message": "stop_machine: Wean existing callers off stop_machine_run()\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "af370fb8cb3031f20438f246798d5f0d98089f29",
      "tree": "a5b06adeeaeaafb89c7d326ed1daabd0caa364c8",
      "parents": [
        "48c906823f3927b981db9f0b03c2e2499977ee93"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Wed Jul 23 21:28:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:21 2008 -0700"
      },
      "message": "memory hotplug: small fixes to bootmem freeing for memory hotremove\n\n- Change some naming\n  * Magic -\u003e types\n  * MIX_INFO -\u003e MIX_SECTION_INFO\n  * Change definition of bootmem type from direct hex value\n\n- __free_pages_bootmem() becomes __meminit.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: Johannes Weiner \u003channes@saeurebad.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b69a7288ea7bf171328f313f0edae629f50e3bdb",
      "tree": "20cb483cced19bda14dc4f12bbba6e7c1d01c4a3",
      "parents": [
        "2be0ffe2b29bd31d3debd0877797892ff2d91f4c"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Jul 23 21:28:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:20 2008 -0700"
      },
      "message": "mm/page_alloc.c: cleanups\n\nThis patch contains the following cleanups:\n- make the following needlessly global variables static:\n  - required_kernelcore\n  - zone_movable_pfn[]\n- make the following needlessly global functions static:\n  - move_freepages()\n  - move_freepages_block()\n  - setup_pageset()\n  - find_usable_zone_for_movable()\n  - adjust_zone_range_for_zone_movable()\n  - __absent_pages_in_range()\n  - find_min_pfn_for_node()\n  - find_zone_movable_pfns_for_nodes()\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": "2be0ffe2b29bd31d3debd0877797892ff2d91f4c",
      "tree": "7f6e56b3fc5a721296851448e3facf821ef543dd",
      "parents": [
        "3560e249abda6bee41a07a7bf0383a6e193e2839"
      ],
      "author": {
        "name": "Timur Tabi",
        "email": "timur@freescale.com",
        "time": "Wed Jul 23 21:28:11 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:20 2008 -0700"
      },
      "message": "mm: add alloc_pages_exact() and free_pages_exact()\n\nalloc_pages_exact() is similar to alloc_pages(), except that it allocates\nthe minimum number of pages to fulfill the request.  This is useful if you\nwant to allocate a very large buffer that is slightly larger than an even\npower-of-two number of pages.  In that case, alloc_pages() will waste a\nlot of memory.\n\nI have a video driver that wants to allocate a 5MB buffer.  alloc_pages()\nwiill waste 3MB of physically-contiguous memory.\n\nSigned-off-by: Timur Tabi \u003ctimur@freescale.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "01ad1c0827db5b3695c53e296dbb2c1da16a0911",
      "tree": "80c46c00832094f2413ad97b8e1953018a71cc68",
      "parents": [
        "b54bbf7b81170f03597c17dd0b559e3006bc9868"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed Jul 23 21:27:46 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:17 2008 -0700"
      },
      "message": "mm: export prep_compound_page to mm\n\nhugetlb will need to get compound pages from bootmem to handle the case of\nthem being greater than or equal to MAX_ORDER.  Export the constructor\nfunction needed for this.\n\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9109fb7b3520de187ebc3646c209d66a233f7169",
      "tree": "f1d64d2efafb8e1652836126523f1b36fb10acd1",
      "parents": [
        "2185e69f680ae8c8496b6fc15e20c889d5b39b67"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@saeurebad.de",
        "time": "Wed Jul 23 21:27:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:16 2008 -0700"
      },
      "message": "mm: drop unneeded pgdat argument from free_area_init_node()\n\nfree_area_init_node() gets passed in the node id as well as the node\ndescriptor.  This is redundant as the function can trivially get the node\ndescriptor itself by means of NODE_DATA() and the node\u0027s id.\n\nI checked all the users and NODE_DATA() seems to be usable everywhere\nfrom where this function is called.\n\nSigned-off-by: Johannes Weiner \u003channes@saeurebad.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c82d0ce2c4f642b2f24ef98707a030543b06b90",
      "tree": "bfbb2ee1919bb2bbd0e5158103c7382af73da31d",
      "parents": [
        "42b7772812d15b86543a23b82bd6070eef9a08b1"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Wed Jul 23 21:27:11 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:15 2008 -0700"
      },
      "message": "buddy: clarify comments describing buddy merge\n\nIn __free_one_page(), the comment \"Move the buddy up one level\" appears\nattached to the break and by implication when the break is taken we are\nmoving it up one level:\n\n\tif (!page_is_buddy(page, buddy, order))\n\t\tbreak;          /* Move the buddy up one level. */\n\nIn reality the inverse is true, we break out when we can no longer merge\nthis page with its buddy.  Looking back into pre-history (into the full\ngit history) it appears that these two lines accidentally got joined as\npart of another change.\n\nMove the comment down where it belongs below the if and clarify its\nlanguage.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e4048e5dc4aecec670f48ed007a28779f09cebd6",
      "tree": "eb22cb47f1885d8006a85c5142d6e7f9d115de49",
      "parents": [
        "efe9e77997f6e0306fedc6efa98df491dcf5ecb0"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jul 23 21:27:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:14 2008 -0700"
      },
      "message": "page allocator: inline some __alloc_pages() wrappers\n\nTwo zonelist patch series rewrote __page_alloc() largely.  Now, it is just\na wrapper function.  Inlining them will save a function call.\n\n[akpm@linux-foundation.org: export __alloc_pages_internal]\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@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": "b61bfa3c462671c48a51fb5c31af337c5a996a04",
      "tree": "020363fd43a85ddde9998759150b428ee794dae6",
      "parents": [
        "8b05c7e6e159d2f33c9275281b8b909a89eb7c5d"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@saeurebad.de",
        "time": "Wed Jul 23 21:26:55 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:14 2008 -0700"
      },
      "message": "mm: move bootmem descriptors definition to a single place\n\nThere are a lot of places that define either a single bootmem descriptor or an\narray of them.  Use only one central array with MAX_NUMNODES items instead.\n\nSigned-off-by: Johannes Weiner \u003channes@saeurebad.de\u003e\nAcked-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68ad8df42e12037c3894c9706ab428bf5cd6426b",
      "tree": "42999fc8e3cbf400b6133f832f310690f8f28b76",
      "parents": [
        "2dbb51c49f4fecb8330e43247a0edfbc4b2b8974"
      ],
      "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:14 2008 -0700"
      },
      "message": "mm: print out the zonelists on request for manual verification\n\nThis patch prints out the zonelists during boot for manual verification by the\nuser if the mminit_loglevel is MMINIT_VERIFY or higher.\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": "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": "708614e6180f398cd307ea0048d48ba6fa274610",
      "tree": "8fedf22cf9a2f404e2aef10c5b3858b99880c4c2",
      "parents": [
        "6b74ab97bc12ce74acec900f1d89a4aee2e4d70d"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Jul 23 21:26:51 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:13 2008 -0700"
      },
      "message": "mm: verify the page links and memory model\n\nPrint out information on how the page flags are being used if mminit_loglevel\nis MMINIT_VERIFY or higher and unconditionally performs sanity checks on the\nflags regardless of loglevel.\n\nWhen the page flags are updated with section, node and zone information, a\ncheck are made to ensure the values can be retrieved correctly.  Finally we\nconfirm that pfn_to_page and page_to_pfn are the correct inverse functions.\n\n[akpm@linux-foundation.org: fix printk warnings]\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": "6b74ab97bc12ce74acec900f1d89a4aee2e4d70d",
      "tree": "d9d7b522a4a8f5f605d2e0f7f7a1bcb9d5049a82",
      "parents": [
        "9483a578df27fe7603605d565eefe039c1ba5845"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Jul 23 21:26:49 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:13 2008 -0700"
      },
      "message": "mm: add a basic debugging framework for memory initialisation\n\nBoot initialisation is very complex, with significant numbers of\narchitecture-specific routines, hooks and code ordering.  While significant\namounts of the initialisation is architecture-independent, it trusts the data\nreceived from the architecture layer.  This is a mistake, and has resulted in\na number of difficult-to-diagnose bugs.\n\nThis patchset adds some validation and tracing to memory initialisation.  It\nalso introduces a few basic defensive measures.  The validation code can be\nexplicitly disabled for embedded systems.\n\nThis patch:\n\nAdd additional debugging and verification code for memory initialisation.\n\nOnce enabled, the verification checks are always run and when required\nadditional debugging information may be outputted via a mminit_loglevel\u003d\ncommand-line parameter.\n\nThe verification code is placed in a new file mm/mm_init.c.  Ideally other mm\ninitialisation code will be moved here over time.\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": "1a781a777b2f6ac46523fe92396215762ced624d",
      "tree": "4f34bb4aade85c0eb364b53d664ec7f6ab959006",
      "parents": [
        "b9d2252c1e44fa83a4e65fdc9eb93db6297c55af",
        "42a2f217a5e324ed5f2373ab1b7a0a15187c4d6c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 15 21:55:59 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 15 21:55:59 2008 +0200"
      },
      "message": "Merge branch \u0027generic-ipi\u0027 into generic-ipi-for-linus\n\nConflicts:\n\n\tarch/powerpc/Kconfig\n\tarch/s390/kernel/time.c\n\tarch/x86/kernel/apic_32.c\n\tarch/x86/kernel/cpu/perfctr-watchdog.c\n\tarch/x86/kernel/i8259_64.c\n\tarch/x86/kernel/ldt.c\n\tarch/x86/kernel/nmi_64.c\n\tarch/x86/kernel/smpboot.c\n\tarch/x86/xen/smp.c\n\tinclude/asm-x86/hw_irq_32.h\n\tinclude/asm-x86/hw_irq_64.h\n\tinclude/asm-x86/mach-default/irq_vectors.h\n\tinclude/asm-x86/mach-voyager/irq_vectors.h\n\tinclude/asm-x86/smp.h\n\tkernel/Makefile\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5dab8ec139be215fbaba216fb4aea914d0f4dac5",
      "tree": "246dfbfdf1d6cbf0177329cedf6da23f6480c27a",
      "parents": [
        "3381959da5a00ae8289cfbd28b0b6d228f2d1d46"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Wed Jun 25 05:44:40 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 13:10:40 2008 +0200"
      },
      "message": "mm, generic, x86 boot: more tweaks to hex prints of some pfn addresses\n\nFix some problems with (and applies on top of) a previous patch:\n  x86 boot: show pfn addresses in hex not decimal in some kernel info printks\n\nPrimarily change \"0x%8lx\" format, which displays with a right aligned\nspace filled hex number (spaces between the \"0x\" prefix and the number),\ninto \"%0#10lx\" format, which zero fills instead of space fills, and\nwhich uses the printf flag \u0027#\u0027 to request the \"0x\" prefix instead of\nhard coding it.\n\nAlso replace some other \"0x%lx\" formats with \"%#lx\", making use of the\n\u0027#\u0027 printf flag again.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nCc: \"Yinghai Lu\" \u003cyhlu.kernel@gmail.com\u003e\nCc: \"Jack Steiner\" \u003csteiner@sgi.com\u003e\nCc: \"Mike Travis\" \u003ctravis@sgi.com\u003e\nCc: \"Huang\nCc: Ying\" \u003cying.huang@intel.com\u003e\nCc: \"Andi Kleen\" \u003candi@firstfloor.org\u003e\nCc: \"Andrew Morton\" \u003cakpm@linux-foundation.org\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2bc0d2615a15a93d344abbe8cb1b9056122bce9d",
      "tree": "8011b668497aac0870119dda987de6501c5d507d",
      "parents": [
        "e2fc252e0ce695b4c4abe27bb073c35bd0d73252"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sun Jun 22 07:22:17 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 12:51:38 2008 +0200"
      },
      "message": "x86 boot: more consistently use type int for node ids\n\nEverywhere I look, node id\u0027s are of type \u0027int\u0027, except in this one\ncase, which has \u0027unsigned long\u0027.  Change this one to \u0027int\u0027 as well.\nThere is nothing special about the way this variable \u0027nid\u0027 is used in\nthis routine to justify using an unusual type here.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nCc: \"Yinghai Lu\" \u003cyhlu.kernel@gmail.com\u003e\nCc: \"Jack Steiner\" \u003csteiner@sgi.com\u003e\nCc: \"Mike Travis\" \u003ctravis@sgi.com\u003e\nCc: \"Huang\nCc: Ying\" \u003cying.huang@intel.com\u003e\nCc: \"Andi Kleen\" \u003candi@firstfloor.org\u003e\nCc: \"Andrew Morton\" \u003cakpm@linux-foundation.org\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e2fc252e0ce695b4c4abe27bb073c35bd0d73252",
      "tree": "53875bf55b7221d65d568bfad1c4568b2c732d04",
      "parents": [
        "c4ba1320b7075e9ce33ad0afaef43ba13260b4c2"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sun Jun 22 07:22:12 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 12:51:37 2008 +0200"
      },
      "message": "x86 boot: show pfn addresses in hex not decimal in some kernel info printks\n\nPage frame numbers (the portion of physical addresses above the low\norder page offsets) are displayed in several kernel debug and info\nprints in decimal, not hex.  Decimal addresse are unreadable.  Use hex.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nCc: \"Yinghai Lu\" \u003cyhlu.kernel@gmail.com\u003e\nCc: \"Jack Steiner\" \u003csteiner@sgi.com\u003e\nCc: \"Mike Travis\" \u003ctravis@sgi.com\u003e\nCc: \"Huang\nCc: Ying\" \u003cying.huang@intel.com\u003e\nCc: \"Andi Kleen\" \u003candi@firstfloor.org\u003e\nCc: \"Andrew Morton\" \u003cakpm@linux-foundation.org\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d52d53b8a5b258bfaab9223a5e7284fcfdd48577",
      "tree": "8871bb322bdb1b31546eaa130e0017a588bbceab",
      "parents": [
        "1ea598c29748a559a0086a84a016886d786e6272"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Mon Jun 16 20:10:55 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 12:48:27 2008 +0200"
      },
      "message": "RFC x86: try to remove arch_get_ram_range\n\nwant to remove arch_get_ram_range, and use early_node_map instead.\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b5bc6c0e55000dab86b73f838f5ad02908b23755",
      "tree": "4895117f5e69ed8648f102dccc895c80c14fbae5",
      "parents": [
        "d0be6bdea103b8d04c8a3495538b7c0011ae4129"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Sat Jun 14 18:32:52 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 10:37:25 2008 +0200"
      },
      "message": "x86, mm: use add_highpages_with_active_regions() for high pages init v2\n\nuse early_node_map to init high pages, so we can remove page_is_ram() and\npage_is_reserved_early() in the big loop with add_one_highpage\n\nalso remove page_is_reserved_early(), it is not needed anymore.\n\nv2: fix the build of other platforms\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cc1050bafebfb1d7935331282e948b5016318192",
      "tree": "7e9e6935ed4a18afb63dedbcd808657c683265f5",
      "parents": [
        "d2dbf343329dc777d77488743465f7be4245971d"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Fri Jun 13 19:08:52 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 10:36:29 2008 +0200"
      },
      "message": "x86: replace shrink_active_range() with remove_active_range()\n\nin case we have kva before ramdisk on a node, we still need to use\nthose ranges.\n\nv2: reserve_early kva ram area, in case there are holes in highmem, to avoid\n    those area could be treat as free high pages.\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "896395c290f902576270d84291c1f7f8bfbe339d",
      "tree": "650114bff3a5f808ee1d713ecc443b0eaab2e1c3",
      "parents": [
        "af1cf204ba2fd8135933a2e4df523fb1112dc0e2",
        "1b40a895df6c7d5a80e71f65674060b03d84bbef"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 10:32:56 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 10:32:56 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into tmp.x86.mpparse.new\n"
    },
    {
      "commit": "494de90098784b8e2797598cefdd34188884ec2e",
      "tree": "cef8c0655f85ed64bb7426df3eeb794c2cf27580",
      "parents": [
        "c461a973118346d5c103aaaddd62e53939fd7c67"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jul 03 05:27:51 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 03 09:22:59 2008 -0700"
      },
      "message": "Do not overwrite nr_zones on !NUMA when initialising zlcache_ptr\n\nThe non-NUMA case of build_zonelist_cache() would initialize the\nzlcache_ptr for both node_zonelists[] to NULL.\n\nWhich is problematic, since non-NUMA only has a single node_zonelists[]\nentry, and trying to zero the non-existent second one just overwrote the\nnr_zones field instead.\n\nAs kswapd uses this value to determine what reclaim work is necessary,\nthe result is that kswapd never reclaims.  This causes processes to\nstall frequently in low-memory situations as they always direct reclaim.\nThis patch initialises zlcache_ptr correctly.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nTested-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n[ Simplified patch a bit ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "15c8b6c1aaaf1c4edd67e2f02e4d8e1bd1a51c0d",
      "tree": "3658f893c2f89ea0be4c6cc08aa11fa54476d0f4",
      "parents": [
        "8691e5a8f691cc2a4fda0651e8d307aaba0e7d68"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 09 09:39:44 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 26 11:24:38 2008 +0200"
      },
      "message": "on_each_cpu(): kill unused \u0027retry\u0027 parameter\n\nIt\u0027s not even passed on to smp_call_function() anymore, since that\nwas removed. So kill it.\n\nAcked-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cc1a9d86ce989083703c4bdc11b75a87e1cc404a",
      "tree": "ee2b58df708b291f4a20311508cb26438647f82f",
      "parents": [
        "db3660c1905293b91653e07f7857576df71ebf28"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Sun Jun 08 19:39:16 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 10 11:31:44 2008 +0200"
      },
      "message": "mm, x86: shrink_active_range() should check all\n\nNow we are using register_e820_active_regions() instead of\nadd_active_range() directly. So end_pfn could be different between the\nvalue in early_node_map to node_end_pfn.\n\nSo we need to make shrink_active_range() smarter.\n\nshrink_active_range() is a generic MM function in mm/page_alloc.c but\nit is only used on 32-bit x86. Should we move it back to some file in\narch/x86?\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "dfa7e20cc0d1a7a620def4dce97de1ae5375f99b",
      "tree": "0e197e502fc884e9de2bc49d3d9cdbee9e7bc3c4",
      "parents": [
        "d5791d13b1d45542895104edf4b09476d5ad24b0"
      ],
      "author": {
        "name": "Russ Anderson",
        "email": "rja@sgi.com",
        "time": "Mon Jun 09 11:18:45 2008 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 09 10:22:24 2008 -0700"
      },
      "message": "mm: Minor clean-up of page flags in mm/page_alloc.c\n\nMinor source code cleanup of page flags in mm/page_alloc.c.\nMove the definition of the groups of bits to page-flags.h.\n\nThe purpose of this clean up is that the next patch will\nconditionally add a page flag to the groups.  Doing that\nin a header file is cleaner than adding #ifdefs to the\nC code.\n\nSigned-off-by: Russ Anderson \u003crja@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8c27ac9191ab9e6506ae5cbe70d87ac50f8e960",
      "tree": "2495cf0575b34b69210eca62c91224b474cf5092",
      "parents": [
        "0596152388e234efebce464355186ad9e16c8cb6"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Sun Jun 01 13:15:22 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 03 13:26:26 2008 +0200"
      },
      "message": "x86, numa, 32-bit: print out debug info on all kvas\n\nalso fix the print out of node_remap_end_vaddr\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cd94b9dbfa300fc42e45f230010623fc08d59563",
      "tree": "ad9581e94a635032d74d3905975ebd4c39bed5f2",
      "parents": [
        "7eb54824b76793dd86afb54f182ef9aa64b3a45a"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Fri May 23 13:04:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:12 2008 -0700"
      },
      "message": "memory hotplug: fix early allocation handling\n\nTrying to add memory via add_memory() from within an initcall function\nresults in\n\nbootmem alloc of 163840 bytes failed!\nKernel panic - not syncing: Out of memory\n\nThis is caused by zone_wait_table_init() which uses system_state to decide\nif it should use the bootmem allocator or not.\n\nWhen initcalls are handled the system_state is still SYSTEM_BOOTING but\nthe bootmem allocator doesn\u0027t work anymore.  So the allocation will fail.\n\nTo fix this use slab_is_available() instead as indicator like we do it\neverywhere else.\n\n[akpm@linux-foundation.org: coding-style fix]\nReviewed-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: 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": "7eb54824b76793dd86afb54f182ef9aa64b3a45a",
      "tree": "400753c14099e9ecbba9ab4665b4c1badd180839",
      "parents": [
        "03a74dcc7eebe6edd778317e82fafdf71e68488c"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Fri May 23 13:04:50 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:11 2008 -0700"
      },
      "message": "zonelists: handle a node zonelist with no applicable entries\n\nWhen booting 2.6.26-rc3 on a multi-node x86_32 numa system we are seeing\npanics when trying node local allocations:\n\n BUG: unable to handle kernel NULL pointer dereference at 0000034c\n IP: [\u003cc1042507\u003e] get_page_from_freelist+0x4a/0x18e\n *pdpt \u003d 00000000013a7001 *pde \u003d 0000000000000000\n Oops: 0000 [#1] SMP\n Modules linked in:\n\n Pid: 0, comm: swapper Not tainted (2.6.26-rc3-00003-g5abc28d #82)\n EIP: 0060:[\u003cc1042507\u003e] EFLAGS: 00010282 CPU: 0\n EIP is at get_page_from_freelist+0x4a/0x18e\n EAX: c1371ed8 EBX: 00000000 ECX: 00000000 EDX: 00000000\n ESI: f7801180 EDI: 00000000 EBP: 00000000 ESP: c1371ec0\n  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068\n Process swapper (pid: 0, ti\u003dc1370000 task\u003dc12f5b40 task.ti\u003dc1370000)\n Stack: 00000000 00000000 00000000 00000000 000612d0 000412d0 00000000 000412d0\n        f7801180 f7c0101c f7c01018 c10426e4 f7c01018 00000001 00000044 00000000\n        00000001 c12f5b40 00000001 00000010 00000000 000412d0 00000286 000412d0\n Call Trace:\n  [\u003cc10426e4\u003e] __alloc_pages_internal+0x99/0x378\n  [\u003cc10429ca\u003e] __alloc_pages+0x7/0x9\n  [\u003cc105e0e8\u003e] kmem_getpages+0x66/0xef\n  [\u003cc105ec55\u003e] cache_grow+0x8f/0x123\n  [\u003cc105f117\u003e] ____cache_alloc_node+0xb9/0xe4\n  [\u003cc105f427\u003e] kmem_cache_alloc_node+0x92/0xd2\n  [\u003cc122118c\u003e] setup_cpu_cache+0xaf/0x177\n  [\u003cc105e6ca\u003e] kmem_cache_create+0x2c8/0x353\n  [\u003cc13853af\u003e] kmem_cache_init+0x1ce/0x3ad\n  [\u003cc13755c5\u003e] start_kernel+0x178/0x1ee\n\nThis occurs when we are scanning the zonelists looking for a ZONE_NORMAL\npage.  In this system there is only ZONE_DMA and ZONE_NORMAL memory on\nnode 0, all other nodes are mapped above 4GB physical.  Here is a dump\nof the zonelists from this system:\n\n    zonelists pgdat\u003dc1400000\n     0: c14006c0:2 f7c006c0:2 f7e006c0:2 c1400360:1 c1400000:0\n     1: c14006c0:2 c1400360:1 c1400000:0\n    zonelists pgdat\u003df7c00000\n     0: f7c006c0:2 f7e006c0:2 c14006c0:2 c1400360:1 c1400000:0\n     1: f7c006c0:2\n    zonelists pgdat\u003df7e00000\n     0: f7e006c0:2 c14006c0:2 f7c006c0:2 c1400360:1 c1400000:0\n     1: f7e006c0:2\n\nWhen performing a node local allocation we call get_page_from_freelist()\nlooking for a page.  It in turn calls first_zones_zonelist() which returns\na preferred_zone.  Where there are no applicable zones this will be NULL.\nHowever we use this unconditionally, leading to this panic.\n\nWhere there are no applicable zones there is no possibility of a successful\nallocation, so simply fail the allocation.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f7232154198f928fc25f420d6190468212a7632a",
      "tree": "3216938f94face00fd6c6094bc8ccb66c2ef3619",
      "parents": [
        "f899b0adc6fc8f60a9db8b52f36f06fd1abeaf7c"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@saeurebad.de",
        "time": "Fri May 23 13:04:21 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:07 2008 -0700"
      },
      "message": "mm: don\u0027t drop a partial page in a zone\u0027s memory map size\n\nIn a zone\u0027s present pages number, account for all pages occupied by the\nmemory map, including a partial.\n\nSigned-off-by: Johannes Weiner \u003channes@saeurebad.de\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": "76cdd58e558669366adfaded436fda01b30cce3e",
      "tree": "deaccb499752c928919693edea65f9ea4c1fe756",
      "parents": [
        "1c12c4cf9411eb130b245fa8d0fbbaf989477c7b"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed May 14 16:05:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 19:11:15 2008 -0700"
      },
      "message": "memory_hotplug: always initialize pageblock bitmap\n\nTrying to online a new memory section that was added via memory hotplug\nsometimes results in crashes when the new pages are added via __free_page.\n Reason for that is that the pageblock bitmap isn\u0027t initialized and hence\ncontains random stuff.  That means that get_pageblock_migratetype()\nreturns also random stuff and therefore\n\n\tlist_add(\u0026page-\u003elru,\n\t\t\u0026zone-\u003efree_area[order].free_list[migratetype]);\n\nin __free_one_page() tries to do a list_add to something that isn\u0027t even\nnecessarily a list.\n\nThis happens since 86051ca5eaf5e560113ec7673462804c54284456 (\"mm: fix\nusemap initialization\") which makes sure that the pageblock bitmap gets\nonly initialized for pages present in a zone.  Unfortunately for hot-added\nmemory the zones \"grow\" after the memmap and the pageblock memmap have\nbeen initialized.  Which means that the new pages have an unitialized\nbitmap.  To solve this the calls to grow_zone_span() and grow_pgdat_span()\nare moved to __add_zone() just before the initialization happens.\n\nThe patch also moves the two functions since __add_zone() is the only\ncaller and I didn\u0027t want to add a forward declaration.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ac7fe5a4aab409bd5674d0b070bce97f9d20872",
      "tree": "5e12e8864bb8737695e4eb9c63970602d5f69e73",
      "parents": [
        "30327acf7846c5eb97c8e31c78317a2918d3e515"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 30 00:55:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:53 2008 -0700"
      },
      "message": "infrastructure to debug (dynamic) objects\n\nWe can see an ever repeating problem pattern with objects of any kind in the\nkernel:\n\n1) freeing of active objects\n2) reinitialization of active objects\n\nBoth problems can be hard to debug because the crash happens at a point where\nwe have no chance to decode the root cause anymore.  One problem spot are\nkernel timers, where the detection of the problem often happens in interrupt\ncontext and usually causes the machine to panic.\n\nWhile working on a timer related bug report I had to hack specialized code\ninto the timer subsystem to get a reasonable hint for the root cause.  This\ndebug hack was fine for temporary use, but far from a mergeable solution due\nto the intrusiveness into the timer code.\n\nThe code further lacked the ability to detect and report the root cause\ninstantly and keep the system operational.\n\nKeeping the system operational is important to get hold of the debug\ninformation without special debugging aids like serial consoles and special\nknowledge of the bug reporter.\n\nThe problems described above are not restricted to timers, but timers tend to\nexpose it usually in a full system crash.  Other objects are less explosive,\nbut the symptoms caused by such mistakes can be even harder to debug.\n\nInstead of creating specialized debugging code for the timer subsystem a\ngeneric infrastructure is created which allows developers to verify their code\nand provides an easy to enable debug facility for users in case of trouble.\n\nThe debugobjects core code keeps track of operations on static and dynamic\nobjects by inserting them into a hashed list and sanity checking them on\nobject operations and provides additional checks whenever kernel memory is\nfreed.\n\nThe tracked object operations are:\n- initializing an object\n- adding an object to a subsystem list\n- deleting an object from a subsystem list\n\nEach operation is sanity checked before the operation is executed and the\nsubsystem specific code can provide a fixup function which allows to prevent\nthe damage of the operation.  When the sanity check triggers a warning message\nand a stack trace is printed.\n\nThe list of operations can be extended if the need arises.  For now it\u0027s\nlimited to the requirements of the first user (timers).\n\nThe core code enqueues the objects into hash buckets.  The hash index is\ngenerated from the address of the object to simplify the lookup for the check\non kfree/vfree.  Each bucket has it\u0027s own spinlock to avoid contention on a\nglobal lock.\n\nThe debug code can be compiled in without being active.  The runtime overhead\nis minimal and could be optimized by asm alternatives.  A kernel command line\noption enables the debugging code.\n\nThanks to Ingo Molnar for review, suggestions and cleanup patches.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a41f24ea9fd6169b147c53c2392e2887cc1d9247",
      "tree": "e6cf79a82f6516a30731f7dec7ed5d76466bb350",
      "parents": [
        "ab857d09386661145924c9403792234aeca4bdff"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Tue Apr 29 00:58:25 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:05:58 2008 -0700"
      },
      "message": "page allocator: smarter retry of costly-order allocations\n\nBecause of page order checks in __alloc_pages(), hugepage (and similarly\nlarge order) allocations will not retry unless explicitly marked\n__GFP_REPEAT. However, the current retry logic is nearly an infinite\nloop (or until reclaim does no progress whatsoever). For these costly\nallocations, that seems like overkill and could potentially never\nterminate. Mel observed that allowing current __GFP_REPEAT semantics for\nhugepage allocations essentially killed the system. I believe this is\nbecause we may continue to reclaim small orders of pages all over, but\nnever have enough to satisfy the hugepage allocation request. This is\nclearly only a problem for large order allocations, of which hugepages\nare the most obvious (to me).\n\nModify try_to_free_pages() to indicate how many pages were reclaimed.\nUse that information in __alloc_pages() to eventually fail a large\n__GFP_REPEAT allocation when we\u0027ve reclaimed an order of pages equal to\nor greater than the allocation\u0027s order. This relies on lumpy reclaim\nfunctioning as advertised. Due to fragmentation, lumpy reclaim may not\nbe able to free up the order needed in one invocation, so multiple\niterations may be requred. In other words, the more fragmented memory\nis, the more retry attempts __GFP_REPEAT will make (particularly for\nhigher order allocations).\n\nThis changes the semantics of __GFP_REPEAT subtly, but *only* for\nallocations \u003e PAGE_ALLOC_COSTLY_ORDER. With this patch, for those size\nallocations, we will try up to some point (at least 1\u003c\u003corder reclaimed\npages), rather than forever (which is the case for allocations \u003c\u003d\nPAGE_ALLOC_COSTLY_ORDER).\n\nThis change improves the /proc/sys/vm/nr_hugepages interface with a\nfollow-on patch that makes pool allocations use __GFP_REPEAT. Rather\nthan administrators repeatedly echo\u0027ing a particular value into the\nsysctl, and forcing reclaim into action manually, this change allows for\nthe sysctl to attempt a reasonable effort itself. Similarly, dynamic\npool growth should be more successful under load, as lumpy reclaim can\ntry to free up pages, rather than failing right away.\n\nChoosing to reclaim only up to the order of the requested allocation\nstrikes a balance between not failing hugepage allocations and returning\nto the caller when it\u0027s unlikely to every succeed. Because of lumpy\nreclaim, if we have freed the order requested, hopefully it has been in\nbig chunks and those chunks will allow our allocation to succeed. If\nthat isn\u0027t the case after freeing up the current order, I don\u0027t think it\nis likely to succeed in the future, although it is possible given a\nparticular fragmentation pattern.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nTested-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\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": "ab857d09386661145924c9403792234aeca4bdff",
      "tree": "02027a87f919d721615664910b415f21bd88e9c5",
      "parents": [
        "86051ca5eaf5e560113ec7673462804c54284456"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Tue Apr 29 00:58:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:05:58 2008 -0700"
      },
      "message": "mm: fix misleading __GFP_REPEAT related comments\n\nThe definition and use of __GFP_REPEAT, __GFP_NOFAIL and __GFP_NORETRY in the\ncore VM have somewhat differing comments as to their actual semantics.\nAnnoyingly, the flags definition has inline and header comments, which might\nbe interpreted as not being equivalent.  Just add references to the header\ncomments in the inline ones so they don\u0027t go out of sync in the future.  In\ntheir use in __alloc_pages() clarify that the current implementation treats\nlow-order allocations and __GFP_REPEAT allocations as distinct cases.\n\nTo clarify, the flags\u0027 semantics are:\n\n__GFP_NORETRY means try no harder than one run through __alloc_pages\n\n__GFP_REPEAT means __GFP_NOFAIL\n\n__GFP_NOFAIL means repeat forever\n\norder \u003c\u003d PAGE_ALLOC_COSTLY_ORDER means __GFP_NOFAIL\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "86051ca5eaf5e560113ec7673462804c54284456",
      "tree": "e2e6fd3df079f85c43c7e164569a8c962f91e537",
      "parents": [
        "a01e035ebb552223c03f2d9138ffc73f2d4d3965"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Apr 29 00:58:21 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:05:58 2008 -0700"
      },
      "message": "mm: fix usemap initialization\n\nusemap must be initialized only when pfn is within zone.  If not, it corrupts\nmemory.\n\nAnd this patch also reduces the number of calls to set_pageblock_migratetype()\nfrom\n\t(pfn \u0026 (pageblock_nr_pages -1)\nto\n\t!(pfn \u0026 (pageblock_nr_pages-1)\nit should be called once per pageblock.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Shi Weihua \u003cshiwh@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\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": "2309f9e6fe3f1de661eab9613f7903ab4420c753",
      "tree": "283c26f2cd9f42bd63e7b514278aafe7c53a4dc0",
      "parents": [
        "97d87c9710bc6c5f2585fb9dc58f5bedbe996f10"
      ],
      "author": {
        "name": "Pavel Machek",
        "email": "pavel@ucw.cz",
        "time": "Mon Apr 28 02:13:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:26 2008 -0700"
      },
      "message": "mm/page_alloc.c: remove hand-coded get_order()\n\nRemove hand-coded get_order() from page_alloc.c.\n\nSigned-off-by: Pavel Machek \u003cpavel@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "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": "0a128b2b1a5e8ebce0260e3345812ee70daccc7f",
      "tree": "a2ce711ea77ef4677cad4f613112b8d7b88b7e28",
      "parents": [
        "d60cd46bbdc5a79d9a177e40009f960e44f0e334"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 28 02:12:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:22 2008 -0700"
      },
      "message": "pageflags: eliminate PG_xxx aliases\n\nRemove aliases of PG_xxx.  We can easily drop those now and alias by\nspecifying the PG_xxx flag in the macro that generates the functions.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f05111f50105ac479a008cf85749cf9c956453ea",
      "tree": "59126a7962c08f77c1e4a9de68998f479b5e8e11",
      "parents": [
        "7edf85aa3c00df1e86e82f649c41efa0dd8a7218"
      ],
      "author": {
        "name": "S.Caglar Onur",
        "email": "caglar@pardus.org.tr",
        "time": "Mon Apr 28 02:12:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:20 2008 -0700"
      },
      "message": "mm/page_alloc.c: fix indentation\n\nzlc_setup(): handle jiffies wraparound\n(10ed273f5016c582413dfbc468dd084957d847e1) changes tab with spaces\n\nSigned-off-by: S.Caglar Onur \u003ccaglar@pardus.org.tr\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Paul Jackson \u003cpj@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": "19770b32609b6bf97a3dece2529089494cbfc549",
      "tree": "3b5922d1b20aabdf929bde9309f323841717747a",
      "parents": [
        "dd1a239f6f2d4d3eedd318583ec319aa145b324c"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Apr 28 02:12:18 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:19 2008 -0700"
      },
      "message": "mm: filter based on a nodemask as well as a gfp_mask\n\nThe MPOL_BIND policy creates a zonelist that is used for allocations\ncontrolled by that mempolicy.  As the per-node zonelist is already being\nfiltered based on a zone id, this patch adds a version of __alloc_pages() that\ntakes a nodemask for further filtering.  This eliminates the need for\nMPOL_BIND to create a custom zonelist.\n\nA positive benefit of this is that allocations using MPOL_BIND now use the\nlocal node\u0027s distance-ordered zonelist instead of a custom node-id-ordered\nzonelist.  I.e., pages will be allocated from the closest allowed node with\navailable memory.\n\n[Lee.Schermerhorn@hp.com: Mempolicy: update stale documentation and comments]\n[Lee.Schermerhorn@hp.com: Mempolicy: make dequeue_huge_page_vma() obey MPOL_BIND nodemask]\n[Lee.Schermerhorn@hp.com: Mempolicy: make dequeue_huge_page_vma() obey MPOL_BIND nodemask rework]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Hugh Dickins \u003chugh@veritas.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": "dd1a239f6f2d4d3eedd318583ec319aa145b324c",
      "tree": "aff4224c96b5e2e67588c3946858a724863eeaf9",
      "parents": [
        "54a6eb5c4765aa573a030ceeba2c14e3d2ea5706"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Apr 28 02:12:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:18 2008 -0700"
      },
      "message": "mm: have zonelist contains structs with both a zone pointer and zone_idx\n\nFiltering zonelists requires very frequent use of zone_idx().  This is costly\nas it involves a lookup of another structure and a substraction operation.  As\nthe zone_idx is often required, it should be quickly accessible.  The node idx\ncould also be stored here if it was found that accessing zone-\u003enode is\nsignificant which may be the case on workloads where nodemasks are heavily\nused.\n\nThis patch introduces a struct zoneref to store a zone pointer and a zone\nindex.  The zonelist then consists of an array of these struct zonerefs which\nare looked up as necessary.  Helpers are given for accessing the zone index as\nwell as the node index.\n\n[kamezawa.hiroyu@jp.fujitsu.com: Suggested struct zoneref instead of embedding information in pointers]\n[hugh@veritas.com: mm-have-zonelist: fix memcg ooms]\n[hugh@veritas.com: just return do_try_to_free_pages]\n[hugh@veritas.com: do_try_to_free_pages gfp_mask redundant]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54a6eb5c4765aa573a030ceeba2c14e3d2ea5706",
      "tree": "547176a090beb787722a153cf2b8b942dc0e68db",
      "parents": [
        "18ea7e710d2452fa726814a406779188028cf1bf"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Apr 28 02:12:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:18 2008 -0700"
      },
      "message": "mm: use two zonelist that are filtered by GFP mask\n\nCurrently a node has two sets of zonelists, one for each zone type in the\nsystem and a second set for GFP_THISNODE allocations.  Based on the zones\nallowed by a gfp mask, one of these zonelists is selected.  All of these\nzonelists consume memory and occupy cache lines.\n\nThis patch replaces the multiple zonelists per-node with two zonelists.  The\nfirst contains all populated zones in the system, ordered by distance, for\nfallback allocations when the target/preferred node has no free pages.  The\nsecond contains all populated zones in the node suitable for GFP_THISNODE\nallocations.\n\nAn iterator macro is introduced called for_each_zone_zonelist() that interates\nthrough each zone allowed by the GFP flags in the selected zonelist.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.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": "18ea7e710d2452fa726814a406779188028cf1bf",
      "tree": "dfa439770b4344ade1ad8bd4fe70920ad66ee064",
      "parents": [
        "0e88460da6ab7bb6a7ef83675412ed5b6315d741"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Apr 28 02:12:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:18 2008 -0700"
      },
      "message": "mm: remember what the preferred zone is for zone_statistics\n\nOn NUMA, zone_statistics() is used to record events like numa hit, miss and\nforeign.  It assumes that the first zone in a zonelist is the preferred zone.\nWhen multiple zonelists are replaced by one that is filtered, this is no\nlonger the case.\n\nThis patch records what the preferred zone is rather than assuming the first\nzone in the zonelist is it.  This simplifies the reading of later patches in\nthis set.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.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": "0e88460da6ab7bb6a7ef83675412ed5b6315d741",
      "tree": "1feb4de2362e4998a0deeab66af1efb9c7b8bb34",
      "parents": [
        "dac1d27bc8d5ca636d3014ecfdf94407031d1970"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Apr 28 02:12:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:18 2008 -0700"
      },
      "message": "mm: introduce node_zonelist() for accessing the zonelist for a GFP mask\n\nIntroduce a node_zonelist() helper function.  It is used to lookup the\nappropriate zonelist given a node and a GFP mask.  The patch on its own is a\ncleanup but it helps clarify parts of the two-zonelist-per-node patchset.  If\nnecessary, it can be merged with the next patch in this set without problems.\n\nReviewed-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.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": "dac1d27bc8d5ca636d3014ecfdf94407031d1970",
      "tree": "2d92f6533f91da05c5f3d61e314f36b9313be89a",
      "parents": [
        "9d02dbc8137759e4c2f91db0b7f9c8a1ec2a9276"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Apr 28 02:12:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:18 2008 -0700"
      },
      "message": "mm: use zonelists instead of zones when direct reclaiming pages\n\nThe following patches replace multiple zonelists per node with two zonelists\nthat are filtered based on the GFP flags.  The patches as a set fix a bug with\nregard to the use of MPOL_BIND and ZONE_MOVABLE.  With this patchset, the\nMPOL_BIND will apply to the two highest zones when the highest zone is\nZONE_MOVABLE.  This should be considered as an alternative fix for the\nMPOL_BIND+ZONE_MOVABLE in 2.6.23 to the previously discussed hack that filters\nonly custom zonelists.\n\nThe first patch cleans up an inconsistency where direct reclaim uses\nzonelist-\u003ezones where other places use zonelist.\n\nThe second patch introduces a helper function node_zonelist() for looking up\nthe appropriate zonelist for a GFP mask which simplifies patches later in the\nset.\n\nThe third patch defines/remembers the \"preferred zone\" for numa statistics, as\nit is no longer always the first zone in a zonelist.\n\nThe forth patch replaces multiple zonelists with two zonelists that are\nfiltered.  The two zonelists are due to the fact that the memoryless patchset\nintroduces a second set of zonelists for __GFP_THISNODE.\n\nThe fifth patch introduces helper macros for retrieving the zone and node\nindices of entries in a zonelist.\n\nThe final patch introduces filtering of the zonelists based on a nodemask.\nTwo zonelists exist per node, one for normal allocations and one for\n__GFP_THISNODE.\n\nPerformance results varied depending on the machine configuration.  In real\nworkloads the gain/loss will depend on how much the userspace portion of the\nbenchmark benefits from having more cache available due to reduced referencing\nof zonelists.\n\nThese are the range of performance losses/gains when running against\n2.6.24-rc4-mm1.  The set and these machines are a mix of i386, x86_64 and\nppc64 both NUMA and non-NUMA.\n\t\t\t     loss   to  gain\nTotal CPU time on Kernbench: -0.86% to  1.13%\nElapsed   time on Kernbench: -0.79% to  0.76%\npage_test from aim9:         -4.37% to  0.79%\nbrk_test  from aim9:         -0.71% to  4.07%\nfork_test from aim9:         -1.84% to  4.60%\nexec_test from aim9:         -0.71% to  1.08%\n\nThis patch:\n\nThe allocator deals with zonelists which indicate the order in which zones\nshould be targeted for an allocation.  Similarly, direct reclaim of pages\niterates over an array of zones.  For consistency, this patch converts direct\nreclaim to use a zonelist.  No functionality is changed by this patch.  This\nsimplifies zonelist iterators in the next patch.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.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": "c5f59f0833df945eef7ff35f3dc6ba61c5f293dd",
      "tree": "32c1a94847d0154051c79011212d401462723d55",
      "parents": [
        "b53e921ba1cff8453dc9a87a84052fa12d5b30bd"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Fri Apr 04 18:11:10 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:44:59 2008 +0200"
      },
      "message": "nodemask: use new node_to_cpumask_ptr function\n\n  * Use new node_to_cpumask_ptr.  This creates a pointer to the\n    cpumask for a given node.  This definition is in mm patch:\n\n\tasm-generic-add-node_to_cpumask_ptr-macro.patch\n\n  * Use new set_cpus_allowed_ptr function.\n\nDepends on:\n\t[mm-patch]: asm-generic-add-node_to_cpumask_ptr-macro.patch\n\t[sched-devel]: sched: add new set_cpus_allowed_ptr function\n\t[x86/latest]: x86: add cpus_scnprintf function\n\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Greg Banks \u003cgnb@melbourne.sgi.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9442ec9df40d952b0de185ae5638a74970388e01",
      "tree": "14b06d71203be119d93736464ca49f37ce402c1c",
      "parents": [
        "98837c7f82ef78aa38f40462aa2fcac68fd3acbf"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:07 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: bad page if page_cgroup when free\n\nReplace free_hot_cold_page\u0027s VM_BUG_ON(page_get_page_cgroup(page)) by a \"Bad\npage state\" and clear: most users don\u0027t have CONFIG_DEBUG_VM on, and if it\nwere set here, it\u0027d likely cause corruption when the page is reused.\n\nDon\u0027t use page_assign_page_cgroup to clear it: that should be private to\nmemcontrol.c, and always called with the lock taken; and memmap_init_zone\ndoesn\u0027t need it either - like page-\u003emapping and other pointers throughout the\nkernel, Linux assumes pointers in zeroed structures are NULL pointers.\n\nInstead use page_reset_bad_cgroup, added to memcontrol.h for this only.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "10ed273f5016c582413dfbc468dd084957d847e1",
      "tree": "58f76f68e57866c4124dc09e956103e9093c8d32",
      "parents": [
        "d9d4fcfe515d7cece1b26decd75f5d41544a287b"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Mar 04 14:28:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:10 2008 -0800"
      },
      "message": "zlc_setup(): handle jiffies wraparound\n\njiffies subtraction may cause an overflow problem.  It should be using\ntime_after().\n\n[akpm@linux-foundation.org: include jiffies.h]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Paul Jackson \u003cpj@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": "b5a0e011329431b90d315eaf6ca5fdb41df7a117",
      "tree": "dc0503d0b6ee2d74cdf4e332524b810ccde5050f",
      "parents": [
        "bcdca225bfa016100985e5fc7e51cdc1d68beaa6"
      ],
      "author": {
        "name": "Alexander van Heukelum",
        "email": "heukelum@mailshack.com",
        "time": "Sat Feb 23 15:24:06 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Feb 23 17:13:24 2008 -0800"
      },
      "message": "Solve section mismatch for free_area_init_core.\n\nWARNING: vmlinux.o(.meminit.text+0x649):\nSection mismatch in reference from the\nfunction free_area_init_core() to the function .init.text:setup_usemap()\nThe function __meminit free_area_init_core() references\na function __init setup_usemap().\nIf free_area_init_core is only used by setup_usemap then\nannotate free_area_init_core with a matching annotation.\n\nThe warning is covers this stack of functions in mm/page_alloc.c:\n\nalloc_bootmem_node must be marked __init.\nalloc_bootmem_node is used by setup_usemap, if !SPARSEMEM.\n(usemap_size is only used by setup_usemap, if !SPARSEMEM.)\nsetup_usemap is only used by free_area_init_core.\nfree_area_init_core is only used by free_area_init_node.\n\nfree_area_init_node is used by:\narch/alpha/mm/numa.c: __init paging_init()\narch/arm/mm/init.c: __init bootmem_init_node()\narch/avr32/mm/init.c: __init paging_init()\narch/cris/arch-v10/mm/init.c: __init paging_init()\narch/cris/arch-v32/mm/init.c: __init paging_init()\narch/m32r/mm/discontig.c: __init zone_sizes_init()\narch/m32r/mm/init.c: __init zone_sizes_init()\narch/m68k/mm/motorola.c: __init paging_init()\narch/m68k/mm/sun3mmu.c: __init paging_init()\narch/mips/sgi-ip27/ip27-memory.c: __init paging_init()\narch/parisc/mm/init.c: __init paging_init()\narch/sparc/mm/srmmu.c: __init srmmu_paging_init()\narch/sparc/mm/sun4c.c: __init sun4c_paging_init()\narch/sparc64/mm/init.c: __init paging_init()\nmm/page_alloc.c: __init free_area_init_nodes()\nmm/page_alloc.c: __init free_area_init()\nand\nmm/memory_hotplug.c: hotadd_new_pgdat()\n\nhotadd_new_pgdat can not be an __init function, but:\n\nIt is compiled for MEMORY_HOTPLUG configurations only\nMEMORY_HOTPLUG depends on SPARSEMEM || X86_64_ACPI_NUMA\nX86_64_ACPI_NUMA depends on X86_64\nARCH_FLATMEM_ENABLE depends on X86_32\nARCH_DISCONTIGMEM_ENABLE depends on X86_32\nSo X86_64_ACPI_NUMA implies SPARSEMEM, right?\n\nSo we can mark the stack of functions __init for !SPARSEMEM, but we must mark\nthem __meminit for SPARSEMEM configurations.  This is ok, because then the\ncalls to alloc_bootmem_node are also avoided.\n\nCompile-tested on:\nsilly minimal config\ndefconfig x86_32\ndefconfig x86_64\ndefconfig x86_64 -HIBERNATION +MEMORY_HOTPLUG\n\nSigned-off-by: Alexander van Heukelum \u003cheukelum@fastmail.fm\u003e\nReviewed-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\nAcked-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "edde08f2a8f13a648ab6d26f33e88d0c6146f3d1",
      "tree": "16c0580449068472b7cb2ab3093fda3cc19f18b0",
      "parents": [
        "144b2a91468bdc0d4fa64b220c152fb58b8ffe05"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri Feb 08 04:19:57 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:31 2008 -0800"
      },
      "message": "misc: removal of final callers using fastcall\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": "8a9f3ccd24741b50200c3f33d62534c7271f3dfc",
      "tree": "066aabd8d2952299501f067a91cbfd6f47ee62f6",
      "parents": [
        "78fb74669e80883323391090e4d26d17fe29488f"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:13:53 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:18 2008 -0800"
      },
      "message": "Memory controller: memory accounting\n\nAdd the accounting hooks.  The accounting is carried out for RSS and Page\nCache (unmapped) pages.  There is now a common limit and accounting for both.\nThe RSS accounting is accounted at page_add_*_rmap() and page_remove_rmap()\ntime.  Page cache is accounted at add_to_page_cache(),\n__delete_from_page_cache().  Swap cache is also accounted for.\n\nEach page\u0027s page_cgroup is protected with the last bit of the\npage_cgroup pointer, this makes handling of race conditions involving\nsimultaneous mappings of a page easier.  A reference count is kept in the\npage_cgroup to deal with cases where a page might be unmapped from the RSS\nof all tasks, but still lives in the page cache.\n\nCredits go to Vaidyanathan Srinivasan for helping with reference counting work\nof the page cgroup.  Almost all of the page cache accounting code has help\nfrom Vaidyanathan Srinivasan.\n\n[hugh@veritas.com: fix swapoff breakage]\n[akpm@linux-foundation.org: fix locking]\nSigned-off-by: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: \u003cValdis.Kletnieks@vt.edu\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e6f3602d2c58815775b2a293cec6650622236169",
      "tree": "84721b0074e745474c7e71f53d58b6211cf30c40",
      "parents": [
        "a2b345642f530054a92b8d2b5108436225a8093e"
      ],
      "author": {
        "name": "Larry Woodman",
        "email": "lwoodman@redhat.com",
        "time": "Mon Feb 04 22:29:30 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "Include count of pagecache pages in show_mem() output\n\nThe show_mem() output does not include the total number of pagecache\npages.  This would be helpful when analyzing the debug information in\nthe /var/log/messages file after OOM kills occur.\n\nThis patch includes the total pagecache pages in that output.\n\nSigned-off-by: Larry Woodman \u003clwoodman@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": "920c7a5d0c94b8ce740f1d76fa06422f2a95a757",
      "tree": "74ab4b9b5a6f4279b9b9d2a463c6700546ba0011",
      "parents": [
        "1e548deb5d1630ca14ba04da04e3b6b3766178c7"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Mon Feb 04 22:29:26 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "mm: remove fastcall from mm/\n\nfastcall is always defined to be empty, remove it\n\n[akpm@linux-foundation.org: coding-style fixes]\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": "1e548deb5d1630ca14ba04da04e3b6b3766178c7",
      "tree": "0f5f6e1e92e9433014da15185c3dfcb27a200801",
      "parents": [
        "2d544564f9954860235db97df2e549a66c61f557"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Mon Feb 04 22:29:26 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "page allocator: remove unused arguments in zone_init_free_lists()\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3dfa5721f12c3d5a441448086bee156887daa961",
      "tree": "8ace8c3f842f8b626b762bb9d2a9b24d8e3bd130",
      "parents": [
        "5dc331852848a38ca00a2817e5b98a1d0561b116"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:29:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "Page allocator: get rid of the list of cold pages\n\nWe have repeatedly discussed if the cold pages still have a point. There is\none way to join the two lists: Use a single list and put the cold pages at the\nend and the hot pages at the beginning. That way a single list can serve for\nboth types of allocations.\n\nThe discussion of the RFC for this and Mel\u0027s measurements indicate that\nthere may not be too much of a point left to having separate lists for\nhot and cold pages (see http://marc.info/?t\u003d119492914200001\u0026r\u003d1\u0026w\u003d2).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Martin Bligh \u003cmbligh@mbligh.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9f8f2172537de7af0b0fbd33502d18d52b1339bc",
      "tree": "273c86583ed0295059c5526d3bd6927520a20add",
      "parents": [
        "e2848a0efedef4dad52d1334d37f8719cd6268fd"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:29:11 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:17 2008 -0800"
      },
      "message": "Page allocator: clean up pcp draining functions\n\n- Add comments explaing how drain_pages() works.\n\n- Eliminate useless functions\n\n- Rename drain_all_local_pages to drain_all_pages(). It does drain\n  all pages not only those of the local processor.\n\n- Eliminate useless interrupt off / on sequences. drain_pages()\n  disables interrupts on its own. The execution thread is\n  pinned to processor by the caller. So there is no need to\n  disable interrupts.\n\n- Put drain_all_pages() declaration in gfp.h and remove the\n  declarations from suspend.h and from mm/memory_hotplug.c\n\n- Make software suspend call drain_all_pages(). The draining\n  of processor local pages is may not the right approach if\n  software suspend wants to support SMP. If they call drain_all_pages\n  then we can make drain_pages() static.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Daniel Walker \u003cdwalker@mvista.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d6f4e60e736a00b50ec668ba1a9fe27afb083a3",
      "tree": "5d08b61e5aba935662763fbfce05768eb5067ac4",
      "parents": [
        "b0e86f0a3b9329bbebadb01ca935208459df18c3"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Thu Jan 17 15:21:12 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jan 17 15:38:58 2008 -0800"
      },
      "message": "mm: fix section mismatch warning in page_alloc.c\n\nWith CONFIG_HOTPLUG\u003dn and CONFIG_HOTPLUG_CPU\u003dy we saw\nfollowing warning:\nWARNING: mm/built-in.o(.text+0x6864): Section mismatch: reference to .init.text: (between \u0027process_zones\u0027 and \u0027pageset_cpuup_callback\u0027)\n\nThe culprit was zone_batchsize() which were annotated __devinit but used\nfrom process_zones() which is annotated __cpuinit.  zone_batchsize() are\nused from another function annotated __meminit so the only valid option is\nto drop the annotation of zone_batchsize() so we know it is always valid to\nuse it.\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\nAcked-by: 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": "467bc461d2845f6a04b124bca1ae6ecc554e1ee5",
      "tree": "060bed1cbd2440486d2abaafd8f0f2b8e6b9f76b",
      "parents": [
        "22a860a9e22fa077300e1e72170afb82bf695617"
      ],
      "author": {
        "name": "Thomas Bogendoerfer",
        "email": "tsbogend@alpha.franken.de",
        "time": "Tue Jan 08 15:33:11 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jan 08 16:10:36 2008 -0800"
      },
      "message": "Fix crash with FLAT_MEMORY and ARCH_PFN_OFFSET !\u003d 0\n\nWhen using FLAT_MEMORY and ARCH_PFN_OFFSET is not 0, the kernel crashes in\nmemmap_init_zone().  This bug got introduced by commit\nc713216deebd95d2b0ab38fef8bb2361c0180c2d\n\nSigned-off-by: Thomas Bogendoerfer \u003ctsbogend@alpha.franken.de\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Bob Picco \u003cbob.picco@hp.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: \"Keith Mannthey\" \u003ckmannth@gmail.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "81eabcbe0b991ddef5216f30ae91c4b226d54b6d",
      "tree": "f444d157d56583e034d3384a0102b5cb22d08743",
      "parents": [
        "8d936626dd00bd47cf574add458fea8a23b79611"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Dec 17 16:20:05 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Dec 17 19:28:16 2007 -0800"
      },
      "message": "mm: fix page allocation for larger I/O segments\n\nIn some cases the IO subsystem is able to merge requests if the pages are\nadjacent in physical memory.  This was achieved in the allocator by having\nexpand() return pages in physically contiguous order in situations were a\nlarge buddy was split.  However, list-based anti-fragmentation changed the\norder pages were returned in to avoid searching in buffered_rmqueue() for a\npage of the appropriate migrate type.\n\nThis patch restores behaviour of rmqueue_bulk() preserving the physical\norder of pages returned by the allocator without incurring increased search\ncosts for anti-fragmentation.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: James Bottomley \u003cJames.Bottomley@steeleye.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Mark Lord \u003cmlord@pobox.com\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba72cb8cb0cdc0a65b3abe9a387f1a26bfd49b8a",
      "tree": "c0617d342aba6525d7dbc9d607da754468385383",
      "parents": [
        "ee592a5bd5180cc1ffaf5acd7bf1e91e0d854a08"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Nov 28 16:21:13 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Nov 29 09:24:51 2007 -0800"
      },
      "message": "Fix boot problem with iSeries lacking hugepage support\n\nOrdinarily the size of a pageblock is determined at compile-time based on the\nhugepage size. On PPC64, the hugepage size is determined at runtime based on\nwhat is supported by the machine. With legacy machines such as iSeries that\ndo not support hugepages, HPAGE_SHIFT is 0. This results in pageblock_order\nbeing set to -PAGE_SHIFT and a crash results shortly afterwards.\n\nThis patch adds a function to select a sensible value for pageblock order by\ndefault when HUGETLB_PAGE_SIZE_VARIABLE is set. It checks that HPAGE_SHIFT\nis a sensible value before using the hugepage size; if it is not MAX_ORDER-1\nis used.\n\nThis is a fix for 2.6.24.\n\nCredit goes to Stephen Rothwell for identifying the bug and testing candidate\npatches.  Additional credit goes to Andy Whitcroft for spotting a problem\nwith respects to IA-64 before releasing. Additional credit to David Gibson\nfor testing with the libhugetlbfs test suite.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nTested-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: 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": "09f345da758fca1222b0971b65b2fddbdf78bb83",
      "tree": "1a316a3a157a080eba3b98f25b69e0eb243ac6e9",
      "parents": [
        "e84e2e132c9c66d8498e7710d4ea532d1feaaac5"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Nov 28 18:57:12 2007 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 28 11:04:28 2007 -0800"
      },
      "message": "prep_zero_page: remove bogus BUG_ON\n\n2.6.11 gave __GFP_ZERO\u0027s prep_zero_page a bogus \"highmem may have to wait\"\nassertion.  Presumably added under the misconception that clear_highpage\nuses nonatomic kmap; but then and now it uses kmap_atomic, so no problem.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "44048d700bcbfaf4bcca6e2e0a73d89d01ec0878",
      "tree": "975427ee367023b6e3a254519d5e5fdced2c0969",
      "parents": [
        "e6a5c27f3b0fef72e528fc35e343af4b2db790ff"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Nov 12 14:14:44 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Nov 12 14:14:44 2007 -0800"
      },
      "message": "Revert \"Bias the placement of kernel pages at lower PFNs\"\n\nThis reverts commit 5adc5be7cd1bcef6bb64f5255d2a33f20a3cf5be.\n\nAlexey Dobriyan reports that it causes huge slowdowns under some loads,\nin his case a \"mkfs.ext2\" on a 30G partition.  With the placement bias,\nthe mkfs took over four minutes, with it reverted it\u0027s back to about ten\nseconds for Alexey.\n\nReported-and-tested-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "183ff22bb6bd8188c904ebfb479656ae52230b72",
      "tree": "425207fc9cdca03df64ee8241ba764c75db4d8d1",
      "parents": [
        "676b1855de0a18100b3c340084eb8ef72bde4fb1"
      ],
      "author": {
        "name": "Simon Arlott",
        "email": "simon@fire.lp0.eux",
        "time": "Sat Oct 20 01:27:18 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sat Oct 20 01:27:18 2007 +0200"
      },
      "message": "spelling fixes: mm/\n\nSpelling fixes in mm/.\n\nSigned-off-by: Simon Arlott \u003csimon@fire.lp0.eu\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "ff0ceb9deb6eb017f52900b708d49cfa77bf25fb",
      "tree": "aa33fef12afb05cb2644e7ae38b79ef6dd8ba59d",
      "parents": [
        "098d7f128a4e53cb64930628915ac767785e0e60"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Oct 16 23:25:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "oom: serialize out of memory calls\n\nA final allocation attempt with a very high watermark needs to be attempted\nbefore invoking out_of_memory().  OOM killer serialization needs to occur\nbefore this final attempt, otherwise tasks attempting to OOM-lock all zones in\nits zonelist may spin and acquire the lock unnecessarily after the OOM\ncondition has already been alleviated.\n\nIf the final allocation does succeed, the zonelist is simply OOM-unlocked and\n__alloc_pages() returns the page.  Otherwise, the OOM killer is invoked.\n\nIf the task cannot acquire OOM-locks on all zones in its zonelist, it is put\nto sleep and the allocation is retried when it gets rescheduled.  One of its\nzones is already marked as being in the OOM killer so it\u0027ll hopefully be\ngetting some free memory soon, at least enough to satisfy a high watermark\nallocation attempt.  This prevents needlessly killing a task when the OOM\ncondition would have already been alleviated if it had simply been given\nenough time.\n\nCc: Andrea Arcangeli \u003candrea@suse.de\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e815af95f94914993bbad279c71cf5fef9f4eaac",
      "tree": "492e0d3e8d3303f37cf9fb0beecf952a1c828c53",
      "parents": [
        "70e24bdf6d2fead14631e72a07fba012400c521e"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Oct 16 23:25:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "oom: change all_unreclaimable zone member to flags\n\nConvert the int all_unreclaimable member of struct zone to unsigned long\nflags.  This can now be used to specify several different zone flags such as\nall_unreclaimable and reclaim_in_progress, which can now be removed and\nconverted to a per-zone flag.\n\nFlags are set and cleared as follows:\n\n\tzone_set_flag(struct zone *zone, zone_flags_t flag)\n\tzone_clear_flag(struct zone *zone, zone_flags_t flag)\n\nDefines the first zone flags, ZONE_ALL_UNRECLAIMABLE and ZONE_RECLAIM_LOCKED,\nwhich have the same semantics as the old zone-\u003eall_unreclaimable and\nzone-\u003ereclaim_in_progress, respectively.  Also converts all current users that\nset or clear either flag to use the new interface.\n\nHelper functions are defined to test the flags:\n\n\tint zone_is_all_unreclaimable(const struct zone *zone)\n\tint zone_is_reclaim_locked(const struct zone *zone)\n\nAll flag operators are of the atomic variety because there are currently\nreaders that are implemented that do not take zone-\u003elock.\n\n[akpm@linux-foundation.org: add needed include]\nCc: Andrea Arcangeli \u003candrea@suse.de\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a3135c2e77fe88cdea20b5e3f4761068b799ac2",
      "tree": "d82b0568722d285673251210716801e6fc4a90ed",
      "parents": [
        "4ba9b9d0ba0a49d91fa6417c7510ee36f48cf957"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Oct 16 23:25:53 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "oom: move prototypes to appropriate header file\n\nMove the OOM killer\u0027s extern function prototypes to include/linux/oom.h and\ninclude it where necessary.\n\n[clg@fr.ibm.com: build fix]\nCc: Andrea Arcangeli \u003candrea@suse.de\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Cedric Le Goater \u003cclg@fr.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": "0c0e6195896535481173df98935ad8db174f4d45",
      "tree": "2b35d3b81ba54b5d38e691d2a2019f4bcdfd1dce",
      "parents": [
        "a5d76b54a3f3a40385d7f76069a2feac9f1bad63"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Oct 16 01:26:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:02 2007 -0700"
      },
      "message": "memory unplug: page offline\n\nLogic.\n - set all pages in  [start,end)  as isolated migration-type.\n   by this, all free pages in the range will be not-for-use.\n - Migrate all LRU pages in the range.\n - Test all pages in the range\u0027s refcnt is zero or not.\n\nTodo:\n - allocate migration destination page from better area.\n - confirm page_count(page)\u003d\u003d 0 \u0026\u0026 PageReserved(page) page is safe to be freed..\n (I don\u0027t like this kind of page but..\n - Find out pages which cannot be migrated.\n - more running tests.\n - Use reclaim for unplugging other memory type area.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\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": "a5d76b54a3f3a40385d7f76069a2feac9f1bad63",
      "tree": "f58c432a4224b3be032bd4a4afa79dfa55d198a6",
      "parents": [
        "75884fb1c6388f3713ddcca662f3647b3129aaeb"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Oct 16 01:26:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:02 2007 -0700"
      },
      "message": "memory unplug: page isolation\n\nImplement generic chunk-of-pages isolation method by using page grouping ops.\n\nThis patch add MIGRATE_ISOLATE to MIGRATE_TYPES. By this\n - MIGRATE_TYPES increases.\n - bitmap for migratetype is enlarged.\n\npages of MIGRATE_ISOLATE migratetype will not be allocated even if it is free.\nBy this, you can isolated *freed* pages from users. How-to-free pages is not\na purpose of this patch. You may use reclaim and migrate codes to free pages.\n\nIf start_isolate_page_range(start,end) is called,\n - migratetype of the range turns to be MIGRATE_ISOLATE  if\n   its type is MIGRATE_MOVABLE. (*) this check can be updated if other\n   memory reclaiming works make progress.\n - MIGRATE_ISOLATE is not on migratetype fallback list.\n - All free pages and will-be-freed pages are isolated.\nTo check all pages in the range are isolated or not,  use test_pages_isolated(),\nTo cancel isolation, use undo_isolate_page_range().\n\nChanges V6 -\u003e V7\n - removed unnecessary #ifdef\n\nThere are HOLES_IN_ZONE handling codes...I\u0027m glad if we can remove them..\n\nSigned-off-by: Yasunori Goto \u003cy-goto@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": "48f13bf3e742fca8aab87f6c39451d03bf5952d4",
      "tree": "668160019ab157500a90655cf44f798ed3c77893",
      "parents": [
        "ea3061d227816d00717446ac12b853d7ae04b4fe"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:26:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:01 2007 -0700"
      },
      "message": "Breakout page_order() to internal.h to avoid special knowledge of the buddy allocator\n\nThe statistics patch later needs to know what order a free page is on the free\nlists.  Rather than having special knowledge of page_private() when\nPageBuddy() is set, this patch places out page_order() in internal.h and adds\na VM_BUG_ON to catch using it on non-PageBuddy pages.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "484f51f820199ab3e0ef15d08f1b6be20f53bf39",
      "tree": "eea15a3cb546463488595e7a5fae8628a5dd7877",
      "parents": [
        "467c996c1e1910633fa8e7adc9b052aa3ed5f97c"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue Oct 16 01:26:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:01 2007 -0700"
      },
      "message": "mm/page_alloc.c: make code static\n\nThis patch makes needlessly global code static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "467c996c1e1910633fa8e7adc9b052aa3ed5f97c",
      "tree": "09e0e70160386be1bdaa12801afddf287e12c8a1",
      "parents": [
        "d9c2340052278d8eb2ffb16b0484f8f794def4de"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:26:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Print out statistics in relation to fragmentation avoidance to /proc/pagetypeinfo\n\nThis patch provides fragmentation avoidance statistics via /proc/pagetypeinfo.\n The information is collected only on request so there is no runtime overhead.\n The statistics are in three parts:\n\nThe first part prints information on the size of blocks that pages are\nbeing grouped on and looks like\n\nPage block order: 10\nPages per block:  1024\n\nThe second part is a more detailed version of /proc/buddyinfo and looks like\n\nFree pages count per migrate type at order       0      1      2      3      4      5      6      7      8      9     10\nNode    0, zone      DMA, type    Unmovable      0      0      0      0      0      0      0      0      0      0      0\nNode    0, zone      DMA, type  Reclaimable      1      0      0      0      0      0      0      0      0      0      0\nNode    0, zone      DMA, type      Movable      0      0      0      0      0      0      0      0      0      0      0\nNode    0, zone      DMA, type      Reserve      0      4      4      0      0      0      0      1      0      1      0\nNode    0, zone   Normal, type    Unmovable    111      8      4      4      2      3      1      0      0      0      0\nNode    0, zone   Normal, type  Reclaimable    293     89      8      0      0      0      0      0      0      0      0\nNode    0, zone   Normal, type      Movable      1      6     13      9      7      6      3      0      0      0      0\nNode    0, zone   Normal, type      Reserve      0      0      0      0      0      0      0      0      0      0      4\n\nThe third part looks like\n\nNumber of blocks type     Unmovable  Reclaimable      Movable      Reserve\nNode 0, zone      DMA            0            1            2            1\nNode 0, zone   Normal            3           17           94            4\n\nTo walk the zones within a node with interrupts disabled, walk_zones_in_node()\nis introduced and shared between /proc/buddyinfo, /proc/zoneinfo and\n/proc/pagetypeinfo to reduce code duplication.  It seems specific to what\nvmstat.c requires but could be broken out as a general utility function in\nmmzone.c if there were other other potential users.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d9c2340052278d8eb2ffb16b0484f8f794def4de",
      "tree": "aec7e4e11473a4fcdfd389c718544780a042c6df",
      "parents": [
        "d100313fd615cc30374ff92e0b3facb053838330"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:26:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Do not depend on MAX_ORDER when grouping pages by mobility\n\nCurrently mobility grouping works at the MAX_ORDER_NR_PAGES level.  This makes\nsense for the majority of users where this is also the huge page size.\nHowever, on platforms like ia64 where the huge page size is runtime\nconfigurable it is desirable to group at a lower order.  On x86_64 and\noccasionally on x86, the hugepage size may not always be MAX_ORDER_NR_PAGES.\n\nThis patch groups pages together based on the value of HUGETLB_PAGE_ORDER.  It\nuses a compile-time constant if possible and a variable where the huge page\nsize is runtime configurable.\n\nIt is assumed that grouping should be done at the lowest sensible order and\nthat the user would not want to override this.  If this is not true,\npage_block order could be forced to a variable initialised via a boot-time\nkernel parameter.\n\nOne potential issue with this patch is that IA64 now parses hugepagesz with\nearly_param() instead of __setup().  __setup() is called after the memory\nallocator has been initialised and the pageblock bitmaps already setup.  In\ntests on one IA64 there did not seem to be any problem with using\nearly_param() and in fact may be more correct as it guarantees the parameter\nis handled before the parsing of hugepages\u003d.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d100313fd615cc30374ff92e0b3facb053838330",
      "tree": "f0bcd5e3b07bee40a65182c63b54baceca366849",
      "parents": [
        "64c5e135bf5a2a7f0ededb3435a31adbe0202f0c"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:26:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Fix calculation in move_freepages_block for counting pages\n\nmove_freepages_block() returns the number of blocks moved.  This value is used\nto determine if a block of pages should be stolen for the exclusive use of a\nmigrate type or not.  However, the value returned is being used correctly.\nThis patch fixes the calculation to return the number of base pages that have\nbeen moved.\n\nThis should be considered a fix to the patch\nmove-free-pages-between-lists-on-steal.patch\n\nCredit to Andy Whitcroft for spotting the problem.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "64c5e135bf5a2a7f0ededb3435a31adbe0202f0c",
      "tree": "cb4ff93cbcc3c27176723419a313d7c53545d36b",
      "parents": [
        "ac0e5b7a6b93fb291b01fe1e951e3c16bcdd3503"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "don\u0027t group high order atomic allocations\n\nGrouping high-order atomic allocations together was intended to allow\nbursty users of atomic allocations to work such as e1000 in situations\nwhere their preallocated buffers were depleted.  This did not work in at\nleast one case with a wireless network adapter needing order-1 allocations\nfrequently.  To resolve that, the free pages used for min_free_kbytes were\nmoved to separate contiguous blocks with the patch\nbias-the-location-of-pages-freed-for-min_free_kbytes-in-the-same-max_order_nr_pages-blocks.\n\nIt is felt that keeping the free pages in the same contiguous blocks should\nbe sufficient for bursty short-lived high-order atomic allocations to\nsucceed, maybe even with the e1000.  Even if there is a failure, increasing\nthe value of min_free_kbytes will free pages as contiguous bloks in\ncontrast to the standard buddy allocator which makes no attempt to keep the\nminimum number of free pages contiguous.\n\nThis patch backs out grouping high order atomic allocations together to\ndetermine if it is really needed or not.  If a new report comes in about\nhigh-order atomic allocations failing, the feature can be reintroduced to\ndetermine if it fixes the problem or not.  As a side-effect, this patch\nreduces by 1 the number of bits required to track the mobility type of\npages within a MAX_ORDER_NR_PAGES block.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac0e5b7a6b93fb291b01fe1e951e3c16bcdd3503",
      "tree": "732f67c8de6e0d2e001b60c17af9599468b80163",
      "parents": [
        "56fd56b868f19385c50af8941a4c78df433b2d32"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "remove PAGE_GROUP_BY_MOBILITY\n\nGrouping pages by mobility can be disabled at compile-time. This was\nconsidered undesirable by a number of people. However, in the current stack of\npatches, it is not a simple case of just dropping the configurable patch as it\nwould cause merge conflicts.  This patch backs out the configuration option.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56fd56b868f19385c50af8941a4c78df433b2d32",
      "tree": "5ea8362e6e141e2d1124d4640811c76489567bc5",
      "parents": [
        "5c0e3066474b57c56ff0d88ca31d95bd14232fee"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Bias the location of pages freed for min_free_kbytes in the same MAX_ORDER_NR_PAGES blocks\n\nThe standard buddy allocator always favours the smallest block of pages.\nThe effect of this is that the pages free to satisfy min_free_kbytes tends\nto be preserved since boot time at the same location of memory ffor a very\nlong time and as a contiguous block.  When an administrator sets the\nreserve at 16384 at boot time, it tends to be the same MAX_ORDER blocks\nthat remain free.  This allows the occasional high atomic allocation to\nsucceed up until the point the blocks are split.  In practice, it is\ndifficult to split these blocks but when they do split, the benefit of\nhaving min_free_kbytes for contiguous blocks disappears.  Additionally,\nincreasing min_free_kbytes once the system has been running for some time\nhas no guarantee of creating contiguous blocks.\n\nOn the other hand, CONFIG_PAGE_GROUP_BY_MOBILITY favours splitting large\nblocks when there are no free pages of the appropriate type available.  A\nside-effect of this is that all blocks in memory tends to be used up and\nthe contiguous free blocks from boot time are not preserved like in the\nvanilla allocator.  This can cause a problem if a new caller is unwilling\nto reclaim or does not reclaim for long enough.\n\nA failure scenario was found for a wireless network device allocating\norder-1 atomic allocations but the allocations were not intense or frequent\nenough for a whole block of pages to be preserved for MIGRATE_HIGHALLOC.\nThis was reproduced on a desktop by booting with mem\u003d256mb, forcing the\ndriver to allocate at order-1, running a bittorrent client (downloading a\ndebian ISO) and building a kernel with -j2.\n\nThis patch addresses the problem on the desktop machine booted with\nmem\u003d256mb.  It works by setting aside a reserve of MAX_ORDER_NR_PAGES\nblocks, the number of which depends on the value of min_free_kbytes.  These\nblocks are only fallen back to when there is no other free pages.  Then the\nsmallest possible page is used just like the normal buddy allocator instead\nof the largest possible page to preserve contiguous pages The pages in free\nlists in the reserve blocks are never taken for another migrate type.  The\nresults is that even if min_free_kbytes is set to a low value, contiguous\nblocks will be preserved in the MIGRATE_RESERVE blocks.\n\nThis works better than the vanilla allocator because if min_free_kbytes is\nincreased, a new reserve block will be chosen based on the location of\nreclaimable pages and the block will free up as contiguous pages.  In the\nvanilla allocator, no effort is made to target a block of pages to free as\ncontiguous pages and min_free_kbytes pages are scattered randomly.\n\nThis effect has been observed on the test machine.  min_free_kbytes was set\ninitially low but it was kept as a contiguous free block within\nMIGRATE_RESERVE.  min_free_kbytes was then set to a higher value and over a\nperiod of time, the free blocks were within the reserve and coalescing.\nHow long it takes to free up depends on how quickly LRU is rotating.\nAmusingly, this means that more activity will free the blocks faster.\n\nThis mechanism potentially replaces MIGRATE_HIGHALLOC as it may be more\neffective than grouping contiguous free pages together.  It all depends on\nwhether the number of active atomic high allocations exceeds\nmin_free_kbytes or not.  If the number of active allocations exceeds\nmin_free_kbytes, it\u0027s worth it but maybe in that situation, min_free_kbytes\nshould be set higher.  Once there are no more reports of allocation\nfailures, a patch will be submitted that backs out MIGRATE_HIGHALLOC and\nsee if the reports stay missing.\n\nCredit to Mariusz Kozlowski for discovering the problem, describing the\nfailure scenario and testing patches and scenarios.\n\n[akpm@linux-foundation.org: cleanups]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "46dafbca2bba811665b01d8cedf911204820623c",
      "tree": "c0dbc78b3da9749f257fa8756cd3133f39cd4f88",
      "parents": [
        "5adc5be7cd1bcef6bb64f5255d2a33f20a3cf5be"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Be more agressive about stealing when MIGRATE_RECLAIMABLE allocations fallback\n\nMIGRATE_RECLAIMABLE allocations tend to be very bursty in nature like when\nupdatedb starts.  It is likely this will occur in situations where MAX_ORDER\nblocks of pages are not free.  This means that updatedb can scatter\nMIGRATE_RECLAIMABLE pages throughout the address space.  This patch is more\nagressive about stealing blocks of pages for MIGRATE_RECLAIMABLE.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5adc5be7cd1bcef6bb64f5255d2a33f20a3cf5be",
      "tree": "39ed023e8c36cde0c0f9cba50f945e77d3ca26fa",
      "parents": [
        "9ef9acb05a741ec10a5e9122717736de12adced9"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Bias the placement of kernel pages at lower PFNs\n\nThis patch chooses blocks with lower PFNs when placing kernel allocations.\nThis is particularly important during fallback in low memory situations to\nstop unmovable pages being placed throughout the entire address space.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9ef9acb05a741ec10a5e9122717736de12adced9",
      "tree": "6008083999b3c6e115714fcdea637195f2b53df6",
      "parents": [
        "e010487dbe09d63cf916fd1b119d17abd0f48207"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Do not group pages by mobility type on low memory systems\n\nGrouping pages by mobility can only successfully operate when there are more\nMAX_ORDER_NR_PAGES areas than mobility types.  When there are insufficient\nareas, fallbacks cannot be avoided.  This has noticeable performance impacts\non machines with small amounts of memory in comparison to MAX_ORDER_NR_PAGES.\nFor example, on IA64 with a configuration including huge pages spans 1GiB with\nMAX_ORDER_NR_PAGES so would need at least 4GiB of RAM before grouping pages by\nmobility would be useful.  In comparison, an x86 would need 16MB.\n\nThis patch checks the size of vm_total_pages in build_all_zonelists(). If\nthere are not enough areas,  mobility is effectivly disabled by considering\nall allocations as the same type (UNMOVABLE).  This is achived via a\n__read_mostly flag.\n\nWith this patch, performance is comparable to disabling grouping pages\nby mobility at compile-time on a test machine with insufficient memory.\nWith this patch, it is reasonable to get rid of grouping pages by mobility\na compile-time option.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e010487dbe09d63cf916fd1b119d17abd0f48207",
      "tree": "37c7f36913daf4bc0a68a1d0ba1cc30ee0d4e307",
      "parents": [
        "e12ba74d8ff3e2f73a583500d7095e406df4d093"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:53 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Group high-order atomic allocations\n\nIn rare cases, the kernel needs to allocate a high-order block of pages\nwithout sleeping.  For example, this is the case with e1000 cards configured\nto use jumbo frames.  Migrating or reclaiming pages in this situation is not\nan option.\n\nThis patch groups these allocations together as much as possible by adding a\nnew MIGRATE_TYPE.  The MIGRATE_HIGHATOMIC type are exactly what they sound\nlike.  Care is taken that pages of other migrate types do not use the same\nblocks as high-order atomic allocations.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e12ba74d8ff3e2f73a583500d7095e406df4d093",
      "tree": "a0d3385b65f0b3e1e00b0bbf11b75e7538a93edb",
      "parents": [
        "c361be55b3128474aa66d31092db330b07539103"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Group short-lived and reclaimable kernel allocations\n\nThis patch marks a number of allocations that are either short-lived such as\nnetwork buffers or are reclaimable such as inode allocations.  When something\nlike updatedb is called, long-lived and unmovable kernel allocations tend to\nbe spread throughout the address space which increases fragmentation.\n\nThis patch groups these allocations together as much as possible by adding a\nnew MIGRATE_TYPE.  The MIGRATE_RECLAIMABLE type is for allocations that can be\nreclaimed on demand, but not moved.  i.e.  they can be migrated by deleting\nthem and re-reading the information from elsewhere.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c361be55b3128474aa66d31092db330b07539103",
      "tree": "9ce134f4e679144d28f5c32924bdba999a1aae6b",
      "parents": [
        "e2c55dc87f4a398b9c4dcc702dbc23a07fe14e23"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Move free pages between lists on steal\n\nWhen a fallback occurs, there will be free pages for one allocation type\nstored on the list for another.  When a large steal occurs, this patch will\nmove all the free pages within one list to the other.\n\n[y-goto@jp.fujitsu.com: fix BUG_ON check at move_freepages()]\n[apw@shadowen.org: Move to using pfn_valid_within()]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Bjorn Helgaas \u003cbjorn.helgaas@hp.com\u003e\nSigned-off-by: Andy Whitcroft \u003candyw@uk.ibm.com\u003e\nCc: Bob Picco \u003cbob.picco@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e2c55dc87f4a398b9c4dcc702dbc23a07fe14e23",
      "tree": "b3811de298d4c98c4765db4af3838428553b5382",
      "parents": [
        "b92a6edd4b77a8794adb497280beea5df5e59a14"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:59 2007 -0700"
      },
      "message": "Drain per-cpu lists when high-order allocations fail\n\nPer-cpu pages can accidentally cause fragmentation because they are free, but\npinned pages in an otherwise contiguous block.  When this patch is applied,\nthe per-cpu caches are drained after the direct-reclaim is entered if the\nrequested order is greater than 0.  It simply reuses the code used by suspend\nand hotplug.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b92a6edd4b77a8794adb497280beea5df5e59a14",
      "tree": "396ea5cf2b53fc066e949c443f03747ec868de1e",
      "parents": [
        "535131e6925b4a95f321148ad7293f496e0e58d7"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:59 2007 -0700"
      },
      "message": "Add a configure option to group pages by mobility\n\nThe grouping mechanism has some memory overhead and a more complex allocation\npath.  This patch allows the strategy to be disabled for small memory systems\nor if it is known the workload is suffering because of the strategy.  It also\nacts to show where the page groupings strategy interacts with the standard\nbuddy allocator.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Joel Schopp \u003cjschopp@austin.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "535131e6925b4a95f321148ad7293f496e0e58d7",
      "tree": "fdd49e29f89eb6db3ba2b5ba7df7b059de95a91f",
      "parents": [
        "b2a0ac8875a0a3b9f0739b60526f8c5977d2200f"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:49 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:59 2007 -0700"
      },
      "message": "Choose pages from the per-cpu list based on migration type\n\nThe freelists for each migrate type can slowly become polluted due to the\nper-cpu list.  Consider what happens when the following happens\n\n1. A 2^(MAX_ORDER-1) list is reserved for __GFP_MOVABLE pages\n2. An order-0 page is allocated from the newly reserved block\n3. The page is freed and placed on the per-cpu list\n4. alloc_page() is called with GFP_KERNEL as the gfp_mask\n5. The per-cpu list is used to satisfy the allocation\n\nThis results in a kernel page is in the middle of a migratable region. This\npatch prevents this leak occuring by storing the MIGRATE_ type of the page in\npage-\u003eprivate. On allocate, a page will only be returned of the desired type,\nelse more pages will be allocated. This may temporarily allow a per-cpu list\nto go over the pcp-\u003ehigh limit but it\u0027ll be corrected on the next free. Care\nis taken to preserve the hotness of pages recently freed.\n\nThe additional code is not measurably slower for the workloads we\u0027ve tested.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b2a0ac8875a0a3b9f0739b60526f8c5977d2200f",
      "tree": "31826716b3209751a5468b840ff14190b4a5a8a2",
      "parents": [
        "835c134ec4dd755e5c4470af566db226d1e96742"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:48 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:59 2007 -0700"
      },
      "message": "Split the free lists for movable and unmovable allocations\n\nThis patch adds the core of the fragmentation reduction strategy.  It works by\ngrouping pages together based on their ability to migrate or be reclaimed.\nBasically, it works by breaking the list in zone-\u003efree_area list into\nMIGRATE_TYPES number of lists.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "835c134ec4dd755e5c4470af566db226d1e96742",
      "tree": "7bc659978b4fba5089fc820185a8b6f0cc010b08",
      "parents": [
        "954ffcb35f5aca428661d29b96c4eee82b3c19cd"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:59 2007 -0700"
      },
      "message": "Add a bitmap that is used to track flags affecting a block of pages\n\nHere is the latest revision of the anti-fragmentation patches.  Of particular\nnote in this version is special treatment of high-order atomic allocations.\nCare is taken to group them together and avoid grouping pages of other types\nnear them.  Artifical tests imply that it works.  I\u0027m trying to get the\nhardware together that would allow setting up of a \"real\" test.  If anyone\nalready has a setup and test that can trigger the atomic-allocation problem,\nI\u0027d appreciate a test of these patches and a report.  The second major change\nis that these patches will apply cleanly with patches that implement\nanti-fragmentation through zones.\n\nkernbench shows effectively no performance difference varying between -0.2%\nand +2% on a variety of test machines.  Success rates for huge page allocation\nare dramatically increased.  For example, on a ppc64 machine, the vanilla\nkernel was only able to allocate 1% of memory as a hugepage and this was due\nto a single hugepage reserved as min_free_kbytes.  With these patches applied,\n17% was allocatable as superpages.  With reclaim-related fixes from Andy\nWhitcroft, it was 40% and further reclaim-related improvements should increase\nthis further.\n\nChangelog Since V28\no Group high-order atomic allocations together\no It is no longer required to set min_free_kbytes to 10% of memory. A value\n  of 16384 in most cases will be sufficient\no Now applied with zone-based anti-fragmentation\no Fix incorrect VM_BUG_ON within buffered_rmqueue()\no Reorder the stack so later patches do not back out work from earlier patches\no Fix bug were journal pages were being treated as movable\no Bias placement of non-movable pages to lower PFNs\no More agressive clustering of reclaimable pages in reactions to workloads\n  like updatedb that flood the size of inode caches\n\nChangelog Since V27\n\no Renamed anti-fragmentation to Page Clustering. Anti-fragmentation was giving\n  the mistaken impression that it was the 100% solution for high order\n  allocations. Instead, it greatly increases the chances high-order\n  allocations will succeed and lays the foundation for defragmentation and\n  memory hot-remove to work properly\no Redefine page groupings based on ability to migrate or reclaim instead of\n  basing on reclaimability alone\no Get rid of spurious inits\no Per-cpu lists are no longer split up per-type. Instead the per-cpu list is\n  searched for a page of the appropriate type\no Added more explanation commentary\no Fix up bug in pageblock code where bitmap was used before being initalised\n\nChangelog Since V26\no Fix double init of lists in setup_pageset\n\nChangelog Since V25\no Fix loop order of for_each_rclmtype_order so that order of loop matches args\no gfpflags_to_rclmtype uses gfp_t instead of unsigned long\no Rename get_pageblock_type() to get_page_rclmtype()\no Fix alignment problem in move_freepages()\no Add mechanism for assigning flags to blocks of pages instead of page-\u003eflags\no On fallback, do not examine the preferred list of free pages a second time\n\nThe purpose of these patches is to reduce external fragmentation by grouping\npages of related types together.  When pages are migrated (or reclaimed under\nmemory pressure), large contiguous pages will be freed.\n\nThis patch works by categorising allocations by their ability to migrate;\n\nMovable - The pages may be moved with the page migration mechanism. These are\n\tgenerally userspace pages.\n\nReclaimable - These are allocations for some kernel caches that are\n\treclaimable or allocations that are known to be very short-lived.\n\nUnmovable - These are pages that are allocated by the kernel that\n\tare not trivially reclaimed. For example, the memory allocated for a\n\tloaded module would be in this category. By default, allocations are\n\tconsidered to be of this type\n\nHighAtomic - These are high-order allocations belonging to callers that\n\tcannot sleep or perform any IO. In practice, this is restricted to\n\tjumbo frame allocation for network receive. It is assumed that the\n\tallocations are short-lived\n\nInstead of having one MAX_ORDER-sized array of free lists in struct free_area,\nthere is one for each type of reclaimability.  Once a 2^MAX_ORDER block of\npages is split for a type of allocation, it is added to the free-lists for\nthat type, in effect reserving it.  Hence, over time, pages of the different\ntypes can be clustered together.\n\nWhen the preferred freelists are expired, the largest possible block is taken\nfrom an alternative list.  Buddies that are split from that large block are\nplaced on the preferred allocation-type freelists to mitigate fragmentation.\n\nThis implementation gives best-effort for low fragmentation in all zones.\nIdeally, min_free_kbytes needs to be set to a value equal to 4 * (1 \u003c\u003c\n(MAX_ORDER-1)) pages in most cases.  This would be 16384 on x86 and x86_64 for\nexample.\n\nOur tests show that about 60-70% of physical memory can be allocated on a\ndesktop after a few days uptime.  In benchmarks and stress tests, we are\nfinding that 80% of memory is available as contiguous blocks at the end of the\ntest.  To compare, a standard kernel was getting \u003c 1% of memory as large pages\non a desktop and about 8-12% of memory as large pages at the end of stress\ntests.\n\nFollowing this email are 12 patches that implement thie page grouping feature.\n The first patch introduces a mechanism for storing flags related to a whole\nblock of pages.  Then allocations are split between movable and all other\nallocations.  Following that are patches to deal with per-cpu pages and make\nthe mechanism configurable.  The next patch moves free pages between lists\nwhen partially allocated blocks are used for pages of another migrate type.\nThe second last patch groups reclaimable kernel allocations such as inode\ncaches together.  The final patch related to groupings keeps high-order atomic\nallocations.\n\nThe last two patches are more concerned with control of fragmentation.  The\nsecond last patch biases placement of non-movable allocations towards the\nstart of memory.  This is with a view of supporting memory hot-remove of DIMMs\nwith higher PFNs in the future.  The biasing could be enforced a lot heavier\nbut it would cost.  The last patch agressively clusters reclaimable pages like\ninode caches together.\n\nThe fragmentation reduction strategy needs to track if pages within a block\ncan be moved or reclaimed so that pages are freed to the appropriate list.\nThis patch adds a bitmap for flags affecting a whole a MAX_ORDER block of\npages.\n\nIn non-SPARSEMEM configurations, the bitmap is stored in the struct zone and\nallocated during initialisation.  SPARSEMEM statically allocates the bitmap in\na struct mem_section so that bitmaps do not have to be resized during memory\nhotadd.  This wastes a small amount of memory per unused section (usually\nsizeof(unsigned long)) but the complexity of dynamically allocating the memory\nis quite high.\n\nAdditional credit to Andy Whitcroft who reviewed up an earlier implementation\nof the mechanism an suggested how to make it a *lot* cleaner.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "37b07e4163f7306aa735a6e250e8d22293e5b8de",
      "tree": "5c9c1935253a39aa840a9923bf1c86620cb6f733",
      "parents": [
        "0e1e7c7a739562a321fda07c7cd2a97a7114f8f8"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Tue Oct 16 01:25:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:59 2007 -0700"
      },
      "message": "memoryless nodes: fixup uses of node_online_map in generic code\n\nHere\u0027s a cut at fixing up uses of the online node map in generic code.\n\nmm/shmem.c:shmem_parse_mpol()\n\n\tEnsure nodelist is subset of nodes with memory.\n\tUse node_states[N_HIGH_MEMORY] as default for missing\n\tnodelist for interleave policy.\n\nmm/shmem.c:shmem_fill_super()\n\n\tinitialize policy_nodes to node_states[N_HIGH_MEMORY]\n\nmm/page-writeback.c:highmem_dirtyable_memory()\n\n\tsum over nodes with memory\n\nmm/page_alloc.c:zlc_setup()\n\n\tallowednodes - use nodes with memory.\n\nmm/page_alloc.c:default_zonelist_order()\n\n\taverage over nodes with memory.\n\nmm/page_alloc.c:find_next_best_node()\n\n\tskip nodes w/o memory.\n\tN_HIGH_MEMORY state mask may not be initialized at this time,\n\tunless we want to depend on early_calculate_totalpages() [see\n\tbelow].  Will ZONE_MOVABLE ever be configurable?\n\nmm/page_alloc.c:find_zone_movable_pfns_for_nodes()\n\n\tspread kernelcore over nodes with memory.\n\n\tThis required calling early_calculate_totalpages()\n\tunconditionally, and populating N_HIGH_MEMORY node\n\tstate therein from nodes in the early_node_map[].\n\tIf we can depend on this, we can eliminate the\n\tpopulation of N_HIGH_MEMORY mask from __build_all_zonelists()\n\tand use the N_HIGH_MEMORY mask in find_next_best_node().\n\nmm/mempolicy.c:mpol_check_policy()\n\n\tEnsure nodes specified for policy are subset of\n\tnodes with memory.\n\n[akpm@linux-foundation.org: fix warnings]\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "523b945855a1427000ffc707c610abe5947ae607",
      "tree": "2d84b5b6822a2a20bfd79146c08ce06ac8c80b9b",
      "parents": [
        "633c0666b5a5c41c376a5a7e4304d638dc48c1b9"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Oct 16 01:25:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:59 2007 -0700"
      },
      "message": "Memoryless nodes: Fix GFP_THISNODE behavior\n\nGFP_THISNODE checks that the zone selected is within the pgdat (node) of the\nfirst zone of a nodelist.  That only works if the node has memory.  A\nmemoryless node will have its first node on another pgdat (node).\n\nGFP_THISNODE currently will return simply memory on the first pgdat.  Thus it\nis returning memory on other nodes.  GFP_THISNODE should fail if there is no\nlocal memory on a node.\n\nAdd a new set of zonelists for each node that only contain the nodes that\nbelong to the zones itself so that no fallback is possible.\n\nThen modify gfp_type to pickup the right zone based on the presence of\n__GFP_THISNODE.\n\nDrop the existing GFP_THISNODE checks from the page_allocators hot path.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nTested-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Bob Picco \u003cbob.picco@hp.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@skynet.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "633c0666b5a5c41c376a5a7e4304d638dc48c1b9",
      "tree": "a8f42f5d4aaa4d25786d5a60e9c92b6d727254fd",
      "parents": [
        "37c0708dbee5825df3bd9ce6ef2199c6c1713970"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Oct 16 01:25:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:59 2007 -0700"
      },
      "message": "Memoryless nodes: drop one memoryless node boot warning\n\nget_pfn_range_for_nid() is called multiple times for each node at boot time.\nEach time, it will warn about nodes with no memory, resulting in boot messages\nlike:\n\n        Node 0 active with no memory\n        Node 0 active with no memory\n        Node 0 active with no memory\n        Node 0 active with no memory\n        Node 0 active with no memory\n        Node 0 active with no memory\n        On node 0 totalpages: 0\n        Node 0 active with no memory\n        Node 0 active with no memory\n          DMA zone: 0 pages used for memmap\n        Node 0 active with no memory\n        Node 0 active with no memory\n          Normal zone: 0 pages used for memmap\n        Node 0 active with no memory\n        Node 0 active with no memory\n          Movable zone: 0 pages used for memmap\n\nand so on for each memoryless node.\n\nWe already have the \"On node N totalpages: ...\" and other related messages, so\ndrop the \"Node N active with no memory\" warnings.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Bob Picco \u003cbob.picco@hp.com\u003e\nCc: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@skynet.ie\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "37c0708dbee5825df3bd9ce6ef2199c6c1713970",
      "tree": "747551aa58484e7f872da118b864c8f3ca6e892d",
      "parents": [
        "56bbd65df0e92a4a8eb70c5f2b416ae2b6c5fb31"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Oct 16 01:25:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:58 2007 -0700"
      },
      "message": "Memoryless nodes: Add N_CPU node state\n\nWe need the check for a node with cpu in zone reclaim.  Zone reclaim will not\nallow remote zone reclaim if a node has a cpu.\n\n[Lee.Schermerhorn@hp.com: Move setup of N_CPU node state mask]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nTested-by:  Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Bob Picco \u003cbob.picco@hp.com\u003e\nCc: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@skynet.ie\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ea1530ab3fdfa85441061909cc8040e84776fd4",
      "tree": "f3af0f8ed40a6df90bdbb9396d6163d59798a821",
      "parents": [
        "13808910713a98cc1159291e62cdfec92cc94d05"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Oct 16 01:25:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:58 2007 -0700"
      },
      "message": "Memoryless nodes: introduce mask of nodes with memory\n\nIt is necessary to know if nodes have memory since we have recently begun to\nadd support for memoryless nodes.  For that purpose we introduce a two new\nnode states: N_HIGH_MEMORY and N_NORMAL_MEMORY.\n\nA node has its bit in N_HIGH_MEMORY set if it has any memory regardless of the\ntype of mmemory.  If a node has memory then it has at least one zone defined\nin its pgdat structure that is located in the pgdat itself.\n\nA node has its bit in N_NORMAL_MEMORY set if it has a lower zone than\nZONE_HIGHMEM.  This means it is possible to allocate memory that is not\nsubject to kmap.\n\nN_HIGH_MEMORY and N_NORMAL_MEMORY can then be used in various places to insure\nthat we do the right thing when we encounter a memoryless node.\n\n[akpm@linux-foundation.org: build fix]\n[Lee.Schermerhorn@hp.com: update N_HIGH_MEMORY node state for memory hotadd]\n[y-goto@jp.fujitsu.com: Fix memory hotplug + sparsemem build]\nSigned-off-by: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Bob Picco \u003cbob.picco@hp.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@skynet.ie\u003e\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "13808910713a98cc1159291e62cdfec92cc94d05",
      "tree": "0fd7189dc2a76e1ae165ca5d6e8c6b4e6f1761af",
      "parents": [
        "55144768e100b68447f44c5e5c9deb155ad661bd"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Oct 16 01:25:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:58 2007 -0700"
      },
      "message": "Memoryless nodes: Generic management of nodemasks for various purposes\n\nWhy do we need to support memoryless nodes?\n\nKAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e wrote:\n\n\u003e For fujitsu, problem is called \"empty\" node.\n\u003e\n\u003e When ACPI\u0027s SRAT table includes \"possible nodes\", ia64 bootstrap(acpi_numa_init)\n\u003e creates nodes, which includes no memory, no cpu.\n\u003e\n\u003e I tried to remove empty-node in past, but that was denied.\n\u003e It was because we can hot-add cpu to the empty node.\n\u003e (node-hotplug triggered by cpu is not implemented now. and it will be ugly.)\n\u003e\n\u003e\n\u003e For HP, (Lee can comment on this later), they have memory-less-node.\n\u003e As far as I hear, HP\u0027s machine can have following configration.\n\u003e\n\u003e (example)\n\u003e Node0: CPU0   memory AAA MB\n\u003e Node1: CPU1   memory AAA MB\n\u003e Node2: CPU2   memory AAA MB\n\u003e Node3: CPU3   memory AAA MB\n\u003e Node4: Memory XXX GB\n\u003e\n\u003e AAA is very small value (below 16MB)  and will be omitted by ia64 bootstrap.\n\u003e After boot, only Node 4 has valid memory (but have no cpu.)\n\u003e\n\u003e Maybe this is memory-interleave by firmware config.\n\nChristoph Lameter \u003cclameter@sgi.com\u003e wrote:\n\n\u003e Future SGI platforms (actually also current one can have but nothing like\n\u003e that is deployed to my knowledge) have nodes with only cpus. Current SGI\n\u003e platforms have nodes with just I/O that we so far cannot manage in the\n\u003e core. So the arch code maps them to the nearest memory node.\n\nLee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e wrote:\n\n\u003e For the HP platforms, we can configure each cell with from 0% to 100%\n\u003e \"cell local memory\".  When we configure with \u003c100% CLM, the \"missing\n\u003e percentages\" are interleaved by hardware on a cache-line granularity to\n\u003e improve bandwidth at the expense of latency for numa-challenged\n\u003e applications [and OSes, but not our problem ;-)].  When we boot Linux on\n\u003e such a config, all of the real nodes have no memory--it all resides in a\n\u003e single interleaved pseudo-node.\n\u003e\n\u003e When we boot Linux on a 100% CLM configuration [\u003d\u003d NUMA], we still have\n\u003e the interleaved pseudo-node.  It contains a few hundred MB stolen from\n\u003e the real nodes to contain the DMA zone.  [Interleaved memory resides at\n\u003e phys addr 0].  The memoryless-nodes patches, along with the zoneorder\n\u003e patches, support this config as well.\n\u003e\n\u003e Also, when we boot a NUMA config with the \"mem\u003d\" command line,\n\u003e specifying less memory than actually exists, Linux takes the excluded\n\u003e memory \"off the top\" rather than distributing it across the nodes.  This\n\u003e can result in memoryless nodes, as well.\n\u003e\n\nThis patch:\n\nPreparation for memoryless node patches.\n\nProvide a generic way to keep nodemasks describing various characteristics of\nNUMA nodes.\n\nRemove the node_online_map and the node_possible map and realize the same\nfunctionality using two nodes stats: N_POSSIBLE and N_ONLINE.\n\n[Lee.Schermerhorn@hp.com: Initialize N_*_MEMORY and N_CPU masks for non-NUMA config]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nTested-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Bob Picco \u003cbob.picco@hp.com\u003e\nCc: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@skynet.ie\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: \"Serge E. Hallyn\" \u003cserge@hallyn.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8691f3a72f32f8b3ed535faa27140b3ae293c90b",
      "tree": "78ed23998e99de2fb4fb5b135c1fa4ad70612ef0",
      "parents": [
        "26fb1589cb0aaec3a0b4418c54f30c1a2b1781f6"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Tue Oct 16 01:24:49 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:54 2007 -0700"
      },
      "message": "mm: no need to cast vmalloc() return value in zone_wait_table_init()\n\nvmalloc() returns a void pointer, so there\u0027s no need to cast its\nreturn value in mm/page_alloc.c::zone_wait_table_init().\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@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": "641916881322a2dee5b120d509a3bdd05a502510",
      "tree": "79c0b1f449bcf09404ba932b07330a24bce4d00d",
      "parents": [
        "060d11b0b35d13eb2251fd08403d900b71df5791"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Aug 30 23:56:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Aug 31 01:42:22 2007 -0700"
      },
      "message": "process_zones(): fix recovery code\n\nDon\u0027t try to free memory which we didn\u0027t allocate.\n\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b377fd3982ad957c796758a90e2988401a884241",
      "tree": "3d7449ccdf7038bffffa9323873f4095cc1ac6ce",
      "parents": [
        "8e92f21ba3ea3f54e4be062b87ef9fc4af2d33e2"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Aug 22 14:02:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Aug 22 19:52:47 2007 -0700"
      },
      "message": "Apply memory policies to top two highest zones when highest zone is ZONE_MOVABLE\n\nThe NUMA layer only supports NUMA policies for the highest zone.  When\nZONE_MOVABLE is configured with kernelcore\u003d, the the highest zone becomes\nZONE_MOVABLE.  The result is that policies are only applied to allocations\nlike anonymous pages and page cache allocated from ZONE_MOVABLE when the\nzone is used.\n\nThis patch applies policies to the two highest zones when the highest zone\nis ZONE_MOVABLE.  As ZONE_MOVABLE consists of pages from the highest \"real\"\nzone, it\u0027s always functionally equivalent.\n\nThe patch has been tested on a variety of machines both NUMA and non-NUMA\ncovering x86, x86_64 and ppc64.  No abnormal results were seen in\nkernbench, tbench, dbench or hackbench.  It passes regression tests from\nthe numactl package with and without kernelcore\u003d once numactl tests are\npatched to wait for vmstat counters to update.\n\nakpm: this is the nasty hack to fix NUMA mempolicies in the presence of\nZONE_MOVABLE and kernelcore\u003d in 2.6.23.  Christoph says \"For .24 either merge\nthe mobility or get the other solution that Mel is working on.  That solution\nwould only use a single zonelist per node and filter on the fly.  That may\nhelp performance and also help to make memory policies work better.\"\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by:  Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nTested-by:  Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "a8bbf72ab9b3072ece630d97689145b1a2f01221"
}
