)]}'
{
  "log": [
    {
      "commit": "9ee493ce0a60bf42c0f8fd0b0fe91df5704a1cbf",
      "tree": "8dbdbf3d053281291ddc6ebe50d5d0afb5ce22d7",
      "parents": [
        "aa45484031ddee09b06350ab8528bfe5b2c76d1c"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Sep 09 16:38:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 09 18:57:25 2010 -0700"
      },
      "message": "mm: page allocator: drain per-cpu lists after direct reclaim allocation fails\n\nWhen under significant memory pressure, a process enters direct reclaim\nand immediately afterwards tries to allocate a page.  If it fails and no\nfurther progress is made, it\u0027s possible the system will go OOM.  However,\non systems with large amounts of memory, it\u0027s possible that a significant\nnumber of pages are on per-cpu lists and inaccessible to the calling\nprocess.  This leads to a process entering direct reclaim more often than\nit should increasing the pressure on the system and compounding the\nproblem.\n\nThis patch notes that if direct reclaim is making progress but allocations\nare still failing that the system is already under heavy pressure.  In\nthis case, it drains the per-cpu lists and tries the allocation a second\ntime before continuing.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aa45484031ddee09b06350ab8528bfe5b2c76d1c",
      "tree": "6758072232db9a54453022ec3e6cede35d52001c",
      "parents": [
        "72853e2991a2702ae93aaf889ac7db743a415dd3"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Thu Sep 09 16:38:17 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 09 18:57:25 2010 -0700"
      },
      "message": "mm: page allocator: calculate a better estimate of NR_FREE_PAGES when memory is low and kswapd is awake\n\nOrdinarily watermark checks are based on the vmstat NR_FREE_PAGES as it is\ncheaper than scanning a number of lists.  To avoid synchronization\noverhead, counter deltas are maintained on a per-cpu basis and drained\nboth periodically and when the delta is above a threshold.  On large CPU\nsystems, the difference between the estimated and real value of\nNR_FREE_PAGES can be very high.  If NR_FREE_PAGES is much higher than\nnumber of real free page in buddy, the VM can allocate pages below min\nwatermark, at worst reducing the real number of pages to zero.  Even if\nthe OOM killer kills some victim for freeing memory, it may not free\nmemory if the exit path requires a new page resulting in livelock.\n\nThis patch introduces a zone_page_state_snapshot() function (courtesy of\nChristoph) that takes a slightly more accurate view of an arbitrary vmstat\ncounter.  It is used to read NR_FREE_PAGES while kswapd is awake to avoid\nthe watermark being accidentally broken.  The estimate is not perfect and\nmay result in cache line bounces but is expected to be lighter than the\nIPI calls necessary to continually drain the per-cpu counters while kswapd\nis awake.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\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": "72853e2991a2702ae93aaf889ac7db743a415dd3",
      "tree": "814f3cc13f0d1133bcb4fd7ab9f429775774607b",
      "parents": [
        "5ee28a447625b9fe64fbf7cff026561084fc5f16"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Sep 09 16:38:16 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 09 18:57:25 2010 -0700"
      },
      "message": "mm: page allocator: update free page counters after pages are placed on the free list\n\nWhen allocating a page, the system uses NR_FREE_PAGES counters to\ndetermine if watermarks would remain intact after the allocation was made.\nThis check is made without interrupts disabled or the zone lock held and\nso is race-prone by nature.  Unfortunately, when pages are being freed in\nbatch, the counters are updated before the pages are added on the list.\nDuring this window, the counters are misleading as the pages do not exist\nyet.  When under significant pressure on systems with large numbers of\nCPUs, it\u0027s possible for processes to make progress even though they should\nhave been stalled.  This is particularly problematic if a number of the\nprocesses are using GFP_ATOMIC as the min watermark can be accidentally\nbreached and in extreme cases, the system can livelock.\n\nThis patch updates the counters after the pages have been added to the\nlist.  This makes the allocator more cautious with respect to preserving\nthe watermarks and mitigates livelock possibilities.\n\n[akpm@linux-foundation.org: avoid modifying incoming args]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "25edde0332916ae706ccf83de688be57bcc844b7",
      "tree": "35a5b0e651f9cdb48d9a55a748970339c4f681bc",
      "parents": [
        "b898cc70019ce1835bbf6c47bdf978adc36faa42"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:27 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:00 2010 -0700"
      },
      "message": "vmscan: kill prev_priority completely\n\nSince 2.6.28 zone-\u003eprev_priority is unused. Then it can be removed\nsafely. It reduce stack usage slightly.\n\nNow I have to say that I\u0027m sorry. 2 years ago, I thought prev_priority\ncan be integrate again, it\u0027s useful. but four (or more) times trying\nhaven\u0027t got good performance number. Thus I give up such approach.\n\nThe rest of this changelog is notes on prev_priority and why it existed in\nthe first place and why it might be not necessary any more. This information\nis based heavily on discussions between Andrew Morton, Rik van Riel and\nKosaki Motohiro who is heavily quotes from.\n\nHistorically prev_priority was important because it determined when the VM\nwould start unmapping PTE pages. i.e. there are no balances of note within\nthe VM, Anon vs File and Mapped vs Unmapped. Without prev_priority, there\nis a potential risk of unnecessarily increasing minor faults as a large\namount of read activity of use-once pages could push mapped pages to the\nend of the LRU and get unmapped.\n\nThere is no proof this is still a problem but currently it is not considered\nto be. Active files are not deactivated if the active file list is smaller\nthan the inactive list reducing the liklihood that file-mapped pages are\nbeing pushed off the LRU and referenced executable pages are kept on the\nactive list to avoid them getting pushed out by read activity.\n\nEven if it is a problem, prev_priority prev_priority wouldn\u0027t works\nnowadays. First of all, current vmscan still a lot of UP centric code. it\nexpose some weakness on some dozens CPUs machine. I think we need more and\nmore improvement.\n\nThe problem is, current vmscan mix up per-system-pressure, per-zone-pressure\nand per-task-pressure a bit. example, prev_priority try to boost priority to\nother concurrent priority. but if the another task have mempolicy restriction,\nit is unnecessary, but also makes wrong big latency and exceeding reclaim.\nper-task based priority + prev_priority adjustment make the emulation of\nper-system pressure. but it have two issue 1) too rough and brutal emulation\n2) we need per-zone pressure, not per-system.\n\nAnother example, currently DEF_PRIORITY is 12. it mean the lru rotate about\n2 cycle (1/4096 + 1/2048 + 1/1024 + .. + 1) before invoking OOM-Killer.\nbut if 10,0000 thrreads enter DEF_PRIORITY reclaim at the same time, the\nsystem have higher memory pressure than priority\u003d\u003d0 (1/4096*10,000 \u003e 2).\nprev_priority can\u0027t solve such multithreads workload issue. In other word,\nprev_priority concept assume the sysmtem don\u0027t have lots threads.\"\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michael Rubin \u003cmrubin@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": "ff321feac22313cf53ffceb69224b09ac19ff22b",
      "tree": "101400fdee395944c2fa5f1f2b45cac54a5c1088",
      "parents": [
        "b940fd703572f7f9e5f894c682c91c3cbd84c11e"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Aug 09 17:18:57 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:57 2010 -0700"
      },
      "message": "mm: rename try_set_zone_oom() to try_set_zonelist_oom()\n\nWe have been used naming try_set_zone_oom and clear_zonelist_oom.\nThe role of functions is to lock of zonelist for preventing parallel\nOOM. So clear_zonelist_oom makes sense but try_set_zone_oome is rather\nawkward and unmatched with clear_zonelist_oom.\n\nLet\u0027s change it with try_set_zonelist_oom.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\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": "03668b3ceb0c7a95e09f1b6169f5270ffc1a19f6",
      "tree": "755ea207b968af12e195f6fb3e3b52b4d68e8630",
      "parents": [
        "ad915c432eccb482427c1bbd77c74e6f7bfe60b3"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:56 2010 -0700"
      },
      "message": "oom: avoid oom killer for lowmem allocations\n\nIf memory has been depleted in lowmem zones even with the protection\nafforded to it by /proc/sys/vm/lowmem_reserve_ratio, it is unlikely that\nkilling current users will help.  The memory is either reclaimable (or\nmigratable) already, in which case we should not invoke the oom killer at\nall, or it is pinned by an application for I/O.  Killing such an\napplication may leave the hardware in an unspecified state and there is no\nguarantee that it will be able to make a timely exit.\n\nLowmem allocations are now failed in oom conditions when __GFP_NOFAIL is\nnot used so that the task can perhaps recover or try again later.\n\nPreviously, the heuristic provided some protection for those tasks with\nCAP_SYS_RAWIO, but this is no longer necessary since we will not be\nkilling tasks for the purposes of ISA allocations.\n\nhigh_zoneidx is gfp_zone(gfp_flags), meaning that ZONE_NORMAL will be the\ndefault for all allocations that are not __GFP_DMA, __GFP_DMA32,\n__GFP_HIGHMEM, and __GFP_MOVABLE on kernels configured to support those\nflags.  Testing for high_zoneidx being less than ZONE_NORMAL will only\nreturn true for allocations that have either __GFP_DMA or __GFP_DMA32.\n\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\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": "b8ab9f82025adea77864115da73e70026fa4f540",
      "tree": "37d83932b99efd4aac2fccb2075a76bf0a147769",
      "parents": [
        "9aebbdb637a73a6092e1456ebb4a2df32cc1f611"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Tue Jul 20 13:24:31 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 20 16:25:40 2010 -0700"
      },
      "message": "x86,nobootmem: make alloc_bootmem_node fall back to other node when 32bit numa is used\n\nBorislav Petkov reported his 32bit numa system has problem:\n\n[    0.000000] Reserving total of 4c00 pages for numa KVA remap\n[    0.000000] kva_start_pfn ~ 32800 max_low_pfn ~ 375fe\n[    0.000000] max_pfn \u003d 238000\n[    0.000000] 8202MB HIGHMEM available.\n[    0.000000] 885MB LOWMEM available.\n[    0.000000]   mapped low ram: 0 - 375fe000\n[    0.000000]   low ram: 0 - 375fe000\n[    0.000000] alloc (nid\u003d8 100000 - 7ee00000) (1000000 - ffffffff) 1000 1000 \u003d\u003e 34e7000\n[    0.000000] alloc (nid\u003d8 100000 - 7ee00000) (1000000 - ffffffff) 200 40 \u003d\u003e 34c9d80\n[    0.000000] alloc (nid\u003d0 100000 - 7ee00000) (1000000 - ffffffffffffffff) 180 40 \u003d\u003e 34e6140\n[    0.000000] alloc (nid\u003d1 80000000 - c7e60000) (1000000 - ffffffffffffffff) 240 40 \u003d\u003e 80000000\n[    0.000000] BUG: unable to handle kernel paging request at 40000000\n[    0.000000] IP: [\u003cc2c8cff1\u003e] __alloc_memory_core_early+0x147/0x1d6\n[    0.000000] *pdpt \u003d 0000000000000000 *pde \u003d f000ff53f000ff00\n...\n[    0.000000] Call Trace:\n[    0.000000]  [\u003cc2c8b4f8\u003e] ? __alloc_bootmem_node+0x216/0x22f\n[    0.000000]  [\u003cc2c90c9b\u003e] ? sparse_early_usemaps_alloc_node+0x5a/0x10b\n[    0.000000]  [\u003cc2c9149e\u003e] ? sparse_init+0x1dc/0x499\n[    0.000000]  [\u003cc2c79118\u003e] ? paging_init+0x168/0x1df\n[    0.000000]  [\u003cc2c780ff\u003e] ? native_pagetable_setup_start+0xef/0x1bb\n\nlooks like it allocates too much high address for bootmem.\n\nTry to cut limit with get_max_mapped()\n\nReported-by: Borislav Petkov \u003cborislav.petkov@amd.com\u003e\nTested-by: Conny Seidel \u003cconny.seidel@amd.com\u003e\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.34.x]\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.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": "9078370c0d2cfe4a905aa34f398bbb0d65921a2b",
      "tree": "0b0d3b1f2a9a6dd2f2deaae9fbf9c8c5509ac13c",
      "parents": [
        "7952f98818d561ed0e11434a7a16acd9a7bae859"
      ],
      "author": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Mon Jul 19 11:54:15 2010 +0100"
      },
      "committer": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Mon Jul 19 11:54:15 2010 +0100"
      },
      "message": "kmemleak: Add support for NO_BOOTMEM configurations\n\nWith commits 08677214 and 59be5a8e, alloc_bootmem()/free_bootmem() and\nfriends use the early_res functions for memory management when\nNO_BOOTMEM is enabled. This patch adds the kmemleak calls in the\ncorresponding code paths for bootmem allocations.\n\nSigned-off-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "7aac789885512388a66d47280d7e7777ffba1e59",
      "tree": "af4ac98260268889a422dd264102d2f15d5c1983",
      "parents": [
        "3bccd996276b108c138e8176793a26ecef54d573"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Wed May 26 14:45:00 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:57 2010 -0700"
      },
      "message": "numa: introduce numa_mem_id()- effective local memory node id\n\nIntroduce numa_mem_id(), based on generic percpu variable infrastructure\nto track \"nearest node with memory\" for archs that support memoryless\nnodes.\n\nDefine API in \u003clinux/topology.h\u003e when CONFIG_HAVE_MEMORYLESS_NODES\ndefined, else stubs.  Architectures will define HAVE_MEMORYLESS_NODES\nif/when they support them.\n\nArchs can override definitions of:\n\nnuma_mem_id() - returns node number of \"local memory\" node\nset_numa_mem() - initialize [this cpus\u0027] per cpu variable \u0027numa_mem\u0027\ncpu_to_mem()  - return numa_mem for specified cpu; may be used as lvalue\n\nGeneric initialization of \u0027numa_mem\u0027 occurs in __build_all_zonelists().\nThis will initialize the boot cpu at boot time, and all cpus on change of\nnuma_zonelist_order, or when node or memory hot-plug requires zonelist\nrebuild.  Archs that support memoryless nodes will need to initialize\n\u0027numa_mem\u0027 for secondary cpus as they\u0027re brought on-line.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Eric Whitney \u003ceric.whitney@hp.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: \u003clinux-arch@vger.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": "7281201922a0063fa60804ce39c277fc98142a47",
      "tree": "4bf089d077b1055e54bc1411dcc0db121d01d9fa",
      "parents": [
        "866707fc2721df8fee637fcf0239628b9231f9ea"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Wed May 26 14:44:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:57 2010 -0700"
      },
      "message": "numa: add generic percpu var numa_node_id() implementation\n\nRework the generic version of the numa_node_id() function to use the new\ngeneric percpu variable infrastructure.\n\nGuard the new implementation with a new config option:\n\n        CONFIG_USE_PERCPU_NUMA_NODE_ID.\n\nArchs which support this new implemention will default this option to \u0027y\u0027\nwhen NUMA is configured.  This config option could be removed if/when all\narchs switch over to the generic percpu implementation of numa_node_id().\nArch support involves:\n\n  1) converting any existing per cpu variable implementations to use\n     this implementation.  x86_64 is an instance of such an arch.\n  2) archs that don\u0027t use a per cpu variable for numa_node_id() will\n     need to initialize the new per cpu variable \"numa_node\" as cpus\n     are brought on-line.  ia64 is an example.\n  3) Defining USE_PERCPU_NUMA_NODE_ID in arch dependent Kconfig--e.g.,\n     when NUMA is configured.  This is required because I have\n     retained the old implementation by default to allow archs to\n     be modified incrementally, as desired.\n\nSubsequent patches will convert x86_64 and ia64 to use this implemenation.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Eric Whitney \u003ceric.whitney@hp.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: \u003clinux-arch@vger.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": "4eaf3f64397c3db3c5785eee508270d62a9fabd9",
      "tree": "bfd986a7e974876755ea6fe0de394199c68e2e36",
      "parents": [
        "1f522509c77a5dea8dc384b735314f03908a6415"
      ],
      "author": {
        "name": "Haicheng Li",
        "email": "haicheng.li@linux.intel.com",
        "time": "Mon May 24 14:32:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:07:02 2010 -0700"
      },
      "message": "mem-hotplug: fix potential race while building zonelist for new populated zone\n\nAdd global mutex zonelists_mutex to fix the possible race:\n\n     CPU0                                  CPU1                    CPU2\n(1) zone-\u003epresent_pages +\u003d online_pages;\n(2)                                       build_all_zonelists();\n(3)                                                               alloc_page();\n(4)                                                               free_page();\n(5) build_all_zonelists();\n(6)   __build_all_zonelists();\n(7)     zone-\u003epageset \u003d alloc_percpu();\n\nIn step (3,4), zone-\u003epageset still points to boot_pageset, so bad\nthings may happen if 2+ nodes are in this state. Even if only 1 node\nis accessing the boot_pageset, (3) may still consume too much memory\nto fail the memory allocations in step (7).\n\nBesides, atomic operation ensures alloc_percpu() in step (7) will never fail\nsince there is a new fresh memory block added in step(6).\n\n[haicheng.li@linux.intel.com: hold zonelists_mutex when build_all_zonelists]\nSigned-off-by: Haicheng Li \u003chaicheng.li@linux.intel.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: Andi Kleen \u003candi.kleen@intel.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Tejun Heo \u003ctj@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": "1f522509c77a5dea8dc384b735314f03908a6415",
      "tree": "4b848527b90877a8a64c46e8e2d76723405c319d",
      "parents": [
        "319774e25fa4b7641bdc3b0a464dd84e62103347"
      ],
      "author": {
        "name": "Haicheng Li",
        "email": "haicheng.li@linux.intel.com",
        "time": "Mon May 24 14:32:51 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:07:01 2010 -0700"
      },
      "message": "mem-hotplug: avoid multiple zones sharing same boot strapping boot_pageset\n\nFor each new populated zone of hotadded node, need to update its pagesets\nwith dynamically allocated per_cpu_pageset struct for all possible CPUs:\n\n    1) Detach zone-\u003epageset from the shared boot_pageset\n       at end of __build_all_zonelists().\n\n    2) Use mutex to protect zone-\u003epageset when it\u0027s still\n       shared in onlined_pages()\n\nOtherwises, multiple zones of different nodes would share same boot strapping\nboot_pageset for same CPU, which will finally cause below kernel panic:\n\n  ------------[ cut here ]------------\n  kernel BUG at mm/page_alloc.c:1239!\n  invalid opcode: 0000 [#1] SMP\n  ...\n  Call Trace:\n   [\u003cffffffff811300c1\u003e] __alloc_pages_nodemask+0x131/0x7b0\n   [\u003cffffffff81162e67\u003e] alloc_pages_current+0x87/0xd0\n   [\u003cffffffff81128407\u003e] __page_cache_alloc+0x67/0x70\n   [\u003cffffffff811325f0\u003e] __do_page_cache_readahead+0x120/0x260\n   [\u003cffffffff81132751\u003e] ra_submit+0x21/0x30\n   [\u003cffffffff811329c6\u003e] ondemand_readahead+0x166/0x2c0\n   [\u003cffffffff81132ba0\u003e] page_cache_async_readahead+0x80/0xa0\n   [\u003cffffffff8112a0e4\u003e] generic_file_aio_read+0x364/0x670\n   [\u003cffffffff81266cfa\u003e] nfs_file_read+0xca/0x130\n   [\u003cffffffff8117b20a\u003e] do_sync_read+0xfa/0x140\n   [\u003cffffffff8117bf75\u003e] vfs_read+0xb5/0x1a0\n   [\u003cffffffff8117c151\u003e] sys_read+0x51/0x80\n   [\u003cffffffff8103c032\u003e] system_call_fastpath+0x16/0x1b\n  RIP  [\u003cffffffff8112ff13\u003e] get_page_from_freelist+0x883/0x900\n   RSP \u003cffff88000d1e78a8\u003e\n  ---[ end trace 4bda28328b9990db ]\n\n[akpm@linux-foundation.org: merge fix]\nSigned-off-by: Haicheng Li \u003chaicheng.li@linux.intel.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: Andi Kleen \u003candi.kleen@intel.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Tejun Heo \u003ctj@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": "319774e25fa4b7641bdc3b0a464dd84e62103347",
      "tree": "6865aee1b58fff5d7042fbdcb989ee7751660bcc",
      "parents": [
        "0faa56389c793cda7f967117415717bbab24fe4e"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon May 24 14:32:49 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:07:01 2010 -0700"
      },
      "message": "mem-hotplug: separate setup_per_cpu_pageset() into separate functions\n\nNo behavior change here.\n\nMove some of setup_per_cpu_pageset() code into a new function\nsetup_zone_pageset() that will be useful for memory hotplug.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Haicheng Li \u003chaicheng.li@linux.intel.com\u003e\nReviewed-by: Andi Kleen \u003candi.kleen@intel.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Tejun Heo \u003ctj@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": "ec95f53aa6ed62ba68660cb19c8474ebe9025cce",
      "tree": "953ad71c8ee0373ca76f17ee9df65358ad2fe7b7",
      "parents": [
        "5f53e76299ceebd68bdf9495e8ff80db77711236"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon May 24 14:32:38 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:07:00 2010 -0700"
      },
      "message": "mm: introduce free_pages_prepare()\n\nfree_hot_cold_page() and __free_pages_ok() have very similar freeing\npreparation.  Consolidate them.\n\n[akpm@linux-foundation.org: fix busted coding style]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.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": "4f92e2586b43a2402e116055d4edda704f911b5b",
      "tree": "6a765ebeba951c02a7878bcea52a4769ad2e45c2",
      "parents": [
        "5e7719058079a1423ccce56148b0aaa56b2df821"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon May 24 14:32:32 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:07:00 2010 -0700"
      },
      "message": "mm: compaction: defer compaction using an exponential backoff when compaction fails\n\nThe fragmentation index may indicate that a failure is due to external\nfragmentation but after a compaction run completes, it is still possible\nfor an allocation to fail.  There are two obvious reasons as to why\n\n  o Page migration cannot move all pages so fragmentation remains\n  o A suitable page may exist but watermarks are not met\n\nIn the event of compaction followed by an allocation failure, this patch\ndefers further compaction in the zone (1 \u003c\u003c compact_defer_shift) times.\nIf the next compaction attempt also fails, compact_defer_shift is\nincreased up to a maximum of 6.  If compaction succeeds, the defer\ncounters are reset again.\n\nThe zone that is deferred is the first zone in the zonelist - i.e.  the\npreferred zone.  To defer compaction in the other zones, the information\nwould need to be stored in the zonelist or implemented similar to the\nzonelist_cache.  This would impact the fast-paths and is not justified at\nthis time.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56de7263fcf3eb10c8dcdf8d59a9cec831795f3f",
      "tree": "164637c0b678e20adfdcec4129563d9234faf405",
      "parents": [
        "ed4a6d7f0676db50b5023cc01f6cda82a2f2a307"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon May 24 14:32:30 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:06:59 2010 -0700"
      },
      "message": "mm: compaction: direct compact when a high-order allocation fails\n\nOrdinarily when a high-order allocation fails, direct reclaim is entered\nto free pages to satisfy the allocation.  With this patch, it is\ndetermined if an allocation failed due to external fragmentation instead\nof low memory and if so, the calling process will compact until a suitable\npage is freed.  Compaction by moving pages in memory is considerably\ncheaper than paging out to disk and works where there are locked pages or\nno swap.  If compaction fails to free a page of a suitable size, then\nreclaim will still occur.\n\nDirect compaction returns as soon as possible.  As each block is\ncompacted, it is checked if a suitable page has been freed and if so, it\nreturns.\n\n[akpm@linux-foundation.org: Fix build errors]\n[aarcange@redhat.com: fix count_vm_event preempt in memory compaction direct reclaim]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrea Arcangeli \u003caarcange@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": "748446bb6b5a9390b546af38ec899c868a9dbcf0",
      "tree": "4c27d0805a5e094b39ff938ad60dd270b953a79f",
      "parents": [
        "c175a0ce7584e5b498fff8cbdb9aa7912aa9fbba"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon May 24 14:32:27 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:06:59 2010 -0700"
      },
      "message": "mm: compaction: memory compaction core\n\nThis patch is the core of a mechanism which compacts memory in a zone by\nrelocating movable pages towards the end of the zone.\n\nA single compaction run involves a migration scanner and a free scanner.\nBoth scanners operate on pageblock-sized areas in the zone.  The migration\nscanner starts at the bottom of the zone and searches for all movable\npages within each area, isolating them onto a private list called\nmigratelist.  The free scanner starts at the top of the zone and searches\nfor suitable areas and consumes the free pages within making them\navailable for the migration scanner.  The pages isolated for migration are\nthen migrated to the newly isolated free pages.\n\n[aarcange@redhat.com: Fix unsafe optimisation]\n[mel@csn.ul.ie: do not schedule work on other CPUs for compaction]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e325c90ffc13b698fa2814102e05275b21c26bec",
      "tree": "dcb20cad204132e08476d3cb4da66f9a2e08b9fe",
      "parents": [
        "1a5cb81465b66b74bf3d6ad36e5382238de6a132"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon May 24 14:32:13 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:06:58 2010 -0700"
      },
      "message": "mm: default to node zonelist ordering when nodes have only lowmem\n\nThere are two types of zonelist ordering methodologies:\n\n - node order, preferring allocations on a node to stay local to and\n\n - zone order, preferring allocations come from a higher zone to avoid\n   allocating in lowmem zones even though they may not be local.\n\nThe ordering technique used by the kernel is configurable on the command\nline, but also has some logic to determine what the default should be.\n\nThis logic currently lacks knowledge of systems where a node may only have\nlowmem.  For such systems, it is necessary to use node order so that\nGFP_KERNEL allocations may be satisfied by nodes consisting of only\nlowmem.\n\nIf zone order is used, GFP_KERNEL allocations to such nodes are actually\nallocated on a node with local affinity that includes ZONE_NORMAL.\n\nThis change defaults to node zonelist ordering if any node lacks\nZONE_NORMAL.\n\nTo force zone order, append \u0027numa_zonelist_order\u003dzone\u0027 to the kernel\ncommand line.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\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": "c0ff7453bb5c7c98e0885fb94279f2571946f280",
      "tree": "8bb2b169a5145f0496575dbd2f48bb4b1c83f819",
      "parents": [
        "708c1bbc9d0c3e57f40501794d9b0eed29d10fce"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Mon May 24 14:32:08 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:06:57 2010 -0700"
      },
      "message": "cpuset,mm: fix no node to alloc memory when changing cpuset\u0027s mems\n\nBefore applying this patch, cpuset updates task-\u003emems_allowed and\nmempolicy by setting all new bits in the nodemask first, and clearing all\nold unallowed bits later.  But in the way, the allocator may find that\nthere is no node to alloc memory.\n\nThe reason is that cpuset rebinds the task\u0027s mempolicy, it cleans the\nnodes which the allocater can alloc pages on, for example:\n\n(mpol: mempolicy)\n\ttask1\t\t\ttask1\u0027s mpol\ttask2\n\talloc page\t\t1\n\t  alloc on node0? NO\t1\n\t\t\t\t1\t\tchange mems from 1 to 0\n\t\t\t\t1\t\trebind task1\u0027s mpol\n\t\t\t\t0-1\t\t  set new bits\n\t\t\t\t0\t  \t  clear disallowed bits\n\t  alloc on node1? NO\t0\n\t  ...\n\tcan\u0027t alloc page\n\t  goto oom\n\nThis patch fixes this problem by expanding the nodes range first(set newly\nallowed bits) and shrink it lazily(clear newly disallowed bits).  So we\nuse a variable to tell the write-side task that read-side task is reading\nnodemask, and the write-side task clears newly disallowed nodes after\nread-side task ends the current memory allocation.\n\n[akpm@linux-foundation.org: fix spello]\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6dda9d55bf545013597724bf0cd79d01bd2bd944",
      "tree": "fd859ab0c2cc4df8b776f705151ba5163f588143",
      "parents": [
        "e9d6c157385e4efa61cb8293e425c9d8beba70d3"
      ],
      "author": {
        "name": "Corrado Zoccolo",
        "email": "czoccolo@gmail.com",
        "time": "Mon May 24 14:31:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:06:56 2010 -0700"
      },
      "message": "page allocator: reduce fragmentation in buddy allocator by adding buddies that are merging to the tail of the free lists\n\nIn order to reduce fragmentation, this patch classifies freed pages in two\ngroups according to their probability of being part of a high order merge.\n Pages belonging to a compound whose next-highest buddy is free are more\nlikely to be part of a high order merge in the near future, so they will\nbe added at the tail of the freelist.  The remaining pages are put at the\nfront of the freelist.\n\nIn this way, the pages that are more likely to cause a big merge are kept\nfree longer.  Consequently there is a tendency to aggregate the\nlong-living allocations on a subset of the compounds, reducing the\nfragmentation.\n\nThis heuristic was tested on three machines, x86, x86-64 and ppc64 with\n3GB of RAM in each machine.  The tests were kernbench, netperf, sysbench\nand STREAM for performance and a high-order stress test for huge page\nallocations.\n\nKernBench X86\nElapsed mean     374.77 ( 0.00%)   375.10 (-0.09%)\nUser    mean     649.53 ( 0.00%)   650.44 (-0.14%)\nSystem  mean      54.75 ( 0.00%)    54.18 ( 1.05%)\nCPU     mean     187.75 ( 0.00%)   187.25 ( 0.27%)\n\nKernBench X86-64\nElapsed mean      94.45 ( 0.00%)    94.01 ( 0.47%)\nUser    mean     323.27 ( 0.00%)   322.66 ( 0.19%)\nSystem  mean      36.71 ( 0.00%)    36.50 ( 0.57%)\nCPU     mean     380.75 ( 0.00%)   381.75 (-0.26%)\n\nKernBench PPC64\nElapsed mean     173.45 ( 0.00%)   173.74 (-0.17%)\nUser    mean     587.99 ( 0.00%)   587.95 ( 0.01%)\nSystem  mean      60.60 ( 0.00%)    60.57 ( 0.05%)\nCPU     mean     373.50 ( 0.00%)   372.75 ( 0.20%)\n\nNothing notable for kernbench.\n\nNetPerf UDP X86\n      64    42.68 ( 0.00%)     42.77 ( 0.21%)\n     128    85.62 ( 0.00%)     85.32 (-0.35%)\n     256   170.01 ( 0.00%)    168.76 (-0.74%)\n    1024   655.68 ( 0.00%)    652.33 (-0.51%)\n    2048  1262.39 ( 0.00%)   1248.61 (-1.10%)\n    3312  1958.41 ( 0.00%)   1944.61 (-0.71%)\n    4096  2345.63 ( 0.00%)   2318.83 (-1.16%)\n    8192  4132.90 ( 0.00%)   4089.50 (-1.06%)\n   16384  6770.88 ( 0.00%)   6642.05 (-1.94%)*\n\nNetPerf UDP X86-64\n      64   148.82 ( 0.00%)    154.92 ( 3.94%)\n     128   298.96 ( 0.00%)    312.95 ( 4.47%)\n     256   583.67 ( 0.00%)    626.39 ( 6.82%)\n    1024  2293.18 ( 0.00%)   2371.10 ( 3.29%)\n    2048  4274.16 ( 0.00%)   4396.83 ( 2.79%)\n    3312  6356.94 ( 0.00%)   6571.35 ( 3.26%)\n    4096  7422.68 ( 0.00%)   7635.42 ( 2.79%)*\n    8192 12114.81 ( 0.00%)* 12346.88 ( 1.88%)\n   16384 17022.28 ( 0.00%)* 17033.19 ( 0.06%)*\n             1.64%             2.73%\n\nNetPerf UDP PPC64\n      64    49.98 ( 0.00%)     50.25 ( 0.54%)\n     128    98.66 ( 0.00%)    100.95 ( 2.27%)\n     256   197.33 ( 0.00%)    191.03 (-3.30%)\n    1024   761.98 ( 0.00%)    785.07 ( 2.94%)\n    2048  1493.50 ( 0.00%)   1510.85 ( 1.15%)\n    3312  2303.95 ( 0.00%)   2271.72 (-1.42%)\n    4096  2774.56 ( 0.00%)   2773.06 (-0.05%)\n    8192  4918.31 ( 0.00%)   4793.59 (-2.60%)\n   16384  7497.98 ( 0.00%)   7749.52 ( 3.25%)\n\nThe tests are run to have confidence limits within 1%.  Results marked\nwith a * were not confident although in this case, it\u0027s only outside by\nsmall amounts.  Even with some results that were not confident, the\nnetperf UDP results were generally positive.\n\nNetPerf TCP X86\n      64   652.25 ( 0.00%)*   648.12 (-0.64%)*\n            23.80%            22.82%\n     128  1229.98 ( 0.00%)*  1220.56 (-0.77%)*\n            21.03%            18.90%\n     256  2105.88 ( 0.00%)   1872.03 (-12.49%)*\n             1.00%            16.46%\n    1024  3476.46 ( 0.00%)*  3548.28 ( 2.02%)*\n            13.37%            11.39%\n    2048  4023.44 ( 0.00%)*  4231.45 ( 4.92%)*\n             9.76%            12.48%\n    3312  4348.88 ( 0.00%)*  4396.96 ( 1.09%)*\n             6.49%             8.75%\n    4096  4726.56 ( 0.00%)*  4877.71 ( 3.10%)*\n             9.85%             8.50%\n    8192  4732.28 ( 0.00%)*  5777.77 (18.10%)*\n             9.13%            13.04%\n   16384  5543.05 ( 0.00%)*  5906.24 ( 6.15%)*\n             7.73%             8.68%\n\nNETPERF TCP X86-64\n            netperf-tcp-vanilla-netperf       netperf-tcp\n                   tcp-vanilla     pgalloc-delay\n      64  1895.87 ( 0.00%)*  1775.07 (-6.81%)*\n             5.79%             4.78%\n     128  3571.03 ( 0.00%)*  3342.20 (-6.85%)*\n             3.68%             6.06%\n     256  5097.21 ( 0.00%)*  4859.43 (-4.89%)*\n             3.02%             2.10%\n    1024  8919.10 ( 0.00%)*  8892.49 (-0.30%)*\n             5.89%             6.55%\n    2048 10255.46 ( 0.00%)* 10449.39 ( 1.86%)*\n             7.08%             7.44%\n    3312 10839.90 ( 0.00%)* 10740.15 (-0.93%)*\n             6.87%             7.33%\n    4096 10814.84 ( 0.00%)* 10766.97 (-0.44%)*\n             6.86%             8.18%\n    8192 11606.89 ( 0.00%)* 11189.28 (-3.73%)*\n             7.49%             5.55%\n   16384 12554.88 ( 0.00%)* 12361.22 (-1.57%)*\n             7.36%             6.49%\n\nNETPERF TCP PPC64\n            netperf-tcp-vanilla-netperf       netperf-tcp\n                   tcp-vanilla     pgalloc-delay\n      64   594.17 ( 0.00%)    596.04 ( 0.31%)*\n             1.00%             2.29%\n     128  1064.87 ( 0.00%)*  1074.77 ( 0.92%)*\n             1.30%             1.40%\n     256  1852.46 ( 0.00%)*  1856.95 ( 0.24%)\n             1.25%             1.00%\n    1024  3839.46 ( 0.00%)*  3813.05 (-0.69%)\n             1.02%             1.00%\n    2048  4885.04 ( 0.00%)*  4881.97 (-0.06%)*\n             1.15%             1.04%\n    3312  5506.90 ( 0.00%)   5459.72 (-0.86%)\n    4096  6449.19 ( 0.00%)   6345.46 (-1.63%)\n    8192  7501.17 ( 0.00%)   7508.79 ( 0.10%)\n   16384  9618.65 ( 0.00%)   9490.10 (-1.35%)\n\nThere was a distinct lack of confidence in the X86* figures so I included\nwhat the devation was where the results were not confident.  Many of the\nresults, whether gains or losses were within the standard deviation so no\nsolid conclusion can be reached on performance impact.  Looking at the\nfigures, only the X86-64 ones look suspicious with a few losses that were\noutside the noise.  However, the results were so unstable that without\nknowing why they vary so much, a solid conclusion cannot be reached.\n\nSYSBENCH X86\n              sysbench-vanilla     pgalloc-delay\n           1  7722.85 ( 0.00%)  7756.79 ( 0.44%)\n           2 14901.11 ( 0.00%) 13683.44 (-8.90%)\n           3 15171.71 ( 0.00%) 14888.25 (-1.90%)\n           4 14966.98 ( 0.00%) 15029.67 ( 0.42%)\n           5 14370.47 ( 0.00%) 14865.00 ( 3.33%)\n           6 14870.33 ( 0.00%) 14845.57 (-0.17%)\n           7 14429.45 ( 0.00%) 14520.85 ( 0.63%)\n           8 14354.35 ( 0.00%) 14362.31 ( 0.06%)\n\nSYSBENCH X86-64\n           1 17448.70 ( 0.00%) 17484.41 ( 0.20%)\n           2 34276.39 ( 0.00%) 34251.00 (-0.07%)\n           3 50805.25 ( 0.00%) 50854.80 ( 0.10%)\n           4 66667.10 ( 0.00%) 66174.69 (-0.74%)\n           5 66003.91 ( 0.00%) 65685.25 (-0.49%)\n           6 64981.90 ( 0.00%) 65125.60 ( 0.22%)\n           7 64933.16 ( 0.00%) 64379.23 (-0.86%)\n           8 63353.30 ( 0.00%) 63281.22 (-0.11%)\n           9 63511.84 ( 0.00%) 63570.37 ( 0.09%)\n          10 62708.27 ( 0.00%) 63166.25 ( 0.73%)\n          11 62092.81 ( 0.00%) 61787.75 (-0.49%)\n          12 61330.11 ( 0.00%) 61036.34 (-0.48%)\n          13 61438.37 ( 0.00%) 61994.47 ( 0.90%)\n          14 62304.48 ( 0.00%) 62064.90 (-0.39%)\n          15 63296.48 ( 0.00%) 62875.16 (-0.67%)\n          16 63951.76 ( 0.00%) 63769.09 (-0.29%)\n\nSYSBENCH PPC64\n                             -sysbench-pgalloc-delay-sysbench\n              sysbench-vanilla     pgalloc-delay\n           1  7645.08 ( 0.00%)  7467.43 (-2.38%)\n           2 14856.67 ( 0.00%) 14558.73 (-2.05%)\n           3 21952.31 ( 0.00%) 21683.64 (-1.24%)\n           4 27946.09 ( 0.00%) 28623.29 ( 2.37%)\n           5 28045.11 ( 0.00%) 28143.69 ( 0.35%)\n           6 27477.10 ( 0.00%) 27337.45 (-0.51%)\n           7 26489.17 ( 0.00%) 26590.06 ( 0.38%)\n           8 26642.91 ( 0.00%) 25274.33 (-5.41%)\n           9 25137.27 ( 0.00%) 24810.06 (-1.32%)\n          10 24451.99 ( 0.00%) 24275.85 (-0.73%)\n          11 23262.20 ( 0.00%) 23674.88 ( 1.74%)\n          12 24234.81 ( 0.00%) 23640.89 (-2.51%)\n          13 24577.75 ( 0.00%) 24433.50 (-0.59%)\n          14 25640.19 ( 0.00%) 25116.52 (-2.08%)\n          15 26188.84 ( 0.00%) 26181.36 (-0.03%)\n          16 26782.37 ( 0.00%) 26255.99 (-2.00%)\n\nAgain, there is little to conclude here.  While there are a few losses,\nthe results vary by +/- 8% in some cases.  They are the results of most\nconcern as there are some large losses but it\u0027s also within the variance\ntypically seen between kernel releases.\n\nThe STREAM results varied so little and are so verbose that I didn\u0027t\ninclude them here.\n\nThe final test stressed how many huge pages can be allocated.  The\nabsolute number of huge pages allocated are the same with or without the\npage.  However, the \"unusability free space index\" which is a measure of\nexternal fragmentation was slightly lower (lower is better) throughout the\nlifetime of the system.  I also measured the latency of how long it took\nto successfully allocate a huge page.  The latency was slightly lower and\non X86 and PPC64, more huge pages were allocated almost immediately from\nthe free lists.  The improvement is slight but there.\n\n[mel@csn.ul.ie: Tested, reworked for less branches]\n[czoccolo@gmail.com: fix oops by checking pfn_valid_within()]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Corrado Zoccolo \u003cczoccolo@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": "88393161210493e317ae391696ee8ef463cb3c23",
      "tree": "6ec81a50d0e8174b415d83948b48cbabd7e54ddb",
      "parents": [
        "932fb06b0898f5883200f1da2e00075f0d70ba9c"
      ],
      "author": {
        "name": "Thomas Weber",
        "email": "swirl@gmx.li",
        "time": "Tue Mar 16 11:47:56 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Mar 16 11:47:56 2010 +0100"
      },
      "message": "Fix typos in comments\n\n[Ss]ytem \u003d\u003e [Ss]ystem\nudpate \u003d\u003e update\nparamters \u003d\u003e parameters\norginal \u003d\u003e original\n\nSigned-off-by: Thomas Weber \u003cswirl@gmx.li\u003e\nAcked-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "718a38211bf4375c0a1efad3afbc5dbaef5d33f9",
      "tree": "ade6815c619705f0342f98cc8bb39fa3309c81a6",
      "parents": [
        "9b3a6549b2602ca30f58715a0071e29f9898cae9"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Mar 10 15:20:43 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 12 15:52:28 2010 -0800"
      },
      "message": "mm: introduce dump_page() and print symbolic flag names\n\n- introduce dump_page() to print the page info for debugging some error\n  condition.\n\n- convert three mm users: bad_page(), print_bad_pte() and memory offline\n  failure.\n\n- print an extra field: the symbolic names of page-\u003eflags\n\nExample dump_page() output:\n\n[  157.521694] page:ffffea0000a7cba8 count:2 mapcount:1 mapping:ffff88001c901791 index:0x147\n[  157.525570] page flags: 0x100000000100068(uptodate|lru|active|swapbacked)\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alex Chiang \u003cachiang@hp.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Mel Gorman \u003cmel@linux.vnet.ibm.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: 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": "2d30a1f6315b8940537e8e98882c6038fbac9ba5",
      "tree": "11936ee1bdab8b01503c3e71b2868a8139c9d00a",
      "parents": [
        "53bddb4e9f3f53df02a783751984ddeade71b085"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Mar 10 15:20:40 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 12 15:52:28 2010 -0800"
      },
      "message": "mm: do not iterate over NR_CPUS in __zone_pcp_update()\n\n__zone_pcp_update() iterates over NR_CPUS instead of limiting the access\nto the possible cpus.  This might result in access to uninitialized areas\nas the per cpu allocator only populates the per cpu memory for possible\ncpus.\n\nThis problem was created as a result of the dynamic allocation of pagesets\nfrom percpu memory that went in during the merge window - commit\n99dcc3e5a94ed491fbef402831d8c0bbb267f995 (\"this_cpu: Page allocator\nconversion\").\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-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": "72f0ba0252e7177965255ed2c663be126b6b5f91",
      "tree": "2da83e883742ef4bf2d32b53805869f0ea7b3ac2",
      "parents": [
        "452aa6999e6703ffbddd7f6ea124d3968915f3e3"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Fri Mar 05 13:42:14 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:26 2010 -0800"
      },
      "message": "mm: suppress pfn range output for zones without pages\n\nfree_area_init_nodes() emits pfn ranges for all zones on the system.\nThere may be no pages on a higher zone, however, due to memory limitations\nor the use of the mem\u003d kernel parameter.  For example:\n\nZone PFN ranges:\n  DMA      0x00000001 -\u003e 0x00001000\n  DMA32    0x00001000 -\u003e 0x00100000\n  Normal   0x00100000 -\u003e 0x00100000\n\nThe implementation copies the previous zone\u0027s highest pfn, if any, as the\nnext zone\u0027s lowest pfn.  If its highest pfn is then greater than the\namount of addressable memory, the upper memory limit is used instead.\nThus, both the lowest and highest possible pfn for higher zones without\nmemory may be the same.\n\nThe pfn range for zones without memory is now shown as \"empty\" instead.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "452aa6999e6703ffbddd7f6ea124d3968915f3e3",
      "tree": "48e375fdb60920675f68b444b462903ad8bb6940",
      "parents": [
        "ad2bd7e0e9647cd48593a6b3a2be07dc2c2d28ed"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Mar 05 13:42:13 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:26 2010 -0800"
      },
      "message": "mm/pm: force GFP_NOIO during suspend/hibernation and resume\n\nThere are quite a few GFP_KERNEL memory allocations made during\nsuspend/hibernation and resume that may cause the system to hang, because\nthe I/O operations they depend on cannot be completed due to the\nunderlying devices being suspended.\n\nAvoid this problem by clearing the __GFP_IO and __GFP_FS bits in\ngfp_allowed_mask before suspend/hibernation and restoring the original\nvalues of these bits in gfp_allowed_mask durig the subsequent resume.\n\n[akpm@linux-foundation.org: fix CONFIG_PM\u003dn linkage]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nReported-by: Maxim Levitsky \u003cmaximlevitsky@gmail.com\u003e\nCc: Sebastian Ott \u003csebott@linux.vnet.ibm.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: 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": "93e4a89a8c987189b168a530a331ef6d0fcf07a7",
      "tree": "deb08017c0e4874539549d3ea9bf2d7b447a43be",
      "parents": [
        "fc91668eaf9e7ba61e867fc2218b7e9fb67faa4f"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Fri Mar 05 13:41:55 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:25 2010 -0800"
      },
      "message": "mm: restore zone-\u003eall_unreclaimable to independence word\n\ncommit e815af95 (\"change all_unreclaimable zone member to flags\") changed\nall_unreclaimable member to bit flag.  But it had an undesireble side\neffect.  free_one_page() is one of most hot path in linux kernel and\nincreasing atomic ops in it can reduce kernel performance a bit.\n\nThus, this patch revert such commit partially. at least\nall_unreclaimable shouldn\u0027t share memory word with other zone flags.\n\n[akpm@linux-foundation.org: fix patch interaction]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Huang Shijie \u003cshijie8@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": "fc91668eaf9e7ba61e867fc2218b7e9fb67faa4f",
      "tree": "08d443d76255e8d60ae6ba07d52cdc295172ded8",
      "parents": [
        "c475dab63ae798d81fb597a6a1859986b296d9d0"
      ],
      "author": {
        "name": "Li Hong",
        "email": "lihong.hi@gmail.com",
        "time": "Fri Mar 05 13:41:54 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:25 2010 -0800"
      },
      "message": "mm: remove free_hot_page()\n\nfree_hot_page() is just a wrapper around free_hot_cold_page() with\nparameter \u0027cold \u003d 0\u0027.  After adding a clear comment for\nfree_hot_cold_page(), it is reasonable to remove a level of call.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Li Hong \u003clihong.hi@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Li Ming Chun \u003cmacli@brc.ubc.ca\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Americo Wang \u003cxiyou.wangcong@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": "c475dab63ae798d81fb597a6a1859986b296d9d0",
      "tree": "f2c18302f0fa261b0e82b4bf91bce48fe96209fb",
      "parents": [
        "f650316c8b80fe61a31b8b575405b37cbf170459"
      ],
      "author": {
        "name": "Li Hong",
        "email": "lihong.hi@gmail.com",
        "time": "Fri Mar 05 13:41:53 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:24 2010 -0800"
      },
      "message": "mm/page_alloc.c: adjust a call site to trace_mm_page_free_direct\n\nMove a call of trace_mm_page_free_direct() from free_hot_page() to\nfree_hot_cold_page().  It is clearer and close to kmemcheck_free_shadow(),\nas it is done in function __free_pages_ok().\n\nSigned-off-by: Li Hong \u003clihong.hi@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Li Ming Chun \u003cmacli@brc.ubc.ca\u003e\nCc: 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": "f650316c8b80fe61a31b8b575405b37cbf170459",
      "tree": "6526cb3de41384eeea81e18b640396138371fbb4",
      "parents": [
        "76ca542d880ebe59a7a03c1597e73e1ded271857"
      ],
      "author": {
        "name": "Li Hong",
        "email": "lihong.hi@gmail.com",
        "time": "Fri Mar 05 13:41:52 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:24 2010 -0800"
      },
      "message": "mm/page_alloc.c: remove duplicate call to trace_mm_page_free_direct\n\ntrace_mm_page_free_direct() is called in function __free_pages().  But it\nis called again in free_hot_page() if order \u003d\u003d 0 and produce duplicate\nrecords in trace file for mm_page_free_direct event.  As below:\n\nK-PID    CPU#    TIMESTAMP  FUNCTION\n  gnome-terminal-1567  [000]  4415.246466: mm_page_free_direct: page\u003dffffea0003db9f40 pfn\u003d1155800 order\u003d0\n  gnome-terminal-1567  [000]  4415.246468: mm_page_free_direct: page\u003dffffea0003db9f40 pfn\u003d1155800 order\u003d0\n  gnome-terminal-1567  [000]  4415.246506: mm_page_alloc: page\u003dffffea0003db9f40 pfn\u003d1155800 order\u003d0 migratetype\u003d0 gfp_flags\u003dGFP_KERNEL\n  gnome-terminal-1567  [000]  4415.255557: mm_page_free_direct: page\u003dffffea0003db9f40 pfn\u003d1155800 order\u003d0\n  gnome-terminal-1567  [000]  4415.255557: mm_page_free_direct: page\u003dffffea0003db9f40 pfn\u003d1155800 order\u003d0\n\nThis patch removes the first call and adds a call to\ntrace_mm_page_free_direct() in __free_pages_ok().\n\nSigned-off-by: Li Hong \u003clihong.hi@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Li Ming Chun \u003cmacli@brc.ubc.ca\u003e\nCc: 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": "a626b46e17d0762d664ce471d40bc506b6e721ab",
      "tree": "445f6ac655ea9247d2e27529f23ba02d0991fec0",
      "parents": [
        "c1dcb4bb1e3e16e9baee578d9bb040e5fba1063e",
        "dce46a04d55d6358d2d4ab44a4946a19f9425fe2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 08:15:05 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 08:15:05 2010 -0800"
      },
      "message": "Merge branch \u0027x86-bootmem-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027x86-bootmem-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (30 commits)\n  early_res: Need to save the allocation name in drop_range_partial()\n  sparsemem: Fix compilation on PowerPC\n  early_res: Add free_early_partial()\n  x86: Fix non-bootmem compilation on PowerPC\n  core: Move early_res from arch/x86 to kernel/\n  x86: Add find_fw_memmap_area\n  Move round_up/down to kernel.h\n  x86: Make 32bit support NO_BOOTMEM\n  early_res: Enhance check_and_double_early_res\n  x86: Move back find_e820_area to e820.c\n  x86: Add find_early_area_size\n  x86: Separate early_res related code from e820.c\n  x86: Move bios page reserve early to head32/64.c\n  sparsemem: Put mem map for one node together.\n  sparsemem: Put usemap for one node together\n  x86: Make 64 bit use early_res instead of bootmem before slab\n  x86: Only call dma32_reserve_bootmem 64bit !CONFIG_NUMA\n  x86: Make early_node_mem get mem \u003e 4 GB if possible\n  x86: Dynamically increase early_res array size\n  x86: Introduce max_early_res and early_res_count\n  ...\n"
    },
    {
      "commit": "2ee78f7b1d8ada2615ecbcd9fea70580008bd6ce",
      "tree": "4fa5e1df3bbf771fc57714272f7a6941aa3ed3a2",
      "parents": [
        "580e0ad21d6d6f932461d24b47041e3dd499c23f"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Wed Feb 17 11:29:49 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 22 09:16:40 2010 +0100"
      },
      "message": "x86: Fix non-bootmem compilation on PowerPC\n\nThese build errors on some non-x86 platforms (PowerPC for example):\n\n mm/page_alloc.c: In function \u0027__alloc_memory_core_early\u0027:\n   mm/page_alloc.c:3468: error: implicit declaration of function \u0027find_early_area\u0027\n   mm/page_alloc.c:3483: error: implicit declaration of function \u0027reserve_early_without_check\u0027\n\nThe function is only needed on CONFIG_NO_BOOTMEM.\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Johannes Weiner \u003channes@saeurebad.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nLKML-Reference: \u003c4B747239.4070907@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "08677214e318297f228237be0042aac754f48f1d",
      "tree": "6d03424f7e287fcf66136b44512328afb1aeee49",
      "parents": [
        "c252a5bb1f57afb1e336d68085217727ca7b2134"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Wed Feb 10 01:20:20 2010 -0800"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Fri Feb 12 09:41:59 2010 -0800"
      },
      "message": "x86: Make 64 bit use early_res instead of bootmem before slab\n\nFinally we can use early_res to replace bootmem for x86_64 now.\n\nStill can use CONFIG_NO_BOOTMEM to enable it or not.\n\n-v2: fix 32bit compiling about MAX_DMA32_PFN\n-v3: folded bug fix from LKML message below\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c4B747239.4070907@kernel.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "ab386128f20c44c458a90039ab1bdc265ac474c9",
      "tree": "2ad188744922b1bb951fd10ff50dc04c83acce22",
      "parents": [
        "dbfc196a3cc1a2514ad0737a82f764de23bd65e6",
        "ab658321f32770b903a4426e2a6fae0392757755"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 02 14:38:15 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 02 14:38:15 2010 +0900"
      },
      "message": "Merge branch \u0027master\u0027 into percpu\n"
    },
    {
      "commit": "a7016235a61d520e6806f38129001d935c4b6661",
      "tree": "cfd42cc6f0c825c8d9033e91d6d971ea549520e3",
      "parents": [
        "67f15b06c1a7e5417b7042b515ca2695de30beda"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Fri Jan 29 17:46:34 2010 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 29 10:28:09 2010 -0800"
      },
      "message": "mm: fix migratetype bug which slowed swapping\n\nAfter memory pressure has forced it to dip into the reserves, 2.6.32\u0027s\n5f8dcc21211a3d4e3a7a5ca366b469fb88117f61 \"page-allocator: split per-cpu\nlist into one-list-per-migrate-type\" has been returning MIGRATE_RESERVE\npages to the MIGRATE_MOVABLE free_list: in some sense depleting reserves.\n\nFix that in the most straightforward way (which, considering the overheads\nof alternative approaches, is Mel\u0027s preference): the right migratetype is\nalready in page_private(page), but free_pcppages_bulk() wasn\u0027t using it.\n\nHow did this bug show up?  As a 20% slowdown in my tmpfs loop kbuild\nswapping tests, on PowerMac G5 with SLUB allocator.  Bisecting to that\ncommit was easy, but explaining the magnitude of the slowdown not easy.\n\nThe same effect appears, but much less markedly, with SLAB, and even\nless markedly on other machines (the PowerMac divides into fewer zones\nthan x86, I think that may be a factor).  We guess that lumpy reclaim\nof short-lived high-order pages is implicated in some way, and probably\nthis bug has been tickling a poor decision somewhere in page reclaim.\n\nBut instrumentation hasn\u0027t told me much, I\u0027ve run out of time and\nimagination to determine exactly what\u0027s going on, and shouldn\u0027t hold up\nthe fix any longer: it\u0027s valid, and might even fix other misbehaviours.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ccf80eb15ccaca4d3f1ab5162b9ded5eecd9971",
      "tree": "23dad05636e88a743755bfd3e7a5dad4ef5e49e0",
      "parents": [
        "1f0b8b95543118f97197a978560438c1ce88cd00"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Fri Jan 15 17:01:18 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 16 16:53:55 2010 -0800"
      },
      "message": "page allocator: update NR_FREE_PAGES only when necessary\n\ncommit f2260e6b (page allocator: update NR_FREE_PAGES only as necessary)\nmade one minor regression.  if __rmqueue() was failed, NR_FREE_PAGES stat\ngo wrong.  this patch fixes it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReported-by: Huang Shijie \u003cshijie8@gmail.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.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": "d2dbe08ddceb4ba2b274abb84326d7e69d454e5c",
      "tree": "7b363c03dc6441b3fe6ebdcacd892cbd09b04f29",
      "parents": [
        "5dab600e6a153ceb64832f608069e6c08185411a"
      ],
      "author": {
        "name": "Kazuhisa Ichikawa",
        "email": "ki@epsilou.com",
        "time": "Fri Jan 15 17:01:20 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 16 12:15:38 2010 -0800"
      },
      "message": "mm/page_alloc: fix the range check for backward merging\n\nThe current check for \u0027backward merging\u0027 within add_active_range() does\nnot seem correct.  start_pfn must be compared against\nearly_node_map[i].start_pfn (and NOT against .end_pfn) to find out whether\nthe new region is backward-mergeable with the existing range.\n\nSigned-off-by: Kazuhisa Ichikawa \u003cki@epsilou.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "99dcc3e5a94ed491fbef402831d8c0bbb267f995",
      "tree": "dd4d2b9e10ab0d4502e4b2a22dfc0a02a3300d7e",
      "parents": [
        "5917dae83cb02dfe74c9167b79e86e6d65183fa3"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux-foundation.org",
        "time": "Tue Jan 05 15:34:51 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 05 15:34:51 2010 +0900"
      },
      "message": "this_cpu: Page allocator conversion\n\nUse the per cpu allocator functionality to avoid per cpu arrays in struct zone.\n\nThis drastically reduces the size of struct zone for systems with large\namounts of processors and allows placement of critical variables of struct\nzone in one cacheline even on very large systems.\n\nAnother effect is that the pagesets of one processor are placed near one\nanother. If multiple pagesets from different zones fit into one cacheline\nthen additional cacheline fetches can be avoided on the hot paths when\nallocating memory from multiple zones.\n\nBootstrap becomes simpler if we use the same scheme for UP, SMP, NUMA. #ifdefs\nare reduced and we can drop the zone_pcp macro.\n\nHotplug handling is also simplified since cpu alloc can bring up and\nshut down cpu areas for a specific cpu as a whole. So there is no need to\nallocate or free individual pagesets.\n\nV7-V8:\n- Explain chicken egg dilemmna with percpu allocator.\n\nV4-V5:\n- Fix up cases where per_cpu_ptr is called before irq disable\n- Integrate the bootstrap logic that was separate before.\n\ntj: Build failure in pageset_cpuup_callback() due to missing ret\n    variable fixed.\n\nReviewed-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "443c6f145de813518c36ac6b6e4e08d9445337e7",
      "tree": "d0d635c07185b06ddcd2a82f6b2c90c188366431",
      "parents": [
        "4440095c8268c1a5e11577097d2be429cec036ca"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 23 21:00:47 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 23 21:01:16 2009 +0100"
      },
      "message": "SYSCTL: Add a mutex to the page_alloc zone order sysctl\n\nThe zone list code clearly cannot tolerate concurrent writers (I couldn\u0027t\nfind any locks for that), so simply add a global mutex. No need for RCU\nin this case.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "dd508ae2dbff0cfc7401eb6e278339fc56bc5033",
      "tree": "daa9f88a4e2e65e86b351ffa2d52dcc07e753c1e",
      "parents": [
        "7801edb0b8b66e83c13623b483bc2e846c007c9d",
        "95cd34b42b43c0ed5a89a764e023189bfe7b1530"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 22 14:18:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 22 14:18:13 2009 -0800"
      },
      "message": "Merge branch \u0027merge\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc\n\n* \u0027merge\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (36 commits)\n  powerpc/gc/wii: Remove get_irq_desc()\n  powerpc/gc/wii: hlwd-pic: convert irq_desc.lock to raw_spinlock\n  powerpc/gamecube/wii: Fix off-by-one error in ugecon/usbgecko_udbg\n  powerpc/mpic: Fix problem that affinity is not updated\n  powerpc/mm: Fix stupid bug in subpge protection handling\n  powerpc/iseries: use DECLARE_COMPLETION_ONSTACK for non-constant completion\n  powerpc: Fix MSI support on U4 bridge PCIe slot\n  powerpc: Handle VSX alignment faults correctly in little-endian mode\n  powerpc/mm: Fix typo of cpumask_clear_cpu()\n  powerpc/mm: Fix hash_utils_64.c compile errors with DEBUG enabled.\n  powerpc: Convert BUG() to use unreachable()\n  powerpc/pseries: Make declarations of cpu_hotplug_driver_lock() ANSI compatible.\n  powerpc/pseries: Don\u0027t panic when H_PROD fails during cpu-online.\n  powerpc/mm: Fix a WARN_ON() with CONFIG_DEBUG_PAGEALLOC and CONFIG_DEBUG_VM\n  powerpc/defconfigs: Set HZ\u003d100 on pseries and ppc64 defconfigs\n  powerpc/defconfigs: Disable token ring in powerpc defconfigs\n  powerpc/defconfigs: Reduce 64bit vmlinux by making acenic and cramfs modules\n  powerpc/pseries: Select XICS and PCI_MSI PSERIES\n  powerpc/85xx: Wrong variable returned on error\n  powerpc/iseries: Convert to proc_fops\n  ...\n"
    },
    {
      "commit": "3981e152864fcc1dbbb564e1f4c0ae11a09639d2",
      "tree": "76c767a9b25e294c3cc8edd9870304b845cabdd9",
      "parents": [
        "aac3d39693529ca538e37ebdb6ed5d6432a697c7",
        "18374d89e5fe96772102f44f535efb1198d9be08"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 09:48:14 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 09:48:14 2009 -0800"
      },
      "message": "Merge branch \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, irq: Allow 0xff for /proc/irq/[n]/smp_affinity on an 8-cpu system\n  Makefile: Unexport LC_ALL instead of clearing it\n  x86: Fix objdump version check in arch/x86/tools/chkobjdump.awk\n  x86: Reenable TSC sync check at boot, even with NONSTOP_TSC\n  x86: Don\u0027t use POSIX character classes in gen-insn-attr-x86.awk\n  Makefile: set LC_CTYPE, LC_COLLATE, LC_NUMERIC to C\n  x86: Increase MAX_EARLY_RES; insufficient on 32-bit NUMA\n  x86: Fix checking of SRAT when node 0 ram is not from 0\n  x86, cpuid: Add \"volatile\" to asm in native_cpuid()\n  x86, msr: msrs_alloc/free for CONFIG_SMP\u003dn\n  x86, amd: Get multi-node CPU info from NodeId MSR instead of PCI config space\n  x86: Add IA32_TSC_AUX MSR and use it\n  x86, msr/cpuid: Register enough minors for the MSR and CPUID drivers\n  initramfs: add missing decompressor error check\n  bzip2: Add missing checks for malloc returning NULL\n  bzip2/lzma/gzip: pre-boot malloc doesn\u0027t return NULL on failure\n"
    },
    {
      "commit": "925cc71e512a29e2594bcc17dc58d0a0e9c4d524",
      "tree": "7240ccf6ba713cc180d388a28f00c1a43293bc14",
      "parents": [
        "55639353a0035052d9ea6cfe4dde0ac7fcbb2c9f"
      ],
      "author": {
        "name": "Robert Jennings",
        "email": "rcj@linux.vnet.ibm.com",
        "time": "Thu Dec 17 14:44:38 2009 +0000"
      },
      "committer": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Fri Dec 18 14:53:36 2009 +1100"
      },
      "message": "mm: Add notifier in pageblock isolation for balloon drivers\n\nMemory balloon drivers can allocate a large amount of memory which is not\nmovable but could be freed to accomodate memory hotplug remove.\n\nPrior to calling the memory hotplug notifier chain the memory in the\npageblock is isolated.  Currently, if the migrate type is not\nMIGRATE_MOVABLE the isolation will not proceed, causing the memory removal\nfor that page range to fail.\n\nRather than failing pageblock isolation if the migrateteype is not\nMIGRATE_MOVABLE, this patch checks if all of the pages in the pageblock,\nand not on the LRU, are owned by a registered balloon driver (or other\nentity) using a notifier chain.  If all of the non-movable pages are owned\nby a balloon, they can be freed later through the memory notifier chain\nand the range can still be isolated in set_migratetype_isolate().\n\nSigned-off-by: Robert Jennings \u003crcj@linux.vnet.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Brian King \u003cbrking@linux.vnet.ibm.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Gerald Schaefer \u003cgeralds@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\n"
    },
    {
      "commit": "329962503692b42d8088f31584e42d52db179d52",
      "tree": "fe8aa709fcbf6154e25c291ec569885a23e2eba1",
      "parents": [
        "45a94d7cd45ed991914011919e7d40eb6d2546d1"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Tue Dec 15 17:59:02 2009 -0800"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Wed Dec 16 16:43:37 2009 -0800"
      },
      "message": "x86: Fix checking of SRAT when node 0 ram is not from 0\n\nFound one system that boot from socket1 instead of socket0, SRAT get rejected...\n\n[    0.000000] SRAT: Node 1 PXM 0 0-a0000\n[    0.000000] SRAT: Node 1 PXM 0 100000-80000000\n[    0.000000] SRAT: Node 1 PXM 0 100000000-2080000000\n[    0.000000] SRAT: Node 0 PXM 1 2080000000-4080000000\n[    0.000000] SRAT: Node 2 PXM 2 4080000000-6080000000\n[    0.000000] SRAT: Node 3 PXM 3 6080000000-8080000000\n[    0.000000] SRAT: Node 4 PXM 4 8080000000-a080000000\n[    0.000000] SRAT: Node 5 PXM 5 a080000000-c080000000\n[    0.000000] SRAT: Node 6 PXM 6 c080000000-e080000000\n[    0.000000] SRAT: Node 7 PXM 7 e080000000-10080000000\n...\n[    0.000000] NUMA: Allocated memnodemap from 500000 - 701040\n[    0.000000] NUMA: Using 20 for the hash shift.\n[    0.000000] Adding active range (0, 0x2080000, 0x4080000) 0 entries of 3200 used\n[    0.000000] Adding active range (1, 0x0, 0x96) 1 entries of 3200 used\n[    0.000000] Adding active range (1, 0x100, 0x7f750) 2 entries of 3200 used\n[    0.000000] Adding active range (1, 0x100000, 0x2080000) 3 entries of 3200 used\n[    0.000000] Adding active range (2, 0x4080000, 0x6080000) 4 entries of 3200 used\n[    0.000000] Adding active range (3, 0x6080000, 0x8080000) 5 entries of 3200 used\n[    0.000000] Adding active range (4, 0x8080000, 0xa080000) 6 entries of 3200 used\n[    0.000000] Adding active range (5, 0xa080000, 0xc080000) 7 entries of 3200 used\n[    0.000000] Adding active range (6, 0xc080000, 0xe080000) 8 entries of 3200 used\n[    0.000000] Adding active range (7, 0xe080000, 0x10080000) 9 entries of 3200 used\n[    0.000000] SRAT: PXMs only cover 917504MB of your 1048566MB e820 RAM. Not used.\n[    0.000000] SRAT: SRAT not used.\n\nthe early_node_map is not sorted because node0 with non zero start come first.\n\nso try to sort it right away after all regions are registered.\n\nalso fixs refression by 8716273c (x86: Export srat physical topology)\n\n-v2: make it more solid to handle cross node case like node0 [0,4g), [8,12g) and node1 [4g, 8g), [12g, 16g)\n-v3: update comments.\n\nReported-and-tested-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c4B2579D2.3010201@kernel.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "d4220f987cf473c65a342ca69e3eb13dea919a49",
      "tree": "dbb004a9c805d6de3f6e3955398fee1084a29f16",
      "parents": [
        "61cf693159d6a968a7014e24905143f71ed8ddcf",
        "f2c03debdfb387fa2e35cac6382779072b8b9209"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 12:36:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 12:36:49 2009 -0800"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (34 commits)\n  HWPOISON: Remove stray phrase in a comment\n  HWPOISON: Try to allocate migration page on the same node\n  HWPOISON: Don\u0027t do early filtering if filter is disabled\n  HWPOISON: Add a madvise() injector for soft page offlining\n  HWPOISON: Add soft page offline support\n  HWPOISON: Undefine short-hand macros after use to avoid namespace conflict\n  HWPOISON: Use new shake_page in memory_failure\n  HWPOISON: Use correct name for MADV_HWPOISON in documentation\n  HWPOISON: mention HWPoison in Kconfig entry\n  HWPOISON: Use get_user_page_fast in hwpoison madvise\n  HWPOISON: add an interface to switch off/on all the page filters\n  HWPOISON: add memory cgroup filter\n  memcg: add accessor to mem_cgroup.css\n  memcg: rename and export try_get_mem_cgroup_from_page()\n  HWPOISON: add page flags filter\n  mm: export stable page flags\n  HWPOISON: limit hwpoison injector to known page types\n  HWPOISON: add fs/device filters\n  HWPOISON: return 0 to indicate success reliably\n  HWPOISON: make semantics of IGNORED/DELAYED clear\n  ...\n"
    },
    {
      "commit": "4365a5676fa3aa1d5ae6c90c22a0044f09ba584e",
      "tree": "5b9914ccbdcf2aa695473421e71f6299fbe78cef",
      "parents": [
        "3b4798cbc13dd8d1150aa6377f97f0e11450a67d"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hioryu@jp.fujitsu.com",
        "time": "Tue Dec 15 16:45:33 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:19:57 2009 -0800"
      },
      "message": "oom-kill: fix NUMA constraint check with nodemask\n\nFix node-oriented allocation handling in oom-kill.c I myself think of this\nas a bugfix not as an ehnancement.\n\nIn these days, things are changed as\n  - alloc_pages() eats nodemask as its arguments, __alloc_pages_nodemask().\n  - mempolicy don\u0027t maintain its own private zonelists.\n  (And cpuset doesn\u0027t use nodemask for __alloc_pages_nodemask())\n\nSo, current oom-killer\u0027s check function is wrong.\n\nThis patch does\n  - check nodemask, if nodemask \u0026\u0026 nodemask doesn\u0027t cover all\n    node_states[N_HIGH_MEMORY], this is CONSTRAINT_MEMORY_POLICY.\n  - Scan all zonelist under nodemask, if it hits cpuset\u0027s wall\n    this faiulre is from cpuset.\nAnd\n  - modifies the caller of out_of_memory not to call oom if __GFP_THISNODE.\n    This doesn\u0027t change \"current\" behavior. If callers use __GFP_THISNODE\n    it should handle \"page allocation failure\" by itself.\n\n  - handle __GFP_NOFAIL+__GFP_THISNODE path.\n    This is something like a FIXME but this gfpmask is not used now.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hioryu@jp.fujitsu.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8d22ba1b74aa9420b6032d856446564fb21f8090",
      "tree": "6c2e2d27e81d784faa0481500f1cecc613ff1167",
      "parents": [
        "95d01fc664b9476e0d18e3d745bb209a42a33588"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: detect free buddy pages explicitly\n\nMost free pages in the buddy system have no PG_buddy set.\nIntroduce is_free_buddy_page() for detecting them reliably.\n\nCC: Nick Piggin \u003cnpiggin@suse.de\u003e\nCC: Mel Gorman \u003cmel@linux.vnet.ibm.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "af8e3354b4bbd1ee5a3a55d11a5e1fe37e77f0ba",
      "tree": "8dc0ece80878d00409d4662c5fd1e28cd7fbbdd8",
      "parents": [
        "53f79acb6ecb648afd63e0f13deba167f1a934df"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:58:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:17 2009 -0800"
      },
      "message": "mm: CONFIG_MMU for PG_mlocked\n\nRemove three degrees of obfuscation, left over from when we had\nCONFIG_UNEVICTABLE_LRU.  MLOCK_PAGES is CONFIG_HAVE_MLOCKED_PAGE_BIT is\nCONFIG_HAVE_MLOCK is CONFIG_MMU.  rmap.o (and memory-failure.o) are only\nbuilt when CONFIG_MMU, so don\u0027t need such conditions at all.\n\nSomehow, I feel no compulsion to remove the CONFIG_HAVE_MLOCK* lines from\n169 defconfigs: leave those to evolve in due course.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Minchan Kim \u003cminchan.kim@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": "9d0ed60fe9cd1fbf57f755cd27a23ae9114d7210",
      "tree": "71ecabae46aa132545ca39dd0da62c483d69c20b",
      "parents": [
        "cc4a6851466039a8a688c843962a05689059ff3b"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Nov 11 14:26:17 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 12 07:25:56 2009 -0800"
      },
      "message": "page allocator: Do not allow interrupts to use ALLOC_HARDER\n\nCommit 341ce06f69abfafa31b9468410a13dbd60e2b237 (\"page allocator:\ncalculate the alloc_flags for allocation only once\") altered watermark\nlogic slightly by allowing rt_tasks that are handling an interrupt to set\nALLOC_HARDER.  This patch brings the watermark logic more in line with\n2.6.30.\n\nThis change results in a reduction of the number high-order GFP_ATOMIC\nallocation failures reported.  See\nhttp://www.gossamer-threads.com/lists/linux/kernel/1144153\n\n[rientjes@google.com: Spotted the problem]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.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": "cc4a6851466039a8a688c843962a05689059ff3b",
      "tree": "23e3f6c4797179d6bea91890f5784c1c0cb47aa9",
      "parents": [
        "b0c9065324b7c1242b97b27a1407da18471b9b23"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Nov 11 14:26:14 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 12 07:25:56 2009 -0800"
      },
      "message": "page allocator: always wake kswapd when restarting an allocation attempt after direct reclaim failed\n\nIf a direct reclaim makes no forward progress, it considers whether it\nshould go OOM or not.  Whether OOM is triggered or not, it may retry the\nallocation afterwards.  In times past, this would always wake kswapd as\nwell but currently, kswapd is not woken up after direct reclaim fails.\nFor order-0 allocations, this makes little difference but if there is a\nheavy mix of higher-order allocations that direct reclaim is failing for,\nit might mean that kswapd is not rewoken for higher orders as much as it\ndid previously.\n\nThis patch wakes up kswapd when an allocation is being retried after a\ndirect reclaim failure.  It would be expected that kswapd is already\nawake, but this has the effect of telling kswapd to reclaim at the higher\norder as well.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@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": "b76146ed1ae7d7acae1d51f9342e31d00c8d5a12",
      "tree": "ea8d8923070cb8fdf6eeb50ee9e21fd085b2ac73",
      "parents": [
        "5c36fe3d87b3f0c85894a49193c66096a3d6b26f"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Oct 26 16:49:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 29 07:39:27 2009 -0700"
      },
      "message": "revert \"mm: oom analysis: add buffer cache information to show_free_areas()\"\n\nRevert\n\n    commit 71de1ccbe1fb40203edd3beb473f8580d917d2ca\n    Author:     KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\n    AuthorDate: Mon Sep 21 17:01:31 2009 -0700\n    Commit:     Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n    CommitDate: Tue Sep 22 07:17:27 2009 -0700\n\n        mm: oom analysis: add buffer cache information to show_free_areas()\n\nshow_free_areas() is called during page allocation failures, and page\nallocation failures can occur in any calling context.\n\nBut nr_blockdev_pages() takes VFS locks which should not be taken from\nhard IRQ context (at least).  The result is lockdep warnings (and\ndeadlockability) during page allocation failures.\n\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@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": "db16826367fefcb0ddb93d76b66adc52eb4e6339",
      "tree": "626224c1eb1eb79c522714591f208b4fdbdcd9d4",
      "parents": [
        "cd6045138ed1bb5d8773e940d51c34318eef3ef2",
        "465fdd97cbe16ef8727221857e96ef62dd352017"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (21 commits)\n  HWPOISON: Enable error_remove_page on btrfs\n  HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs\n  HWPOISON: Add madvise() based injector for hardware poisoned pages v4\n  HWPOISON: Enable error_remove_page for NFS\n  HWPOISON: Enable .remove_error_page for migration aware file systems\n  HWPOISON: The high level memory error handler in the VM v7\n  HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process\n  HWPOISON: shmem: call set_page_dirty() with locked page\n  HWPOISON: Define a new error_remove_page address space op for async truncation\n  HWPOISON: Add invalidate_inode_page\n  HWPOISON: Refactor truncate to allow direct truncating of page v2\n  HWPOISON: check and isolate corrupted free pages v2\n  HWPOISON: Handle hardware poisoned pages in try_to_unmap\n  HWPOISON: Use bitmask/action code for try_to_unmap behaviour\n  HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2\n  HWPOISON: Add poison check to page fault handling\n  HWPOISON: Add basic support for poisoned pages in fault handler v3\n  HWPOISON: Add new SIGBUS error codes for hardware poison signals\n  HWPOISON: Add support for poison swap entries v2\n  HWPOISON: Export some rmap vma locking to outside world\n  ...\n"
    },
    {
      "commit": "8d65af789f3e2cf4cfbdbf71a0f7a61ebcd41d38",
      "tree": "121df3bfffc7853ac6d2c514ad514d4a748a0933",
      "parents": [
        "c0d0787b6d47d9f4d5e8bd321921104e854a9135"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Sep 23 15:57:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:04 2009 -0700"
      },
      "message": "sysctl: remove \"struct file *\" argument of -\u003eproc_handler\n\nIt\u0027s unused.\n\nIt isn\u0027t needed -- read or write flag is already passed and sysctl\nshouldn\u0027t care about the rest.\n\nIt _was_ used in two places at arch/frv for some reason.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "03f6462a3ae78f36eb1f0ee8b4d5ae2f7859c1d5",
      "tree": "bf19c5019705796e90ef592233aca5f09025a92f",
      "parents": [
        "62eede62dafb4a6633eae7ffbeb34c60dba5e7b1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:41 2009 -0700"
      },
      "message": "mm: move highest_memmap_pfn\n\nMove highest_memmap_pfn __read_mostly from page_alloc.c next to zero_pfn\n__read_mostly in memory.c: to help them share a cacheline, since they\u0027re\nvery often tested together in vm_normal_page().\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@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": "a6f9edd65beaef24836e8934c8912c1e974dd45c",
      "tree": "041c60ed559d3bc1f289d0040e75cfdd78f0acd0",
      "parents": [
        "5f8dcc21211a3d4e3a7a5ca366b469fb88117f61"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:03:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "page-allocator: maintain rolling count of pages to free from the PCP\n\nWhen round-robin freeing pages from the PCP lists, empty lists may be\nencountered.  In the event one of the lists has more pages than another,\nthere may be numerous checks for list_empty() which is undesirable.  This\npatch maintains a count of pages to free which is incremented when empty\nlists are encountered.  The intention is that more pages will then be\nfreed from fuller lists than the empty ones reducing the number of empty\nlist checks in the free path.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5f8dcc21211a3d4e3a7a5ca366b469fb88117f61",
      "tree": "4bbb1b55c7787462fe313c7c003e77823c032422",
      "parents": [
        "5d863b89688e5811cd9e5bd0082cb38abe03adf3"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:03:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "page-allocator: split per-cpu list into one-list-per-migrate-type\n\nThe following two patches remove searching in the page allocator fast-path\nby maintaining multiple free-lists in the per-cpu structure.  At the time\nthe search was introduced, increasing the per-cpu structures would waste a\nlot of memory as per-cpu structures were statically allocated at\ncompile-time.  This is no longer the case.\n\nThe patches are as follows. They are based on mmotm-2009-08-27.\n\nPatch 1 adds multiple lists to struct per_cpu_pages, one per\n\tmigratetype that can be stored on the PCP lists.\n\nPatch 2 notes that the pcpu drain path check empty lists multiple times. The\n\tpatch reduces the number of checks by maintaining a count of free\n\tlists encountered. Lists containing pages will then free multiple\n\tpages in batch\n\nThe patches were tested with kernbench, netperf udp/tcp, hackbench and\nsysbench.  The netperf tests were not bound to any CPU in particular and\nwere run such that the results should be 99% confidence that the reported\nresults are within 1% of the estimated mean.  sysbench was run with a\npostgres background and read-only tests.  Similar to netperf, it was run\nmultiple times so that it\u0027s 99% confidence results are within 1%.  The\npatches were tested on x86, x86-64 and ppc64 as\n\nx86:\tIntel Pentium D 3GHz with 8G RAM (no-brand machine)\n\tkernbench\t- No significant difference, variance well within noise\n\tnetperf-udp\t- 1.34% to 2.28% gain\n\tnetperf-tcp\t- 0.45% to 1.22% gain\n\thackbench\t- Small variances, very close to noise\n\tsysbench\t- Very small gains\n\nx86-64:\tAMD Phenom 9950 1.3GHz with 8G RAM (no-brand machine)\n\tkernbench\t- No significant difference, variance well within noise\n\tnetperf-udp\t- 1.83% to 10.42% gains\n\tnetperf-tcp\t- No conclusive until buffer \u003e\u003d PAGE_SIZE\n\t\t\t\t4096\t+15.83%\n\t\t\t\t8192\t+ 0.34% (not significant)\n\t\t\t\t16384\t+ 1%\n\thackbench\t- Small gains, very close to noise\n\tsysbench\t- 0.79% to 1.6% gain\n\nppc64:\tPPC970MP 2.5GHz with 10GB RAM (it\u0027s a terrasoft powerstation)\n\tkernbench\t- No significant difference, variance well within noise\n\tnetperf-udp\t- 2-3% gain for almost all buffer sizes tested\n\tnetperf-tcp\t- losses on small buffers, gains on larger buffers\n\t\t\t  possibly indicates some bad caching effect.\n\thackbench\t- No significant difference\n\tsysbench\t- 2-4% gain\n\nThis patch:\n\nCurrently the per-cpu page allocator searches the PCP list for pages of\nthe correct migrate-type to reduce the possibility of pages being\ninappropriate placed from a fragmentation perspective.  This search is\npotentially expensive in a fast-path and undesirable.  Splitting the\nper-cpu list into multiple lists increases the size of a per-cpu structure\nand this was potentially a major problem at the time the search was\nintroduced.  These problem has been mitigated as now only the necessary\nnumber of structures is allocated for the running system.\n\nThis patch replaces a list search in the per-cpu allocator with one list\nper migrate type.  The potential snag with this approach is when bulk\nfreeing pages.  We round-robin free pages based on migrate type which has\nlittle bearing on the cache hotness of the page and potentially checks\nempty lists repeatedly in the event the majority of PCP pages are of one\ntype.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f86296317434b21585e229f6c49a33cb9ebab4d3",
      "tree": "d4fb05d4aee1a8e373ec053e7316dc9847b2c417",
      "parents": [
        "1a8670a29b5277cbe601f74ab63d2c5211fb3005"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon Sep 21 17:03:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "mm: do batched scans for mem_cgroup\n\nFor mem_cgroup, shrink_zone() may call shrink_list() with nr_to_scan\u003d1, in\nwhich case shrink_list() _still_ calls isolate_pages() with the much\nlarger SWAP_CLUSTER_MAX.  It effectively scales up the inactive list scan\nrate by up to 32 times.\n\nFor example, with 16k inactive pages and DEF_PRIORITY\u003d12, (16k \u003e\u003e 12)\u003d4.\nSo when shrink_zone() expects to scan 4 pages in the active/inactive list,\nthe active list will be scanned 4 pages, while the inactive list will be\n(over) scanned SWAP_CLUSTER_MAX\u003d32 pages in effect.  And that could break\nthe balance between the two lists.\n\nIt can further impact the scan of anon active list, due to the anon\nactive/inactive ratio rebalance logic in balance_pgdat()/shrink_zone():\n\ninactive anon list over scanned \u003d\u003e inactive_anon_is_low() \u003d\u003d TRUE\n                                \u003d\u003e shrink_active_list()\n                                \u003d\u003e active anon list over scanned\n\nSo the end result may be\n\n- anon inactive  \u003d\u003e over scanned\n- anon active    \u003d\u003e over scanned (maybe not as much)\n- file inactive  \u003d\u003e over scanned\n- file active    \u003d\u003e under scanned (relatively)\n\nThe accesses to nr_saved_scan are not lock protected and so not 100%\naccurate, however we can tolerate small errors and the resulted small\nimbalanced scan rates between zones.\n\nCc: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@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": "2c85f51d222ccdd8c401d77a36b723a89156810d",
      "tree": "fb94c6ea243504043e434f0a7d26cfd4831b33a9",
      "parents": [
        "3c1596efe167322dae87f8390d36f91ce2d7f936"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Sep 21 17:03:07 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "mm: also use alloc_large_system_hash() for the PID hash table\n\nThis is being done by allowing boot time allocations to specify that they\nmay want a sub-page sized amount of memory.\n\nOverall this seems more consistent with the other hash table allocations,\nand allows making two supposedly mm-only variables really mm-only\n(nr_{kernel,all}_pages).\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.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": "78986a678f6ec3759a01976749f4437d8bf2d6c3",
      "tree": "ec3a4f4d3fe5a40f8809657341ad34a9fc8eb61c",
      "parents": [
        "ceddc3a52d783fabbf1ba623601419b9d6337194"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:03:02 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "page-allocator: limit the number of MIGRATE_RESERVE pageblocks per zone\n\nAfter anti-fragmentation was merged, a bug was reported whereby devices\nthat depended on high-order atomic allocations were failing.  The solution\nwas to preserve a property in the buddy allocator which tended to keep the\nminimum number of free pages in the zone at the lower physical addresses\nand contiguous.  To preserve this property, MIGRATE_RESERVE was introduced\nand a number of pageblocks at the start of a zone would be marked\n\"reserve\", the number of which depended on min_free_kbytes.\n\nAnti-fragmentation works by avoiding the mixing of page migratetypes\nwithin the same pageblock.  One way of helping this is to increase\nmin_free_kbytes because it becomes less like that it will be necessary to\nplace pages of of MIGRATE_RESERVE is unbounded, the free memory is kept\nthere in large contiguous blocks instead of helping anti-fragmentation as\nmuch as it should.  With the page-allocator tracepoint patches applied, it\nwas found during anti-fragmentation tests that the number of\nfragmentation-related events were far higher than expected even with\nmin_free_kbytes at higher values.\n\nThis patch limits the number of MIGRATE_RESERVE blocks that exist per zone\nto two.  For example, with a sufficient min_free_kbytes, 4MB of memory\nwill be kept aside on an x86-64 and remain more or less free and\ncontiguous for the systems uptime.  This should be sufficient for devices\ndepending on high-order atomic allocations while helping fragmentation\ncontrol when min_free_kbytes is tuned appropriately.  As side-effect of\nthis patch is that the reserve variable is converted to int as unsigned\nlong was the wrong type to use when ensuring that only the required number\nof reserve blocks are created.\n\nWith the patches applied, fragmentation-related events as measured by the\npage allocator tracepoints were significantly reduced when running some\nfragmentation stress-tests on systems with min_free_kbytes tuned to a\nvalue appropriate for hugepage allocations at runtime.  On x86, the events\nrecorded were reduced by 99.8%, on x86-64 by 99.72% and on ppc64 by\n99.83%.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\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": "0d3d062a6e289e065bd0aa537a6806a1806bf8aa",
      "tree": "9895e9cb48674d072885af3424e1ef145ec81f28",
      "parents": [
        "e0fff1bd12469c45dab088e353d8882761387bb6"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:02:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:34 2009 -0700"
      },
      "message": "tracing, page-allocator: add trace event for page traffic related to the buddy lists\n\nThe page allocation trace event reports that a page was successfully\nallocated but it does not specify where it came from.  When analysing\nperformance, it can be important to distinguish between pages coming from\nthe per-cpu allocator and pages coming from the buddy lists as the latter\nrequires the zone lock to the taken and more data structures to be\nexamined.\n\nThis patch adds a trace event for __rmqueue reporting when a page is being\nallocated from the buddy lists.  It distinguishes between being called to\nrefill the per-cpu lists or whether it is a high-order allocation.\nSimilarly, this patch adds an event to catch when the PCP lists are being\ndrained a little and pages are going back to the buddy lists.\n\nThis is trickier to draw conclusions from but high activity on those\nevents could explain why there were a large number of cache misses on a\npage-allocator-intensive workload.  The coalescing and splitting of\nbuddies involves a lot of writing of page metadata and cache line bounces\nnot to mention the acquisition of an interrupt-safe lock necessary to\nenter this path.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Li Ming Chun \u003cmacli@brc.ubc.ca\u003e\nReviewed-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": "e0fff1bd12469c45dab088e353d8882761387bb6",
      "tree": "dc120a7597bbd4f3841f951346dbe1f7b85dd3fb",
      "parents": [
        "4b4f278c030aa4b6ee0915f396e9a9478d92d610"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:02:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:34 2009 -0700"
      },
      "message": "tracing, page-allocator: add trace events for anti-fragmentation falling back to other migratetypes\n\nFragmentation avoidance depends on being able to use free pages from lists\nof the appropriate migrate type.  In the event this is not possible,\n__rmqueue_fallback() selects a different list and in some circumstances\nchange the migratetype of the pageblock.  Simplistically, the more times\nthis event occurs, the more likely that fragmentation will be a problem\nlater for hugepage allocation at least but there are other considerations\nsuch as the order of page being split to satisfy the allocation.\n\nThis patch adds a trace event for __rmqueue_fallback() that reports what\npage is being used for the fallback, the orders of relevant pages, the\ndesired migratetype and the migratetype of the lists being used, whether\nthe pageblock changed type and whether this event is important with\nrespect to fragmentation avoidance or not.  This information can be used\nto help analyse fragmentation avoidance and help decide whether\nmin_free_kbytes should be increased or not.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Li Ming Chun \u003cmacli@brc.ubc.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4b4f278c030aa4b6ee0915f396e9a9478d92d610",
      "tree": "10825c2d197977bc9080093a6ecbd3ce80723876",
      "parents": [
        "38a398572fa2d8124f7479e40db581b5b72719c9"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:02:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:34 2009 -0700"
      },
      "message": "tracing, page-allocator: add trace events for page allocation and page freeing\n\nThis patch adds trace events for the allocation and freeing of pages,\nincluding the freeing of pagevecs.  Using the events, it will be known\nwhat struct page and pfns are being allocated and freed and what the call\nsite was in many cases.\n\nThe page alloc tracepoints be used as an indicator as to whether the\nworkload was heavily dependant on the page allocator or not.  You can make\na guess based on vmstat but you can\u0027t get a per-process breakdown.\nDepending on the call path, the call_site for page allocation may be\n__get_free_pages() instead of a useful callsite.  Instead of passing down\na return address similar to slab debugging, the user should enable the\nstacktrace and seg-addr options to get a proper stack trace.\n\nThe pagevec free tracepoint has a different usecase.  It can be used to\nget a idea of how many pages are being dumped off the LRU and whether it\nis kswapd doing the work or a process doing direct reclaim.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Li Ming Chun \u003cmacli@brc.ubc.ca\u003e\nReviewed-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": "38a398572fa2d8124f7479e40db581b5b72719c9",
      "tree": "cad43f1cb00b760507278cc7b55f8e7fa4ab4fab",
      "parents": [
        "cc013a88906bad9d2832d6316de1c7dbc1c2a794"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:02:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:34 2009 -0700"
      },
      "message": "page-allocator: remove dead function free_cold_page()\n\nThe function free_cold_page() has no callers so delete it.\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": "2f66a68f3fac2e94da360c342ff78ab45553f86c",
      "tree": "ec8de9c7d18d866e63e2c9bcbecf902896b687bd",
      "parents": [
        "fe1ff49d0d1c30254dbfc84c3786eb538e0cc7d1"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:02:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:33 2009 -0700"
      },
      "message": "page-allocator: change migratetype for all pageblocks within a high-order page during __rmqueue_fallback\n\nWhen there are no pages of a target migratetype free, the page allocator\nselects a high-order block of another migratetype to allocate from.  When\nthe order of the page taken is greater than pageblock_order, all\npageblocks within that high-order page should change migratetype so that\npages are later freed to the correct free-lists.\n\nThe current behaviour is that pageblocks change migratetype if the order\nbeing split matches the pageblock_order.  When pageblock_order \u003c\nMAX_ORDER-1, ownership is not changing correct and pages are being later\nfreed to the incorrect list and this impacts fragmentation avoidance.\n\nThis patch changes all pageblocks within the high-order page being split\nto the correct migratetype.  Without the patch, allocation success rates\nfor hugepages under stress were about 59% of physical memory on x86-64.\nWith the patch applied, this goes up to 65%.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\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": "451ea25da71590361c71bf3044c55b870a887d53",
      "tree": "e2e9de6e7c1fb4f79c0413a3c4d401ec9263b722",
      "parents": [
        "bf88c8c83e4425d17e29daa5354ffb1f8ba7b225"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Mon Sep 21 17:01:48 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:30 2009 -0700"
      },
      "message": "mm: perform non-atomic test-clear of PG_mlocked on free\n\nBy the time PG_mlocked is cleared in the page freeing path, nobody else is\nlooking at our page-\u003eflags anymore.\n\nIt is thus safe to make the test-and-clear non-atomic and thereby removing\nan unnecessary and expensive operation from a hotpath.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\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": "945a11136ebdfa7fcce319ee6215958e84cb85f6",
      "tree": "0553ecd55e5805ea147d6a0f6eae0686d5630cf5",
      "parents": [
        "a26f5320c4ee3d46a0da48fa0f3ac6a00b575793"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Mon Sep 21 17:01:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:30 2009 -0700"
      },
      "message": "mm: add gfp mask checking for __get_free_pages()\n\n__get_free_pages() with __GFP_HIGHMEM is not safe because the return\naddress cannot represent a highmem page.  get_zeroed_page() already has\nsuch a debug checking.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a731286de62294b63d8ceb3c5914ac52cc17e690",
      "tree": "c321e14500ec264e37fd103ffa71c7b133088010",
      "parents": [
        "b35ea17b7bbf5dea35faa0de11030acc620c3197"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:01:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:29 2009 -0700"
      },
      "message": "mm: vmstat: add isolate pages\n\nIf the system is running a heavy load of processes then concurrent reclaim\ncan isolate a large number of pages from the LRU. /proc/vmstat and the\noutput generated for an OOM do not show how many pages were isolated.\n\nThis has been observed during process fork bomb testing (mstctl11 in LTP).\n\nThis patch shows the information about isolated pages.\n\nReproduced via:\n\n-----------------------\n% ./hackbench 140 process 1000\n   \u003d\u003e OOM occur\n\nactive_anon:146 inactive_anon:0 isolated_anon:49245\n active_file:79 inactive_file:18 isolated_file:113\n unevictable:0 dirty:0 writeback:0 unstable:0 buffer:39\n free:370 slab_reclaimable:309 slab_unreclaimable:5492\n mapped:53 shmem:15 pagetables:28140 bounce:0\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b259fbde0a86085264c89aa2ce9c6e35792a1aad",
      "tree": "43c43fcab1fd6eb897f7348a3b2c8071d61f2b6d",
      "parents": [
        "4b02108ac1b3354a22b0d83c684797692efdc395"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Sep 21 17:01:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:27 2009 -0700"
      },
      "message": "mm: update alloc_flags after oom killer has been called\n\nIt is possible for the oom killer to select current as the task to kill.\nWhen this happens, alloc_flags needs to be updated accordingly to set\nALLOC_NO_WATERMARKS so the subsequent allocation attempt may use memory\nreserves as the result of its thread having TIF_MEMDIE set if the\nallocation is not __GFP_NOMEMALLOC.\n\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\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": "4b02108ac1b3354a22b0d83c684797692efdc395",
      "tree": "9f65d6e8e35ddce940e7b9da6305cf5a19e5904e",
      "parents": [
        "c6a7f5728a1db45d30df55a01adc130b4ab0327c"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:01:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:27 2009 -0700"
      },
      "message": "mm: oom analysis: add shmem vmstat\n\nRecently we encountered OOM problems due to memory use of the GEM cache.\nGenerally a large amuont of Shmem/Tmpfs pages tend to create a memory\nshortage problem.\n\nWe often use the following calculation to determine the amount of shmem\npages:\n\nshmem \u003d NR_ACTIVE_ANON + NR_INACTIVE_ANON - NR_ANON_PAGES\n\nhowever the expression does not consider isolated and mlocked pages.\n\nThis patch adds explicit accounting for pages used by shmem and tmpfs.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c6a7f5728a1db45d30df55a01adc130b4ab0327c",
      "tree": "36649bc6ebb959841a5097c699968722cfd99c4d",
      "parents": [
        "71de1ccbe1fb40203edd3beb473f8580d917d2ca"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:01:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:27 2009 -0700"
      },
      "message": "mm: oom analysis: Show kernel stack usage in /proc/meminfo and OOM log output\n\nThe amount of memory allocated to kernel stacks can become significant and\ncause OOM conditions.  However, we do not display the amount of memory\nconsumed by stacks.\n\nAdd code to display the amount of memory used for stacks in /proc/meminfo.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "71de1ccbe1fb40203edd3beb473f8580d917d2ca",
      "tree": "63417ce9538883348350a879bf359e6100c244de",
      "parents": [
        "4a0aa73f1d613bf19bc8610bf090c941ef49d720"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:01:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:27 2009 -0700"
      },
      "message": "mm: oom analysis: add buffer cache information to show_free_areas()\n\nIt is often useful to know the statistics for all pages that are handled\nlike page cache pages when looking at OOM log output.\n\nTherefore show_free_areas() should also display buffer cache statistics.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4a0aa73f1d613bf19bc8610bf090c941ef49d720",
      "tree": "5b6ae69c182e65e9711864cff150536a2a216bfb",
      "parents": [
        "3b2b9a875ddcbf9fcd667db9f961a6a163bd083f"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:01:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:27 2009 -0700"
      },
      "message": "mm: oom analysis: add per-zone statistics to show_free_areas()\n\nshow_free_areas() displays only a limited amount of zone counters.  This\npatch includes additional counters in the display to allow easier\ndebugging.  This may be especially useful if an OOM is due to running out\nof DMA memory.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3701b0332330ca1add3e5d56513ef201ff7efdbb",
      "tree": "a4b47de49b0ebb763f35c3984168a9075cba6052",
      "parents": [
        "b904dcfed6967e9cfc8a54778498f6d289420309"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:01:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:26 2009 -0700"
      },
      "message": "mm: show_free_areas(): display slab pages in two separate fields\n\nIf an OOM happens, we really want to know the number of remaining\nreclaimable pages.  So the reclaimable slab and unreclaimable slab fields\nshould not be combined for display.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@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": "55a4462af5722d2814858bc51ee8d58ca29544ab",
      "tree": "617c2f3676a41507b7d6e4436dce0ce9b297ebc8",
      "parents": [
        "abfc3488118d48a2b8cce5a2345901aac6b03fee"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Mon Sep 21 17:01:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:26 2009 -0700"
      },
      "message": "page_alloc: fix kernel-doc warning\n\nUmmark function as having kernel-doc notation, fixing the kernel-doc\nwarning.\n\nWarning(mm/page_alloc.c:4519): No description found for parameter \u0027zone\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8e7e40d9658cf7b2ae2b76484e235799b3ddaa97",
      "tree": "7dfc66d7878d5d4df8f29c56f9195f653626c378",
      "parents": [
        "6fb332fabd7288af9dbe7992394aa6ba97c1a537"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Sep 21 17:01:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:26 2009 -0700"
      },
      "message": "memory hotplug: make pages from movable zone always isolatable\n\nPages on movable zone have two types, MIGRATE_MOVABLE and MIGRATE_RESERVE,\nboth them can be movable, because only movable memory allocation can get\npages from movable zone.  This makes pages in movable zone always be able\nto migrate.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Yakui Zhao \u003cyakui.zhao@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": "6fb332fabd7288af9dbe7992394aa6ba97c1a537",
      "tree": "261fe72f01461d65532730f283108be2306b80b5",
      "parents": [
        "112067f0905b2de862c607ee62411cf47d2fe5c4"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Sep 21 17:01:17 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:25 2009 -0700"
      },
      "message": "memory hotplug: exclude isolated page from pco page alloc\n\nPages marked as isolated should not be allocated again.  If such pages\nreside in pcp list, they can be allocated too, so there is a ping-pong\nmemory offline frees some pages to pcp list and the pages get allocated\nand then memory offline frees them again, this loop will happen again and\nagain.\n\nThis should have no impact in normal code path, because in normal code\npath, pages in pcp list aren\u0027t isolated, and below loop will break in the\nfirst entry.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Yakui Zhao \u003cyakui.zhao@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": "112067f0905b2de862c607ee62411cf47d2fe5c4",
      "tree": "55575b100292b764f945e4d9395989e8a734f883",
      "parents": [
        "478b81fd84a299adb401dbbae296f3767e552999"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Sep 21 17:01:16 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:25 2009 -0700"
      },
      "message": "memory hotplug: update zone pcp at memory online\n\nIn my test, 128M memory is hot added, but zone\u0027s pcp batch is 0, which is\nan obvious error.  When pages are onlined, zone pcp should be updated\naccordingly.\n\n[akpm@linux-foundation.org: fix warnings]\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Yakui Zhao \u003cyakui.zhao@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": "478b81fd84a299adb401dbbae296f3767e552999",
      "tree": "64651cc58d04a54e4eca296d4124c6825a57329c",
      "parents": [
        "a5abeeacc44bbef2935a7a8e939264c28962def2"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Sep 21 17:01:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:25 2009 -0700"
      },
      "message": "mm: remove obsoleted alloc_pages cpuset comment\n\nWhen a cpuset\u0027s nodemask is updated, all attached tasks have their cached\ntask-\u003emems_allowed updated by a heap instead of requiring an explicit call\nto cpuset_update_task_memory_state(), which has since been removed in\n58568d2a8215cb6f55caf2332017d7bdff954e1c (\"cpuset,mm: update tasks\u0027\nmems_allowed in time\").\n\nRemove the obsoleted comment from the page allocator.\n\nCc: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: Miao Xie \u003cmiaox@cn.fujitsu.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": "2a7684a23e9c263c2a1e8b2c0027ad1836a0f9df",
      "tree": "b9769d2f391d76d9c84c687aa771d36cc539025e",
      "parents": [
        "888b9f7c58ebe8303bad817cd554df887a683957"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Sep 16 11:50:12 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:12 2009 +0200"
      },
      "message": "HWPOISON: check and isolate corrupted free pages v2\n\nIf memory corruption hits the free buddy pages, we can safely ignore them.\nNo one will access them until page allocation time, then prep_new_page()\nwill automatically check and isolate PG_hwpoison page for us (for 0-order\nallocation).\n\nThis patch expands prep_new_page() to check every component page in a high\norder page allocation, in order to completely stop PG_hwpoison pages from\nbeing recirculated.\n\nNote that the common case -- only allocating a single page, doesn\u0027t\ndo any more work than before. Allocating \u003e order 0 does a bit more work,\nbut that\u0027s relatively uncommon.\n\nThis simple implementation may drop some innocent neighbor pages, hopefully\nit is not a big problem because the event should be rare enough.\n\nThis patch adds some runtime costs to high order page users.\n\n[AK: Improved description]\n\nv2: Andi Kleen:\nPort to -mm code\nMove check into separate function.\nDon\u0027t dump stack in bad_pages for hwpoisoned pages.\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "dd5d241ea955006122d76af88af87de73fec25b4",
      "tree": "2ca12406f407d476b1ba473dc376d1e621a383f6",
      "parents": [
        "a190887b58c32d19c2eee007c5eb8faa970a69ba"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Sat Sep 05 11:17:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 11:30:42 2009 -0700"
      },
      "message": "page-allocator: always change pageblock ownership when anti-fragmentation is disabled\n\nOn low-memory systems, anti-fragmentation gets disabled as fragmentation\ncannot be avoided on a sufficiently large boundary to be worthwhile.  Once\ndisabled, there is a period of time when all the pageblocks are marked\nMOVABLE and the expectation is that they get marked UNMOVABLE at each call\nto __rmqueue_fallback().\n\nHowever, when MAX_ORDER is large the pageblocks do not change ownership\nbecause the normal criteria are not met.  This has the effect of\nprematurely breaking up too many large contiguous blocks.  This is most\nserious on NOMMU systems which depend on high-order allocations to boot.\nThis patch causes pageblocks to change ownership on every fallback when\nanti-fragmentation is disabled.  This prevents the large blocks being\nprematurely broken up.\n\nThis is a fix to commit 49255c619fbd482d704289b5eb2795f8e3b7ff2e [page\nallocator: move check for disabled anti-fragmentation out of fastpath] and\nthe problem affects 2.6.31-rc8.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nTested-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f9cfb31030737a7fc9a1cbca3fd01bec184c849",
      "tree": "a8db215579bc073fb2b1d6d9690dbb78c79aa52d",
      "parents": [
        "503f7944fac68f4fdf71f8ebd06907f51eb64515"
      ],
      "author": {
        "name": "Bo Liu",
        "email": "bo-liu@hotmail.com",
        "time": "Tue Aug 18 14:11:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 18 16:31:13 2009 -0700"
      },
      "message": "mm: build_zonelists(): move clear node_load[] to __build_all_zonelists()\n\nIf node_load[] is cleared everytime build_zonelists() is\ncalled,node_load[] will have no help to find the next node that should\nappear in the given node\u0027s fallback list.\n\nBecause of the bug, zonelist\u0027s node_order is not calculated as expected.\nThis bug affects on big machine, which has asynmetric node distance.\n\n[synmetric NUMA\u0027s node distance]\n     0    1    2\n0   10   12   12\n1   12   10   12\n2   12   12   10\n\n[asynmetric NUMA\u0027s node distance]\n     0    1    2\n0   10   12   20\n1   12   10   14\n2   20   14   10\n\nThis (my bug) is very old but no one has reported this for a long time.\nMaybe because the number of asynmetric NUMA is very small and they use\ncpuset for customizing node memory allocation fallback.\n\n[akpm@linux-foundation.org: fix CONFIG_NUMA\u003dn build]\nSigned-off-by: Bo Liu \u003cbo-liu@hotmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.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": "1fc28b70fe2dbf87e061b6ce5091a1f8e4e5d4e7",
      "tree": "35c109a52c3dd8a509b5dd1318eb4963b45a8b01",
      "parents": [
        "887032670d47366a8c8f25396ea7c14b7b2cc620"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Jul 29 15:04:08 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 29 19:10:35 2009 -0700"
      },
      "message": "page-allocator: allow too high-order warning messages to be suppressed with __GFP_NOWARN\n\nThe page allocator warns once when an order \u003e\u003d MAX_ORDER is specified.\nThis is to catch callers of the allocator that are always falling back to\ntheir worst-case when it was not expected.  However, there are cases where\nthe caller is behaving correctly but cannot suppress the warning.  This\npatch allows the warning to be suppressed by the callers by specifying\n__GFP_NOWARN.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6583bb64fc370842b32a87c67750c26f6d559af0",
      "tree": "321681ebc6ff893318d67859b24f199b9111cbc8",
      "parents": [
        "e084b2d95e48b31aa45f9c49ffc6cdae8bdb21d4"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Jul 29 15:02:06 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 29 19:10:34 2009 -0700"
      },
      "message": "mm: avoid endless looping for oom killed tasks\n\nIf a task is oom killed and still cannot find memory when trying with\nno watermarks, it\u0027s better to fail the allocation attempt than to loop\nendlessly.  Direct reclaim has already failed and the oom killer will\nbe a no-op since current has yet to die, so there is no other\nalternative for allocations that are not __GFP_NOFAIL.\n\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e084b2d95e48b31aa45f9c49ffc6cdae8bdb21d4",
      "tree": "ff15d36a3a1e49fdbd5080decb7ab00afdd60099",
      "parents": [
        "51fbb4bab6c8710eb897ab3fb06efbbc921f3a8d"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Jul 29 15:02:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 29 19:10:34 2009 -0700"
      },
      "message": "page-allocator: preserve PFN ordering when __GFP_COLD is set\n\nFix a post-2.6.24 performace regression caused by\n3dfa5721f12c3d5a441448086bee156887daa961 (\"page-allocator: preserve PFN\nordering when __GFP_COLD is set\").\n\nNarayanan reports \"The regression is around 15%.  There is no disk controller\nas our setup is based on Samsung OneNAND used as a memory mapped device on a\nOMAP2430 based board.\"\n\nThe page allocator tries to preserve contiguous PFN ordering when returning\npages such that repeated callers to the allocator have a strong chance of\ngetting physically contiguous pages, particularly when external fragmentation\nis low.  However, of the bulk of the allocations have __GFP_COLD set as they\nare due to aio_read() for example, then the PFNs are in reverse PFN order.\nThis can cause performance degration when used with IO controllers that could\nhave merged the requests.\n\nThis patch attempts to preserve the contiguous ordering of PFNs for users of\n__GFP_COLD.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReported-by: Narayananu Gopalakrishnan \u003cnarayanan.g@samsung.com\u003e\nTested-by: Narayanan Gopalakrishnan \u003cnarayanan.g@samsung.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@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": "7638d5322bd89d49e013a03fe2afaeb6d214fabd",
      "tree": "cfafc7c6c9f169a7a308c290363dde765e21735d",
      "parents": [
        "dd0d9a46f573b086a67522f819566427dba9c4c7",
        "264ef8a904943ed7d0b04fa958894d7a5c2b2c61"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:24:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:24:35 2009 -0700"
      },
      "message": "Merge branch \u0027kmemleak\u0027 of git://linux-arm.org/linux-2.6\n\n* \u0027kmemleak\u0027 of git://linux-arm.org/linux-2.6:\n  kmemleak: Remove alloc_bootmem annotations introduced in the past\n  kmemleak: Add callbacks to the bootmem allocator\n  kmemleak: Allow partial freeing of memory blocks\n  kmemleak: Trace the kmalloc_large* functions in slub\n  kmemleak: Scan objects allocated during a scanning episode\n  kmemleak: Do not acquire scan_mutex in kmemleak_open()\n  kmemleak: Remove the reported leaks number limitation\n  kmemleak: Add more cond_resched() calls in the scanning thread\n  kmemleak: Renice the scanning thread to +10\n"
    },
    {
      "commit": "8aa7e847d834ed937a9ad37a0f2ad5b8584c1ab0",
      "tree": "76c8b4f1362a928d426f2201790ab5d128f57724",
      "parents": [
        "c2cc49a2f8a479dde96a599646d30b6cc9dbed78"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 09 14:52:32 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.(none)",
        "time": "Fri Jul 10 20:31:53 2009 +0200"
      },
      "message": "Fix congestion_wait() sync/async vs read/write confusion\n\nCommit 1faa16d22877f4839bd433547d770c676d1d964c accidentally broke\nthe bdi congestion wait queue logic, causing us to wait on congestion\nfor WRITE (\u003d\u003d 1) when we really wanted BLK_RW_ASYNC (\u003d\u003d 0) instead.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "264ef8a904943ed7d0b04fa958894d7a5c2b2c61",
      "tree": "ddab997d86b591cf67de3afc2f23e7d9f2fb1207",
      "parents": [
        "ec3a354bd46cbdaa7933ba57a142ee2d2dbde0e5"
      ],
      "author": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Tue Jul 07 10:33:01 2009 +0100"
      },
      "committer": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Thu Jul 09 17:07:02 2009 +0100"
      },
      "message": "kmemleak: Remove alloc_bootmem annotations introduced in the past\n\nkmemleak_alloc() calls were added in some places where alloc_bootmem was\ncalled. Since now kmemleak tracks bootmem allocations, these explicit\ncalls should be run.\n\nSigned-off-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "5bfd7560979062ad75c9805c1719cec990b5db29",
      "tree": "cdefaa4920ad4f87f4cd66f96cb4112b2be2bde3",
      "parents": [
        "c8236db9cd7aa492dcfcdcca702638e704abed49"
      ],
      "author": {
        "name": "Kevin Cernekee",
        "email": "cernekee@gmail.com",
        "time": "Sun Jul 05 12:08:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 06 13:57:03 2009 -0700"
      },
      "message": "Fix virt_to_phys() warnings\n\nThese warnings were observed on MIPS32 using 2.6.31-rc1 and gcc-4.2.0:\n\nmm/page_alloc.c: In function \u0027alloc_pages_exact\u0027:\nmm/page_alloc.c:1986: warning: passing argument 1 of \u0027virt_to_phys\u0027 makes pointer from integer without a cast\n\ndrivers/usb/mon/mon_bin.c: In function \u0027mon_alloc_buff\u0027:\ndrivers/usb/mon/mon_bin.c:1264: warning: passing argument 1 of \u0027virt_to_phys\u0027 makes pointer from integer without a cast\n\n[akpm@linux-foundation.org: fix kernel/perf_counter.c too]\nSigned-off-by: Kevin Cernekee \u003ccernekee@gmail.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.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": "66918dcdf91ad101194c749c18099e836ba3de2b",
      "tree": "c7c2b3e4665a20fc670ea09a8b2da7a9d289984d",
      "parents": [
        "b37f2d4de6dfce4bfd6df311af80e4d61458ee1e"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Tue Jun 30 11:41:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 30 18:56:01 2009 -0700"
      },
      "message": "x86: only clear node_states for 64bit\n\nNathan reported that\n\n| commit 73d60b7f747176dbdff826c4127d22e1fd3f9f74\n| Author: Yinghai Lu \u003cyinghai@kernel.org\u003e\n| Date:   Tue Jun 16 15:33:00 2009 -0700\n|\n|    page-allocator: clear N_HIGH_MEMORY map before we set it again\n|\n|    SRAT tables may contains nodes of very small size.  The arch code may\n|    decide to not activate such a node.  However, currently the early boot\n|    code sets N_HIGH_MEMORY for such nodes.  These nodes therefore seem to be\n|    active although these nodes have no present pages.\n|\n|    For 64bit N_HIGH_MEMORY \u003d\u003d N_NORMAL_MEMORY, so that works for 64 bit too\n\nunintentionally and incorrectly clears the cpuset.mems cgroup attribute on\nan i386 kvm guest, meaning that cpuset.mems can not be used.\n\nFix this by only clearing node_states[N_NORMAL_MEMORY] for 64bit only.\nand need to do save/restore for that in find_zone_movable_pfn\n\nReported-by: Nathan Lynch \u003cntl@pobox.com\u003e\nTested-by: Nathan Lynch \u003cntl@pobox.com\u003e\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.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": "4923abf9f1a4c1864af438a57c1f3686548230e9",
      "tree": "cbe9762f552478ce0c2a68728b45d0c604822882",
      "parents": [
        "c82e6d450fda56cb2d4f68534173d3cd11b32f9f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 24 12:16:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 24 12:16:49 2009 -0700"
      },
      "message": "Don\u0027t warn about order-1 allocations with __GFP_NOFAIL\n\nTraditionally, we never failed small orders (even regardless of any\n__GFP_NOFAIL flags), and slab will allocate order-1 allocations even for\nsmall allocations that could fit in a single page (in order to avoid\nexcessive fragmentation).\n\nMaybe we should remove this warning entirely, but before making that\njudgement, at least limit it to bigger allocations.\n\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "364df0ebfbbb1330bfc6ca159f4d6020efc15a12",
      "tree": "80c79bf145d8388ad96a0f7c47a4d25642e403a1",
      "parents": [
        "01ff53f416757da416413bc32229770a8448b6ef"
      ],
      "author": {
        "name": "Dimitri Sivanich",
        "email": "sivanich@sgi.com",
        "time": "Tue Jun 23 12:37:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 23 12:50:05 2009 -0700"
      },
      "message": "mm: fix handling of pagesets for downed cpus\n\nAfter downing/upping a cpu, an attempt to set\n/proc/sys/vm/percpu_pagelist_fraction results in an oops in\npercpu_pagelist_fraction_sysctl_handler().\n\nIf a processor is downed then we need to set the pageset pointer back to\nthe boot pageset.\n\nUpdates of the high water marks should not access pagesets of unpopulated\nzones (those pointer go to the boot pagesets which would be no longer\nfunctional if their size would be increased beyond zero).\n\nSigned-off-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\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": "c277331d5fbaae5772ed19862feefa91f4e477d3",
      "tree": "fcd980b58d9487421e9b0c45b7c082fa1302debb",
      "parents": [
        "9063c61fd5cbd6f42e95929aa0e02380c9e15656"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Fri Jun 19 19:30:56 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 20 16:08:22 2009 -0700"
      },
      "message": "mm: page_alloc: clear PG_locked before checking flags on free\n\nda456f1 \"page allocator: do not disable interrupts in free_page_mlock()\" moved\nthe PG_mlocked clearing after the flag sanity checking which makes mlocked\npages always trigger \u0027bad page\u0027.  Fix this by clearing the bit up front.\n\nReported--and-debugged-by: Peter Chubb \u003cpeter.chubb@nicta.com.au\u003e\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nTested-by: Maxim Levitsky \u003cmaximlevitsky@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dcce284a259373f9e5570f2e33f79eca84fcf565",
      "tree": "afc4b23208974f17c080ea3d2ecfbaca4254c010",
      "parents": [
        "9729a6eb5878a3daa18395f2b5fb38bf9359a761"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Thu Jun 18 13:24:12 2009 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:12:57 2009 -0700"
      },
      "message": "mm: Extend gfp masking to the page allocator\n\nThe page allocator also needs the masking of gfp flags during boot,\nso this moves it out of slab/slub and uses it with the page allocator\nas well.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "517d08699b250021303f9a7cf0d758b6dc0748ed",
      "tree": "5e5b0134c3fffb78fe9d8b1641a64ff28fdd7bbc",
      "parents": [
        "8eeee4e2f04fc551f50c9d9847da2d73d7d33728",
        "a34601c5d84134055782ee031d58d82f5440e918"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:50:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:50:13 2009 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027\n\n* akpm: (182 commits)\n  fbdev: bf54x-lq043fb: use kzalloc over kmalloc/memset\n  fbdev: *bfin*: fix __dev{init,exit} markings\n  fbdev: *bfin*: drop unnecessary calls to memset\n  fbdev: bfin-t350mcqb-fb: drop unused local variables\n  fbdev: blackfin has __raw I/O accessors, so use them in fb.h\n  fbdev: s1d13xxxfb: add accelerated bitblt functions\n  tcx: use standard fields for framebuffer physical address and length\n  fbdev: add support for handoff from firmware to hw framebuffers\n  intelfb: fix a bug when changing video timing\n  fbdev: use framebuffer_release() for freeing fb_info structures\n  radeon: P2G2CLK_ALWAYS_ONb tested twice, should 2nd be P2G2CLK_DAC_ALWAYS_ONb?\n  s3c-fb: CPUFREQ frequency scaling support\n  s3c-fb: fix resource releasing on error during probing\n  carminefb: fix possible access beyond end of carmine_modedb[]\n  acornfb: remove fb_mmap function\n  mb862xxfb: use CONFIG_OF instead of CONFIG_PPC_OF\n  mb862xxfb: restrict compliation of platform driver to PPC\n  Samsung SoC Framebuffer driver: add Alpha Channel support\n  atmel-lcdc: fix pixclock upper bound detection\n  offb: use framebuffer_alloc() to allocate fb_info struct\n  ...\n\nManually fix up conflicts due to kmemcheck in mm/slab.c\n"
    },
    {
      "commit": "fa5e084e43eb14c14942027e1e2e894aeed96097",
      "tree": "3e7ebf714858e8dd1de7042fd1ef62294a3ec20f",
      "parents": [
        "90afa5de6f3fa89a733861e843377302479fcf7e"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jun 16 15:33:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:45 2009 -0700"
      },
      "message": "vmscan: do not unconditionally treat zones that fail zone_reclaim() as full\n\nOn NUMA machines, the administrator can configure zone_reclaim_mode that\nis a more targetted form of direct reclaim.  On machines with large NUMA\ndistances for example, a zone_reclaim_mode defaults to 1 meaning that\nclean unmapped pages will be reclaimed if the zone watermarks are not\nbeing met.  The problem is that zone_reclaim() failing at all means the\nzone gets marked full.\n\nThis can cause situations where a zone is usable, but is being skipped\nbecause it has been considered full.  Take a situation where a large tmpfs\nmount is occuping a large percentage of memory overall.  The pages do not\nget cleaned or reclaimed by zone_reclaim(), but the zone gets marked full\nand the zonelist cache considers them not worth trying in the future.\n\nThis patch makes zone_reclaim() return more fine-grained information about\nwhat occured when zone_reclaim() failued.  The zone only gets marked full\nif it really is unreclaimable.  If it\u0027s a case that the scan did not occur\nor if enough pages were not reclaimed with the limited reclaim_mode, then\nthe zone is simply skipped.\n\nThere is a side-effect to this patch.  Currently, if zone_reclaim()\nsuccessfully reclaimed SWAP_CLUSTER_MAX, an allocation attempt would go\nahead.  With this patch applied, zone watermarks are rechecked after\nzone_reclaim() does some work.\n\nThis bug was introduced by commit 9276b1bc96a132f4068fdee00983c532f43d3a26\n(\"memory page_alloc zonelist caching speedup\") way back in 2.6.19 when the\nzonelist_cache was introduced.  It was not intended that zone_reclaim()\naggressively consider the zone to be full when it failed as full direct\nreclaim can still be an option.  Due to the age of the bug, it should be\nconsidered a -stable candidate.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.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": "73d60b7f747176dbdff826c4127d22e1fd3f9f74",
      "tree": "d4f72cfe145ed3d2ae19a56fe9f9f6424d597c44",
      "parents": [
        "286973552f051404abdb58dd9b2f8f7558efe4e5"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Tue Jun 16 15:33:00 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:43 2009 -0700"
      },
      "message": "page-allocator: clear N_HIGH_MEMORY map before we set it again\n\nSRAT tables may contains nodes of very small size.  The arch code may\ndecide to not activate such a node.  However, currently the early boot\ncode sets N_HIGH_MEMORY for such nodes.  These nodes therefore seem to be\nactive although these nodes have no present pages.\n\nFor 64bit N_HIGH_MEMORY \u003d\u003d N_NORMAL_MEMORY, so that works for 64 bit too\n\nSigned-off-by: Yinghai Lu \u003cYinghai@kernel.org\u003e\nTested-by: Jack Steiner \u003csteiner@sgi.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\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": "82553a937f12352c26fe457510ebab3f512cd3fa",
      "tree": "c3df31e9953d5f56491576ba019fdc2cd87af926",
      "parents": [
        "4d8b9135c30ccbe46e621fefd862969819003fd6"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jun 16 15:32:58 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:43 2009 -0700"
      },
      "message": "oom: invoke oom killer for __GFP_NOFAIL\n\nThe oom killer must be invoked regardless of the order if the allocation\nis __GFP_NOFAIL, otherwise it will loop forever when reclaim fails to free\nsome memory.\n\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.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": "6837765963f1723e80ca97b1fae660f3a60d77df",
      "tree": "a9a6ed4b7e3bf188966da78b04bf39298f24375a",
      "parents": [
        "bce7394a3ef82b8477952fbab838e4a6e8cb47d2"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jun 16 15:32:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:42 2009 -0700"
      },
      "message": "mm: remove CONFIG_UNEVICTABLE_LRU config option\n\nCurrently, nobody wants to turn UNEVICTABLE_LRU off.  Thus this\nconfigurability is unnecessary.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nAcked-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bce7394a3ef82b8477952fbab838e4a6e8cb47d2",
      "tree": "7e2f50300dc4edf471a67c1871f288f031fd84f7",
      "parents": [
        "96cb4df5ddf5e6d5785b5acd4003e3689b87f896"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Tue Jun 16 15:32:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:42 2009 -0700"
      },
      "message": "page-allocator: reset wmark_min and inactive ratio of zone when hotplug happens\n\nSolve two problems.\n\nWhenever memory hotplug sucessfully happens, zone-\u003epresent_pages\nhave to be changed.\n\n1) Now memory hotplug calls setup_per_zone_wmark_min only when\n   online_pages called, not offline_pages.\n\n   It breaks balance.\n\n2) If zone-\u003epresent_pages is changed, we also have to change\n   zone-\u003einactive_ratio.  That\u0027s because inactive_ratio depends on\n   zone-\u003epresent_pages.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "96cb4df5ddf5e6d5785b5acd4003e3689b87f896",
      "tree": "e6bd74df480e9065617aebec29b4285fa021c919",
      "parents": [
        "bc75d33f0fc1d56e734db1f56d3cfc8097b8e0cf"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Tue Jun 16 15:32:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:42 2009 -0700"
      },
      "message": "page-allocator: add inactive ratio calculation function of each zone\n\nFactor the per-zone arithemetic inside setup_per_zone_inactive_ratio()\u0027s\nloop into a a separate function, calculate_zone_inactive_ratio().  This\nfunction will be used in a later patch\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bc75d33f0fc1d56e734db1f56d3cfc8097b8e0cf",
      "tree": "4dc5054afdff491d8378dee2a235da64d6ad3de6",
      "parents": [
        "b70d94ee438b3fd9c15c7691d7a932a135c18101"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Tue Jun 16 15:32:48 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:41 2009 -0700"
      },
      "message": "page-allocator: clean up functions related to pages_min\n\nChange the names of two functions. It doesn\u0027t affect behavior.\n\nPresently, setup_per_zone_pages_min() changes low, high of zone as well as\nmin.  So a better name is setup_per_zone_wmarks().  That\u0027s because Mel\nchanged zone-\u003epages_[hig/low/min] to zone-\u003ewatermark array in \"page\nallocator: replace the watermark-related union in struct zone with a\nwatermark[] array\".\n\n * setup_per_zone_pages_min \u003d\u003e setup_per_zone_wmarks\n\nOf course, we have to change init_per_zone_pages_min, too.  There are not\npages_min any more.\n\n * init_per_zone_pages_min \u003d\u003e init_per_zone_wmark_min\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f33d49a2ed546e01f7b1d0607661810f2421859",
      "tree": "8b05ac7ec2cd123efb266ecaa1bf0bd1487158f8",
      "parents": [
        "75927af8bcb940dad4fe281713d526cb520869ff"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue Jun 16 15:32:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:40 2009 -0700"
      },
      "message": "mm, PM/Freezer: Disable OOM killer when tasks are frozen\n\nCurrently, the following scenario appears to be possible in theory:\n\n* Tasks are frozen for hibernation or suspend.\n* Free pages are almost exhausted.\n* Certain piece of code in the suspend code path attempts to allocate\n  some memory using GFP_KERNEL and allocation order less than or\n  equal to PAGE_ALLOC_COSTLY_ORDER.\n* __alloc_pages_internal() cannot find a free page so it invokes the\n  OOM killer.\n* The OOM killer attempts to kill a task, but the task is frozen, so\n  it doesn\u0027t die immediately.\n* __alloc_pages_internal() jumps to \u0027restart\u0027, unsuccessfully tries\n  to find a free page and invokes the OOM killer.\n* No progress can be made.\n\nAlthough it is now hard to trigger during hibernation due to the memory\nshrinking carried out by the hibernation code, it is theoretically\npossible to trigger during suspend after the memory shrinking has been\nremoved from that code path.  Moreover, since memory allocations are\ngoing to be used for the hibernation memory shrinking, it will be even\nmore likely to happen during hibernation.\n\nTo prevent it from happening, introduce the oom_killer_disabled switch\nthat will cause __alloc_pages_internal() to fail in the situations in\nwhich the OOM killer would have been called and make the freezer set\nthis switch after tasks have been successfully frozen.\n\n[akpm@linux-foundation.org: be nicer to the namespace]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Fengguang Wu \u003cfengguang.wu@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\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"
    }
  ],
  "next": "dab48dab37d2770824420d1e01730a107fade1aa"
}
