)]}'
{
  "log": [
    {
      "commit": "ae027cb3ececb2cf00c269a4fd86429e09e578d8",
      "tree": "35a293cc1f10c9e09b2efc4d16ba8c27e9bc14fe",
      "parents": [
        "32e59b5624b67b50fcf44667104e9e7d81b349b0",
        "0fc4d13984b356c41b5d3ba1545bbc1c6d54b067"
      ],
      "author": {
        "name": "Linux Build Service Account",
        "email": "lnxbuild@localhost",
        "time": "Wed Feb 08 04:33:06 2012 -0800"
      },
      "committer": {
        "name": "QuIC Gerrit Code Review",
        "email": "code-review@localhost",
        "time": "Wed Feb 08 04:33:06 2012 -0800"
      },
      "message": "Merge \"backing-dev: ensure wakeup_timer is deleted\" into msm-3.0"
    },
    {
      "commit": "aa7e9dec5cfd309cb9eb6cb56a284a61607a925a",
      "tree": "ed809f41f932159c0a92d7a8140635a2e695ee63",
      "parents": [
        "848bbb91be354d9bde3bacaadcc3dde9342cd236"
      ],
      "author": {
        "name": "Jack Cheung",
        "email": "jackc@codeaurora.org",
        "time": "Thu Jan 19 17:06:04 2012 -0800"
      },
      "committer": {
        "name": "Jack Cheung",
        "email": "jackc@codeaurora.org",
        "time": "Mon Jan 23 14:51:24 2012 -0800"
      },
      "message": "mm: Drain pages after onlining\n\nWhen onlining, the onlined pages must be added to the kernel\u0027s\nlist of free pages using __free_page(). However, pages are not\nimmediately added but placed in a queue to be processed\nwhen the queue size reaches a watermark. The last pages in\nthe queue may not be processed in time, and if you try to\noffline that memory before it is processed, offlining will\nalways fail.\n\nThis fix calls drain_all_pages(), which will process every\nfree page in the queue. This ensures that all pages are\naccounted for when onlining and nothing gets stuck in the queue.\n\nChange-Id: I54dbc0749556702407090e51ce9246abc5db7d1c\nSigned-off-by: Jack Cheung \u003cjackc@codeaurora.org\u003e\n"
    },
    {
      "commit": "0fc4d13984b356c41b5d3ba1545bbc1c6d54b067",
      "tree": "59cde2b4900112f3563bea32f16bfba79928bcba",
      "parents": [
        "5fd77778263af935a67e495dbabb8c270f726c7d"
      ],
      "author": {
        "name": "Rabin Vincent",
        "email": "rabin.vincent@stericsson.com",
        "time": "Fri Nov 11 13:29:04 2011 +0100"
      },
      "committer": {
        "name": "Pratibhasagar V",
        "email": "pratibha@codeaurora.org",
        "time": "Mon Jan 23 16:29:56 2012 +0530"
      },
      "message": "backing-dev: ensure wakeup_timer is deleted\n\nbdi_prune_sb() in bdi_unregister() attempts to removes the bdi links\nfrom all super_blocks and then del_timer_sync() the writeback timer.\n\nHowever, this can race with __mark_inode_dirty(), leading to\nbdi_wakeup_thread_delayed() rearming the writeback timer on the bdi\nwe\u0027re unregistering, after we\u0027ve called del_timer_sync().\n\nThis can end up with the bdi being freed with an active timer inside it,\nas in the case of the following dump after the removal of an SD card.\n\nFix this by redoing the del_timer_sync() in bdi_destory().\n\n ------------[ cut here ]------------\n WARNING: at /home/rabin/kernel/arm/lib/debugobjects.c:262 debug_print_object+0x9c/0xc8()\n ODEBUG: free active (active state 0) object type: timer_list hint: wakeup_timer_fn+0x0/0x180\n Modules linked in:\n Backtrace:\n [\u003cc00109dc\u003e] (dump_backtrace+0x0/0x110) from [\u003cc0236e4c\u003e] (dump_stack+0x18/0x1c)\n  r6:c02bc638 r5:00000106 r4:c79f5d18 r3:00000000\n [\u003cc0236e34\u003e] (dump_stack+0x0/0x1c) from [\u003cc0025e6c\u003e] (warn_slowpath_common+0x54/0x6c)\n [\u003cc0025e18\u003e] (warn_slowpath_common+0x0/0x6c) from [\u003cc0025f28\u003e] (warn_slowpath_fmt+0x38/0x40)\n  r8:20000013 r7:c780c6f0 r6:c031613c r5:c780c6f0 r4:c02b1b29\n r3:00000009\n [\u003cc0025ef0\u003e] (warn_slowpath_fmt+0x0/0x40) from [\u003cc015eb4c\u003e] (debug_print_object+0x9c/0xc8)\n  r3:c02b1b29 r2:c02bc662\n [\u003cc015eab0\u003e] (debug_print_object+0x0/0xc8) from [\u003cc015f574\u003e] (debug_check_no_obj_freed+0xac/0x1dc)\n  r6:c7964000 r5:00000001 r4:c7964000\n [\u003cc015f4c8\u003e] (debug_check_no_obj_freed+0x0/0x1dc) from [\u003cc00a9e38\u003e] (kmem_cache_free+0x88/0x1f8)\n [\u003cc00a9db0\u003e] (kmem_cache_free+0x0/0x1f8) from [\u003cc014286c\u003e] (blk_release_queue+0x70/0x78)\n [\u003cc01427fc\u003e] (blk_release_queue+0x0/0x78) from [\u003cc015290c\u003e] (kobject_release+0x70/0x84)\n  r5:c79641f0 r4:c796420c\n [\u003cc015289c\u003e] (kobject_release+0x0/0x84) from [\u003cc0153ce4\u003e] (kref_put+0x68/0x80)\n  r7:00000083 r6:c74083d0 r5:c015289c r4:c796420c\n [\u003cc0153c7c\u003e] (kref_put+0x0/0x80) from [\u003cc01527d0\u003e] (kobject_put+0x48/0x5c)\n  r5:c79643b4 r4:c79641f0\n [\u003cc0152788\u003e] (kobject_put+0x0/0x5c) from [\u003cc013ddd8\u003e] (blk_cleanup_queue+0x68/0x74)\n  r4:c7964000\n [\u003cc013dd70\u003e] (blk_cleanup_queue+0x0/0x74) from [\u003cc01a6370\u003e] (mmc_blk_put+0x78/0xe8)\n  r5:00000000 r4:c794c400\n [\u003cc01a62f8\u003e] (mmc_blk_put+0x0/0xe8) from [\u003cc01a64b4\u003e] (mmc_blk_release+0x24/0x38)\n  r5:c794c400 r4:c0322824\n [\u003cc01a6490\u003e] (mmc_blk_release+0x0/0x38) from [\u003cc00de11c\u003e] (__blkdev_put+0xe8/0x170)\n  r5:c78d5e00 r4:c74083c0\n [\u003cc00de034\u003e] (__blkdev_put+0x0/0x170) from [\u003cc00de2c0\u003e] (blkdev_put+0x11c/0x12c)\n  r8:c79f5f70 r7:00000001 r6:c74083d0 r5:00000083 r4:c74083c0\n r3:00000000\n [\u003cc00de1a4\u003e] (blkdev_put+0x0/0x12c) from [\u003cc00b0724\u003e] (kill_block_super+0x60/0x6c)\n  r7:c7942300 r6:c79f4000 r5:00000083 r4:c74083c0\n [\u003cc00b06c4\u003e] (kill_block_super+0x0/0x6c) from [\u003cc00b0a94\u003e] (deactivate_locked_super+0x44/0x70)\n  r6:c79f4000 r5:c031af64 r4:c794dc00 r3:c00b06c4\n [\u003cc00b0a50\u003e] (deactivate_locked_super+0x0/0x70) from [\u003cc00b1358\u003e] (deactivate_super+0x6c/0x70)\n  r5:c794dc00 r4:c794dc00\n [\u003cc00b12ec\u003e] (deactivate_super+0x0/0x70) from [\u003cc00c88b0\u003e] (mntput_no_expire+0x188/0x194)\n  r5:c794dc00 r4:c7942300\n [\u003cc00c8728\u003e] (mntput_no_expire+0x0/0x194) from [\u003cc00c95e0\u003e] (sys_umount+0x2e4/0x310)\n  r6:c7942300 r5:00000000 r4:00000000 r3:00000000\n [\u003cc00c92fc\u003e] (sys_umount+0x0/0x310) from [\u003cc000d940\u003e] (ret_fast_syscall+0x0/0x30)\n ---[ end trace e5c83c92ada51c76 ]---\n\nChange-Id: Iab5fb46548e97443d09f5556d7f57098b728bf07\nCc: stable@kernel.org\nSigned-off-by: Rabin Vincent \u003crabin.vincent@stericsson.com\u003e\nSigned-off-by: Linus Walleij \u003clinus.walleij@linaro.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Pratibhasagar V \u003cpratibha@codeaurora.org\u003e\n"
    },
    {
      "commit": "cf089c4da08614410c789fb61af3b712c3bd1850",
      "tree": "0d93ade65db98b376e5bd84adae97f93ef7615c5",
      "parents": [
        "1aa4848c00a370a2d7cf5d779da055fce19f037d"
      ],
      "author": {
        "name": "Shubhraprakash Das",
        "email": "sadas@codeaurora.org",
        "time": "Thu Dec 22 14:28:07 2011 -0700"
      },
      "committer": {
        "name": "Shubhraprakash Das",
        "email": "sadas@codeaurora.org",
        "time": "Fri Jan 20 12:26:47 2012 -0700"
      },
      "message": "mm: ashmem: Make sure vma is valid while flushing\n\nEnsure that the vma that the ashmem region is tied to\nis valid before flushing and hold the mm semaphore so\nthat the vma does not get destroyed from under while\nit\u0027s being flushed.\n\nCRs-Fixed: 326685\nChange-Id: I86320ffe9e6570e6ffa7dda68ab26be7aed86afd\nSigned-off-by: Shubhraprakash Das \u003csadas@codeaurora.org\u003e\n"
    },
    {
      "commit": "b5cf8a409a1c272b85d66d64607d5328da48c6c1",
      "tree": "9b5382a6db0f37f25d3a4a53bb5645dc7ab44efb",
      "parents": [
        "1fe52638225e070a9730063d25f041293cf515d0",
        "45f580d9c36b93204882dffc6fb9f4a254c3d34a"
      ],
      "author": {
        "name": "Linux Build Service Account",
        "email": "lnxbuild@localhost",
        "time": "Fri Dec 09 13:32:33 2011 -0800"
      },
      "committer": {
        "name": "QuIC Gerrit Code Review",
        "email": "code-review@localhost",
        "time": "Fri Dec 09 13:32:33 2011 -0800"
      },
      "message": "Merge \"ARM: allow memory hotplug/hotremove\" into msm-3.0"
    },
    {
      "commit": "f077c70ec869660f6ca8188572d7c829952b23e3",
      "tree": "f9e184d54256555914de9c8f55647bb15831fdf1",
      "parents": [
        "1bcf72b08eab86755f21c32beb901eab96906b30",
        "59f9f1c9ae463a3d4499cd9353619f8b1993371b"
      ],
      "author": {
        "name": "Linux Build Service Account",
        "email": "lnxbuild@localhost",
        "time": "Fri Dec 09 02:43:11 2011 -0800"
      },
      "committer": {
        "name": "QuIC Gerrit Code Review",
        "email": "code-review@localhost",
        "time": "Fri Dec 09 02:43:11 2011 -0800"
      },
      "message": "Merge \"mm: Add total_unmovable_pages global variable\" into msm-3.0"
    },
    {
      "commit": "45f580d9c36b93204882dffc6fb9f4a254c3d34a",
      "tree": "33a4e6396ca4a73496274bf145a6fd5424f29ddb",
      "parents": [
        "c1ab5d376f687df0fd3fa9844c31a32161fbbc72"
      ],
      "author": {
        "name": "Bryan Huntsman",
        "email": "bryanh@codeaurora.org",
        "time": "Wed Nov 23 12:31:46 2011 -0800"
      },
      "committer": {
        "name": "Linux Build Service Account",
        "email": "lnxbuild@localhost",
        "time": "Fri Dec 09 01:22:18 2011 -0700"
      },
      "message": "ARM: allow memory hotplug/hotremove\n\nAdd ARM to the supported list of architectures for MEMORY_HOTPLUG.  For\nARM, the selection of MEMORY_HOTPLUG/REMOVE is specific to the sub-arch\nand has to be explicitly enabled by the sub-arch.\n\nSigned-off-by: Bryan Huntsman \u003cbryanh@codeaurora.org\u003e\n"
    },
    {
      "commit": "0174600ed1922f5d5f1928dd32194c0d4abf8f4f",
      "tree": "c5d540af782a705f0ad72abfcb3262a1c633f0af",
      "parents": [
        "eefbe8c3afe3ca643d7b7cb939dc0de492b32590",
        "d3d5691775a670ae1b73a6d0be47be705945afec"
      ],
      "author": {
        "name": "Linux Build Service Account",
        "email": "lnxbuild@localhost",
        "time": "Thu Dec 08 10:28:10 2011 -0800"
      },
      "committer": {
        "name": "QuIC Gerrit Code Review",
        "email": "code-review@localhost",
        "time": "Thu Dec 08 10:28:10 2011 -0800"
      },
      "message": "Merge \"slub: Enable backtrace for create/delete points\" into msm-3.0"
    },
    {
      "commit": "59f9f1c9ae463a3d4499cd9353619f8b1993371b",
      "tree": "c091bf4c74c696d412024d10ccb87e84b4c07d5e",
      "parents": [
        "c3a5a8cb8a7d082777d213cb6ff737450c5718a5"
      ],
      "author": {
        "name": "Jack Cheung",
        "email": "jackc@codeaurora.org",
        "time": "Tue Nov 29 16:52:49 2011 -0800"
      },
      "committer": {
        "name": "Jack Cheung",
        "email": "jackc@codeaurora.org",
        "time": "Tue Dec 06 15:00:36 2011 -0800"
      },
      "message": "mm: Add total_unmovable_pages global variable\n\nVmalloc will exit if the amount it needs to allocate is\ngreater than totalram_pages. Vmalloc cannot allocate\nfrom the movable zone, so pages in the movable zone should\nnot be counted.\n\nThis change adds a new global variable: total_unmovable_pages.\nIt is calculated in init.c, based on totalram_pages minus\nthe pages in the movable zone. Vmalloc now looks at this new\nglobal instead of totalram_pages.\n\ntotal_unmovable_pages can be modified during memory_hotplug.\nIf the zone you are offlining/onlining is unmovable, then\nyou modify it similar to totalram_pages.  If the zone is\nmovable, then no change is needed.\n\nChange-Id: Ie55c41051e9ad4b921eb04ecbb4798a8bd2344d6\nSigned-off-by: Jack Cheung \u003cjackc@codeaurora.org\u003e\n"
    },
    {
      "commit": "042f0e0b045f0c0ddcb1002c66c6370c7a5b8468",
      "tree": "958af21d3c904d2891180e4cd62079e944915f2f",
      "parents": [
        "5c5bed0c36d6389c426c617b122da6f73e15161a",
        "9f41da81017657a194a4e145bab337f13a4d7fd9"
      ],
      "author": {
        "name": "Linux Build Service Account",
        "email": "lnxbuild@localhost",
        "time": "Tue Dec 06 11:36:58 2011 -0800"
      },
      "committer": {
        "name": "QuIC Gerrit Code Review",
        "email": "code-review@localhost",
        "time": "Tue Dec 06 11:36:58 2011 -0800"
      },
      "message": "Merge \"mm: Cast lowmem_reserve to long\" into msm-3.0"
    },
    {
      "commit": "80c201e25e8dbc00427b73d90b1527c356526442",
      "tree": "618c4952e154c1bed45eb94b82a425e1dec79ebc",
      "parents": [
        "a699bce127690d87b5eb390068bae25b73dca19a"
      ],
      "author": {
        "name": "Jack Cheung",
        "email": "jackc@codeaurora.org",
        "time": "Tue Nov 29 16:53:34 2011 -0800"
      },
      "committer": {
        "name": "Jack Cheung",
        "email": "jackc@codeaurora.org",
        "time": "Sun Dec 04 17:14:03 2011 -0800"
      },
      "message": "mm: Fix zone-\u003epresent_pages underflow\n\nIf offlined_pages is greater than\nzone-\u003epresent_pages, underflow will occur.\n\nThis change will set zone-\u003epresent_pages to 0 if\nofflined_pages is greater.\n\nChange-Id: I728e90c60fb7fc391de7b9c4828ab264ca38653b\nSigned-off-by: Jack Cheung \u003cjackc@codeaurora.org\u003e\n"
    },
    {
      "commit": "d3d5691775a670ae1b73a6d0be47be705945afec",
      "tree": "d30d8a44bd66faa185259a70f9cc8d85029cf0cd",
      "parents": [
        "ce23e092e2a474141881b4b139bfb6ed9f842237"
      ],
      "author": {
        "name": "Ben Greear",
        "email": "greearb@candelatech.com",
        "time": "Thu Jul 07 11:36:36 2011 -0700"
      },
      "committer": {
        "name": "Stephen Boyd",
        "email": "sboyd@codeaurora.org",
        "time": "Thu Dec 01 17:05:34 2011 -0800"
      },
      "message": "slub: Enable backtrace for create/delete points\n\nThis patch attempts to grab a backtrace for the creation\nand deletion points of the slub object.  When a fault is\ndetected, we can then get a better idea of where the item\nwas deleted.\n\nExample output from debugging some funky nfs/rpc behaviour:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nBUG kmalloc-64: Object is on free-list\n-----------------------------------------------------------------------------\n\nINFO: Allocated in rpcb_getport_async+0x39c/0x5a5 [sunrpc] age\u003d381 cpu\u003d3 pid\u003d3750\n       __slab_alloc+0x348/0x3ba\n       kmem_cache_alloc_trace+0x67/0xe7\n       rpcb_getport_async+0x39c/0x5a5 [sunrpc]\n       call_bind+0x70/0x75 [sunrpc]\n       __rpc_execute+0x78/0x24b [sunrpc]\n       rpc_execute+0x3d/0x42 [sunrpc]\n       rpc_run_task+0x79/0x81 [sunrpc]\n       rpc_call_sync+0x3f/0x60 [sunrpc]\n       rpc_ping+0x42/0x58 [sunrpc]\n       rpc_create+0x4aa/0x527 [sunrpc]\n       nfs_create_rpc_client+0xb1/0xf6 [nfs]\n       nfs_init_client+0x3b/0x7d [nfs]\n       nfs_get_client+0x453/0x5ab [nfs]\n       nfs_create_server+0x10b/0x437 [nfs]\n       nfs_fs_mount+0x4ca/0x708 [nfs]\n       mount_fs+0x6b/0x152\nINFO: Freed in rpcb_map_release+0x3f/0x44 [sunrpc] age\u003d30 cpu\u003d2 pid\u003d29049\n       __slab_free+0x57/0x150\n       kfree+0x107/0x13a\n       rpcb_map_release+0x3f/0x44 [sunrpc]\n       rpc_release_calldata+0x12/0x14 [sunrpc]\n       rpc_free_task+0x59/0x61 [sunrpc]\n       rpc_final_put_task+0x82/0x8a [sunrpc]\n       __rpc_execute+0x23c/0x24b [sunrpc]\n       rpc_async_schedule+0x10/0x12 [sunrpc]\n       process_one_work+0x230/0x41d\n       worker_thread+0x133/0x217\n       kthread+0x7d/0x85\n       kernel_thread_helper+0x4/0x10\nINFO: Slab 0xffffea00029aa470 objects\u003d20 used\u003d9 fp\u003d0xffff8800be7830d8 flags\u003d0x20000000004081\nINFO: Object 0xffff8800be7830d8 @offset\u003d4312 fp\u003d0xffff8800be7827a8\n\nBytes b4 0xffff8800be7830c8:  87 a8 96 00 01 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a .�......ZZZZZZZZ\n Object 0xffff8800be7830d8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk\n Object 0xffff8800be7830e8:  6b 6b 6b 6b 01 08 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkk..kkkkkkkkkk\n Object 0xffff8800be7830f8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk\n Object 0xffff8800be783108:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkkkkkkkkkkkkk�\n Redzone 0xffff8800be783118:  bb bb bb bb bb bb bb bb                         �������������\n Padding 0xffff8800be783258:  5a 5a 5a 5a 5a 5a 5a 5a                         ZZZZZZZZ\nPid: 29049, comm: kworker/2:2 Not tainted 3.0.0-rc4+ #8\nCall Trace:\n [\u003cffffffff811055c3\u003e] print_trailer+0x131/0x13a\n [\u003cffffffff81105601\u003e] object_err+0x35/0x3e\n [\u003cffffffff8110746f\u003e] verify_mem_not_deleted+0x7a/0xb7\n [\u003cffffffffa02851b5\u003e] rpcb_getport_done+0x23/0x126 [sunrpc]\n [\u003cffffffffa027d0ba\u003e] rpc_exit_task+0x3f/0x6d [sunrpc]\n [\u003cffffffffa027d4ab\u003e] __rpc_execute+0x78/0x24b [sunrpc]\n [\u003cffffffffa027d6c0\u003e] ? rpc_execute+0x42/0x42 [sunrpc]\n [\u003cffffffffa027d6d0\u003e] rpc_async_schedule+0x10/0x12 [sunrpc]\n [\u003cffffffff810611b7\u003e] process_one_work+0x230/0x41d\n [\u003cffffffff81061102\u003e] ? process_one_work+0x17b/0x41d\n [\u003cffffffff81063613\u003e] worker_thread+0x133/0x217\n [\u003cffffffff810634e0\u003e] ? manage_workers+0x191/0x191\n [\u003cffffffff81066e10\u003e] kthread+0x7d/0x85\n [\u003cffffffff81485924\u003e] kernel_thread_helper+0x4/0x10\n [\u003cffffffff8147eb18\u003e] ? retint_restore_args+0x13/0x13\n [\u003cffffffff81066d93\u003e] ? __init_kthread_worker+0x56/0x56\n [\u003cffffffff81485920\u003e] ? gs_change+0x13/0x13\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Ben Greear \u003cgreearb@candelatech.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n\nSLUB: Fix missing \u003clinux/stacktrace.h\u003e include\n\nThis fixes the following build breakage commit d6543e3 (\"slub: Enable backtrace\nfor create/delete points\"):\n\n  CC      mm/slub.o\nmm/slub.c: In function ‘set_track’:\nmm/slub.c:428: error: storage size of ‘trace’ isn’t known\nmm/slub.c:435: error: implicit declaration of function ‘save_stack_trace’\nmm/slub.c:428: warning: unused variable ‘trace’\nmake[1]: *** [mm/slub.o] Error 1\nmake: *** [mm/slub.o] Error 2\n\nChange-Id: I5f5159a210d393d424e5c1d23a89dcb840f15d45\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nSigned-off-by: Stephen Boyd \u003csboyd@codeaurora.org\u003e\n"
    },
    {
      "commit": "9f41da81017657a194a4e145bab337f13a4d7fd9",
      "tree": "b620a8cd103d0d10f6fec9692b0b58367306ac0d",
      "parents": [
        "2c60124cfd1fca38f961a88fbfcf2a0a96961e04"
      ],
      "author": {
        "name": "Jack Cheung",
        "email": "jackc@codeaurora.org",
        "time": "Mon Nov 28 16:41:28 2011 -0800"
      },
      "committer": {
        "name": "Jack Cheung",
        "email": "jackc@codeaurora.org",
        "time": "Tue Nov 29 18:28:05 2011 -0800"
      },
      "message": "mm: Cast lowmem_reserve to long\n\nz-\u003elowmem_reserve[classzone_idx] is an unsigned long but\nfree_pages and min are longs. If free_pages is\nnegative, the function will incorrectly return true\nbecause it will treat the negative long as a large,\npositive unsigned long.\n\nThis change casts z-\u003elowmem_reserve to a long and\nfixes a typo in the comment.\n\nChange-Id: Icada1fa5ca650fbcdb0656f637adbb98f223eec5\nSigned-off-by: Jack Cheung \u003cjackc@codeaurora.org\u003e\n"
    },
    {
      "commit": "1e6ec3c7e399aa84d29ced48b16a91acaba962f0",
      "tree": "aa4b5ab13a9f6d9c689110871d4a2473a26f8021",
      "parents": [
        "e2edeb1d2beeb3285bc4d64ac8f84048b1a060e0"
      ],
      "author": {
        "name": "Jack Cheung",
        "email": "jackc@codeaurora.org",
        "time": "Mon Nov 21 16:44:05 2011 -0800"
      },
      "committer": {
        "name": "Jack Cheung",
        "email": "jackc@codeaurora.org",
        "time": "Tue Nov 22 17:57:00 2011 -0800"
      },
      "message": "mm: Fix infinite loop when offlining\n\nWhen page migration is unable to find free memory it\nwill go into an infinite loop because the\nall_unreclaimable flag is never set.\n\nThis change will allow memory offlining to fail\ngracefully if there is not enough memory for page\nmigration.\n\n__GFP_NORETRY tells the page_alloc to not retry.\n__GFP_NOWARN suppresses page fault warnings when\npage allocation fails.\n__GFP_NOMEMALLOC prevents it from aggressively\nallocating beyond zone watermarks.\n\nChange-Id: I94dfd9059851c7b24953f44a4018a3bbac840688\nSigned-off-by: Jack Cheung \u003cjackc@codeaurora.org\u003e\n"
    },
    {
      "commit": "d074fa2796bdbc42c4f918c78d6711bafc80b1c8",
      "tree": "033929706a0aae95f65c134a8fc09cec3fb3e75d",
      "parents": [
        "53ae1740b250e4d02dd7a6ca82075355ad99dc23",
        "9ab6a29787b1221a697f85835645549668258bdc"
      ],
      "author": {
        "name": "Bryan Huntsman",
        "email": "bryanh@codeaurora.org",
        "time": "Wed Nov 16 13:52:50 2011 -0800"
      },
      "committer": {
        "name": "Bryan Huntsman",
        "email": "bryanh@codeaurora.org",
        "time": "Wed Nov 16 13:52:50 2011 -0800"
      },
      "message": "Merge remote-tracking branch \u0027common/android-3.0\u0027 into msm-3.0\n\n* common/android-3.0: (570 commits)\n  misc: remove kernel debugger core\n  ARM: common: fiq_debugger: dump sysrq directly to console if enabled\n  ARM: common: fiq_debugger: add irq context debug functions\n  net: wireless: bcmdhd: Call init_ioctl() only if was started properly for WEXT\n  net: wireless: bcmdhd: Call init_ioctl() only if was started properly\n  net: wireless: bcmdhd: Fix possible memory leak in escan/iscan\n  cpufreq: interactive governor: default 20ms timer\n  cpufreq: interactive governor: go to intermediate hi speed before max\n  cpufreq: interactive governor: scale to max only if at min speed\n  cpufreq: interactive governor: apply intermediate load on current speed\n  ARM: idle: update idle ticks before call idle end notifier\n  input: gpio_input: don\u0027t print debounce message unless flag is set\n  net: wireless: bcm4329: Skip dhd_bus_stop() if bus is already down\n  net: wireless: bcmdhd: Skip dhd_bus_stop() if bus is already down\n  net: wireless: bcmdhd: Improve suspend/resume processing\n  net: wireless: bcmdhd: Check if FW is Ok for internal FW call\n  tcp: Don\u0027t nuke connections for the wrong protocol\n  ARM: common: fiq_debugger: make uart irq be no_suspend\n  net: wireless: Skip connect warning for CONFIG_CFG80211_ALLOW_RECONNECT\n  mm: avoid livelock on !__GFP_FS allocations\n  ...\n\nConflicts:\n\tarch/arm/mm/cache-l2x0.c\n\tarch/arm/vfp/vfpmodule.c\n\tdrivers/mmc/core/host.c\n\tkernel/power/wakelock.c\n\tnet/bluetooth/hci_event.c\n\nSigned-off-by: Bryan Huntsman \u003cbryanh@codeaurora.org\u003e\n"
    },
    {
      "commit": "0ce69296517f3410a174ced44b39eea746a94c55",
      "tree": "3032eb3abbcd8c1e9e3cc4adb3a55b9beb84f6b1",
      "parents": [
        "ea1c8d08bc9e71723869f7e754aa1d57c56f55ce"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 28 10:57:00 2011 +0200"
      },
      "committer": {
        "name": "Olav Haugan",
        "email": "ohaugan@codeaurora.org",
        "time": "Mon Nov 07 15:46:06 2011 -0800"
      },
      "message": "memblock: Make memblock functions handle overflowing range @size\n\nAllow memblock users to specify range where @base + @size overflows\nand automatically cap it at maximum.  This makes the interface more\nrobust and specifying till-the-end-of-memory easier.\n\nChange-Id: Iad3e1ce69a11ac7d3e5490eec56baf8468bd134a\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\n[ohaugan@codeaurora.org: Fix merge conflict in memblock_add_region]\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "3c0e977e524ba9071755707f168da8e4dc692606",
      "tree": "30254e9328420863e44beb91807232720fc3c9b6",
      "parents": [
        "0f8be3a00c5d1ac628076866d9eefdbadb23a4f2",
        "e6436864f939e77226c8e971610539649ed5f869"
      ],
      "author": {
        "name": "Linux Build Service Account",
        "email": "lnxbuild@localhost",
        "time": "Wed Nov 02 13:44:29 2011 -0700"
      },
      "committer": {
        "name": "QuIC Gerrit Code Review",
        "email": "code-review@localhost",
        "time": "Wed Nov 02 13:44:29 2011 -0700"
      },
      "message": "Merge changes I0b858c73,I285c6ad2,Ibecda03c into msm-3.0\n\n* changes:\n  mm: use required fixed size of movable zone if FIX_MOVABLE_ZONE\n  arm: ensure enough memory is available for movable zone\n  arm: add CONFIG_FIX_MOVABLE_ZONE\n"
    },
    {
      "commit": "481d4d2f29e7392146f4035fe50294bb87fad986",
      "tree": "e04a1287310f8a9d7b96c100388868ca0d564868",
      "parents": [
        "eae0020fdc1595d6bef53454b9cdedf3ed6ee924",
        "31c1431883a33122418f6133ae6aab8f25153922"
      ],
      "author": {
        "name": "Linux Build Service Account",
        "email": "lnxbuild@localhost",
        "time": "Tue Nov 01 21:30:48 2011 -0700"
      },
      "committer": {
        "name": "QuIC Gerrit Code Review",
        "email": "code-review@localhost",
        "time": "Tue Nov 01 21:30:48 2011 -0700"
      },
      "message": "Merge changes I99787ed3,I2ae66a56 into msm-3.0\n\n* changes:\n  slub: fix check_bytes() for slub debugging\n  slub: reduce overhead of slub_debug\n"
    },
    {
      "commit": "e6436864f939e77226c8e971610539649ed5f869",
      "tree": "328e285f17460eb3287730e520648c624c7ca717",
      "parents": [
        "f973fab692184e457095957336468146439f0a6e"
      ],
      "author": {
        "name": "Larry Bassel",
        "email": "lbassel@codeaurora.org",
        "time": "Fri Oct 14 10:59:07 2011 -0700"
      },
      "committer": {
        "name": "Larry Bassel",
        "email": "lbassel@codeaurora.org",
        "time": "Sun Oct 30 09:14:51 2011 -0700"
      },
      "message": "mm: use required fixed size of movable zone if FIX_MOVABLE_ZONE\n\nIf FIX_MOVABLE_ZONE is enabled, we want a specific size and\nlocation of ZONE_MOVABLE.\n\nChange-Id: I0b858c7310cd328e1118abc9d5fe6f364bb4ffad\nSigned-off-by: Larry Bassel \u003clbassel@codeaurora.org\u003e\n"
    },
    {
      "commit": "31c1431883a33122418f6133ae6aab8f25153922",
      "tree": "6deb94fff053440bb09704b83beacb0adfd632c6",
      "parents": [
        "ef28462edecef3107caca1a9d74dc31a13afc43e"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Sun Aug 07 18:30:38 2011 +0900"
      },
      "committer": {
        "name": "Stephen Boyd",
        "email": "sboyd@codeaurora.org",
        "time": "Fri Oct 28 15:42:42 2011 -0700"
      },
      "message": "slub: fix check_bytes() for slub debugging\n\nThe check_bytes() function is used by slub debugging.  It returns a pointer\nto the first unmatching byte for a character in the given memory area.\n\nIf the character for matching byte is greater than 0x80, check_bytes()\ndoesn\u0027t work.  Becuase 64-bit pattern is generated as below.\n\n\tvalue64 \u003d value | value \u003c\u003c 8 | value \u003c\u003c 16 | value \u003c\u003c 24;\n\tvalue64 \u003d value64 | value64 \u003c\u003c 32;\n\nThe integer promotions are performed and sign-extended as the type of value\nis u8.  The upper 32 bits of value64 is 0xffffffff in the first line, and\nthe second line has no effect.\n\nThis fixes the 64-bit pattern generation.\n\nChange-Id: I99787ed3da5ba0a112cb0d307d428adf032bb950\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nReviewed-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nSigned-off-by: Stephen Boyd \u003csboyd@codeaurora.org\u003e\n"
    },
    {
      "commit": "ef28462edecef3107caca1a9d74dc31a13afc43e",
      "tree": "ad4a535352d1767030b0048c8c9871e0240486a8",
      "parents": [
        "804c6b5a2672e2603d90ec6e1861a615b8ab0157"
      ],
      "author": {
        "name": "Marcin Slusarz",
        "email": "marcin.slusarz@gmail.com",
        "time": "Sun Jun 26 21:39:18 2011 +0200"
      },
      "committer": {
        "name": "Stephen Boyd",
        "email": "sboyd@codeaurora.org",
        "time": "Fri Oct 28 15:42:41 2011 -0700"
      },
      "message": "slub: reduce overhead of slub_debug\n\nslub checks for poison one byte by one, which is highly inefficient\nand shows up frequently as a highest cpu-eater in perf top.\n\nJoining reads gives nice speedup:\n\n(Compiling some project with different options)\n                                 make -j12    make clean\nslub_debug disabled:             1m 27s       1.2 s\nslub_debug enabled:              1m 46s       7.6 s\nslub_debug enabled + this patch: 1m 33s       3.2 s\n\ncheck_bytes still shows up high, but not always at the top.\n\nChange-Id: I2ae66a5617d6f240d082da9419de8604b8ebe5bb\nSigned-off-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: linux-mm@kvack.org\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nSigned-off-by: Stephen Boyd \u003csboyd@codeaurora.org\u003e\n"
    },
    {
      "commit": "2bb3e310159b65c88caf0c67a20ed257568be267",
      "tree": "e4ad01c06a9e27939781c5dd9d0cb92e6fcd54d5",
      "parents": [
        "2f53cb72c1574d3880d9e88e254b756565fe2f6d",
        "97596c34030ed28657ccafddb67e17a03890b90a"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Oct 27 15:01:19 2011 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Oct 27 15:01:19 2011 -0700"
      },
      "message": "Merge commit \u0027v3.0.8\u0027 into android-3.0\n"
    },
    {
      "commit": "2f53cb72c1574d3880d9e88e254b756565fe2f6d",
      "tree": "1defa097001d4eab5cd7cefe4e9e62c7b14c52ca",
      "parents": [
        "f41047365480510bfb12260d9f4fc7a8b95a734e"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Oct 24 16:33:42 2011 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Oct 26 21:49:46 2011 -0700"
      },
      "message": "mm: avoid livelock on !__GFP_FS allocations\n\nUnder the following conditions, __alloc_pages_slowpath can loop\nforever:\ngfp_mask \u0026 __GFP_WAIT is true\ngfp_mask \u0026 __GFP_FS is false\nreclaim and compaction make no progress\norder \u003c\u003d PAGE_ALLOC_COSTLY_ORDER\n\nThe gfp conditions are normally invalid, because !__GFP_FS\ndisables most of the reclaim methods that __GFP_WAIT would\nwait for.  However, these conditions happen very often during\nsuspend and resume, when pm_restrict_gfp_mask() effectively\nconverts all GFP_KERNEL allocations into __GFP_WAIT.\n\nThe oom killer is not run because gfp_mask \u0026 __GFP_FS is false,\nbut should_alloc_retry will always return true when order is less\nthan PAGE_ALLOC_COSTLY_ORDER.  __alloc_pages_slowpath will\nloop forever between the rebalance label and should_alloc_retry,\nunless another thread happens to release enough pages to satisfy\nthe allocation.\n\nAdd a check to detect when PM has disabled __GFP_FS, and do not\nretry if reclaim is not making any progress.\n\n[taken from patch on lkml by Mel Gorman, commit message by ccross]\nChange-Id: I864a24e9d9fd98bd0e3d6e9c1e85b6c1b766850e\nSigned-off-by: Colin Cross \u003cccross@android.com\u003e\n"
    },
    {
      "commit": "2421717cb10a06814d7bdb431485aa3a5e364f36",
      "tree": "3c68d4b1a5c5e6ac951bd95908f7bf156a963b9f",
      "parents": [
        "bedd1c6828e5e97ebfdd74fbdee404252cb9b8f2"
      ],
      "author": {
        "name": "Larry Bassel",
        "email": "lbassel@codeaurora.org",
        "time": "Fri Oct 14 10:36:45 2011 -0700"
      },
      "committer": {
        "name": "Larry Bassel",
        "email": "lbassel@codeaurora.org",
        "time": "Tue Oct 25 14:33:46 2011 -0700"
      },
      "message": "mm: make physical memory offline work\n\nIn recent versions, the platform specific physical\noffline returns the number of bytes offlined, so\na value of 0 indicates an error, not success as in\nolder versions. Make sure that the memory\nfor the original memory resource nodes is not\nfreed via kfree, as this memory was obtained\nfrom alloc_bootmem very early in the system\u0027s life.\n\nChange-Id: Iffcdd8be4483e043d7605fce596ed438b15f3e02\nSigned-off-by: Larry Bassel \u003clbassel@codeaurora.org\u003e\n"
    },
    {
      "commit": "6b2f66dc9cabb7eb348587fdac6b3a64545e2d5f",
      "tree": "4800442831a0c82882c893f2516e999772c723ed",
      "parents": [
        "63e010153fc0f683bb1170917874824a1927ef69"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Oct 19 12:50:35 2011 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Oct 25 07:10:17 2011 +0200"
      },
      "message": "mm: fix race between mremap and removing migration entry\n\ncommit 486cf46f3f9be5f2a966016c1a8fe01e32cde09e upstream.\n\nI don\u0027t usually pay much attention to the stale \"? \" addresses in\nstack backtraces, but this lucky report from Pawel Sikora hints that\nmremap\u0027s move_ptes() has inadequate locking against page migration.\n\n 3.0 BUG_ON(!PageLocked(p)) in migration_entry_to_page():\n kernel BUG at include/linux/swapops.h:105!\n RIP: 0010:[\u003cffffffff81127b76\u003e]  [\u003cffffffff81127b76\u003e]\n                       migration_entry_wait+0x156/0x160\n  [\u003cffffffff811016a1\u003e] handle_pte_fault+0xae1/0xaf0\n  [\u003cffffffff810feee2\u003e] ? __pte_alloc+0x42/0x120\n  [\u003cffffffff8112c26b\u003e] ? do_huge_pmd_anonymous_page+0xab/0x310\n  [\u003cffffffff81102a31\u003e] handle_mm_fault+0x181/0x310\n  [\u003cffffffff81106097\u003e] ? vma_adjust+0x537/0x570\n  [\u003cffffffff81424bed\u003e] do_page_fault+0x11d/0x4e0\n  [\u003cffffffff81109a05\u003e] ? do_mremap+0x2d5/0x570\n  [\u003cffffffff81421d5f\u003e] page_fault+0x1f/0x30\n\nmremap\u0027s down_write of mmap_sem, together with i_mmap_mutex or lock,\nand pagetable locks, were good enough before page migration (with its\nrequirement that every migration entry be found) came in, and enough\nwhile migration always held mmap_sem; but not enough nowadays, when\nthere\u0027s memory hotremove and compaction.\n\nThe danger is that move_ptes() lets a migration entry dodge around\nbehind remove_migration_pte()\u0027s back, so it\u0027s in the old location when\nlooking at the new, then in the new location when looking at the old.\n\nEither mremap\u0027s move_ptes() must additionally take anon_vma lock(), or\nmigration\u0027s remove_migration_pte() must stop peeking for is_swap_entry()\nbefore it takes pagetable lock.\n\nConsensus chooses the latter: we prefer to add overhead to migration\nthan to mremapping, which gets used by JVMs and by exec stack setup.\n\nReported-and-tested-by: Paweł Sikora \u003cpluto@agmk.net\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "94f202a4c2fdf9d1dbd153d2906952764e83e652",
      "tree": "3487a0856c4d35f7d04c0de1a360cf29a601ba6e",
      "parents": [
        "3ce4a81bc3dd15cbb371246ad0daa909346ff0bd"
      ],
      "author": {
        "name": "Laura Abbott",
        "email": "lauraa@codeaurora.org",
        "time": "Fri Oct 07 13:51:58 2011 -0700"
      },
      "committer": {
        "name": "Laura Abbott",
        "email": "lauraa@codeaurora.org",
        "time": "Sat Oct 15 11:55:03 2011 -0700"
      },
      "message": "kmemleak: Add support for memory hotplug\n\nEnsure that memory hotplug can co-exist with kmemleak\nby taking the hotplug lock before scanning the memory\nbanks.\n\nChange-Id: Ice6e5eaac45b4d71848ff1d3f30d468c1f088232\nSigned-off-by: Laura Abbott \u003clauraa@codeaurora.org\u003e\n"
    },
    {
      "commit": "e19fe0341717e9f9a9d04dbc6e3365886e95b577",
      "tree": "5571141cf7abbf6e1d848f45b1c2535f63bb693f",
      "parents": [
        "81aac2ec5c236e54389d8940da0d318dd23e06ee"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Jul 26 16:08:24 2011 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Oct 03 11:41:08 2011 -0700"
      },
      "message": "memcg: fix vmscan count in small memcgs\n\ncommit 4508378b9523e22a2a0175d8bf64d932fb10a67d upstream.\n\nCommit 246e87a93934 (\"memcg: fix get_scan_count() for small targets\")\nfixes the memcg/kswapd behavior against small targets and prevent vmscan\npriority too high.\n\nBut the implementation is too naive and adds another problem to small\nmemcg.  It always force scan to 32 pages of file/anon and doesn\u0027t handle\nswappiness and other rotate_info.  It makes vmscan to scan anon LRU\nregardless of swappiness and make reclaim bad.  This patch fixes it by\nadjusting scanning count with regard to swappiness at el.\n\nAt a test \"cat 1G file under 300M limit.\" (swappiness\u003d20)\n before patch\n        scanned_pages_by_limit 360919\n        scanned_anon_pages_by_limit 180469\n        scanned_file_pages_by_limit 180450\n        rotated_pages_by_limit 31\n        rotated_anon_pages_by_limit 25\n        rotated_file_pages_by_limit 6\n        freed_pages_by_limit 180458\n        freed_anon_pages_by_limit 19\n        freed_file_pages_by_limit 180439\n        elapsed_ns_by_limit 429758872\n after patch\n        scanned_pages_by_limit 180674\n        scanned_anon_pages_by_limit 24\n        scanned_file_pages_by_limit 180650\n        rotated_pages_by_limit 35\n        rotated_anon_pages_by_limit 24\n        rotated_file_pages_by_limit 11\n        freed_pages_by_limit 180634\n        freed_anon_pages_by_limit 0\n        freed_file_pages_by_limit 180634\n        elapsed_ns_by_limit 367119089\n        scanned_pages_by_system 0\n\nthe numbers of scanning anon are decreased(as expected), and elapsed time\nreduced. By this patch, small memcgs will work better.\n(*) Because the amount of file-cache is much bigger than anon,\n    recalaim_stat\u0027s rotate-scan counter make scanning files more.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "ac693061b11c33d5a5c5ec1925de7abd3fcb0971",
      "tree": "968e4efb688a21caedd5a3e7baea3d6343abf4bd",
      "parents": [
        "0d39ea76fa3b9a97e9dc45282613bc239ffa8509"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Sun Jun 06 10:38:15 2010 -0600"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Oct 03 11:40:43 2011 -0700"
      },
      "message": "writeback: introduce .tagged_writepages for the WB_SYNC_NONE sync stage\n\ncommit 6e6938b6d3130305a5960c86b1a9b21e58cf6144 upstream.\n\nsync(2) is performed in two stages: the WB_SYNC_NONE sync and the\nWB_SYNC_ALL sync. Identify the first stage with .tagged_writepages and\ndo livelock prevention for it, too.\n\nJan\u0027s commit f446daaea9 (\"mm: implement writeback livelock avoidance\nusing page tagging\") is a partial fix in that it only fixed the\nWB_SYNC_ALL phase livelock.\n\nAlthough ext4 is tested to no longer livelock with commit f446daaea9,\nit may due to some \"redirty_tail() after pages_skipped\" effect which\nis by no means a guarantee for _all_ the file systems.\n\nNote that writeback_inodes_sb() is called by not only sync(), they are\ntreated the same because the other callers also need livelock prevention.\n\nImpact:  It changes the order in which pages/inodes are synced to disk.\nNow in the WB_SYNC_NONE stage, it won\u0027t proceed to write the next inode\nuntil finished with the current inode.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCC: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "d63c8a029e509ad48ee9290874731789f9008537",
      "tree": "0a7c79f56bbc8a624d09486cdc88c5a7d1f872ae",
      "parents": [
        "97abc52eb26f2ae8d033100c4c024e6138bdfd60"
      ],
      "author": {
        "name": "David Vrabel",
        "email": "david.vrabel@citrix.com",
        "time": "Wed Sep 14 16:22:02 2011 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Oct 03 11:40:30 2011 -0700"
      },
      "message": "mm: sync vmalloc address space page tables in alloc_vm_area()\n\ncommit 461ae488ecb125b140d7ea29ceeedbcce9327003 upstream.\n\nXen backend drivers (e.g., blkback and netback) would sometimes fail to\nmap grant pages into the vmalloc address space allocated with\nalloc_vm_area().  The GNTTABOP_map_grant_ref would fail because Xen could\nnot find the page (in the L2 table) containing the PTEs it needed to\nupdate.\n\n(XEN) mm.c:3846:d0 Could not find L1 PTE for address fbb42000\n\nnetback and blkback were making the hypercall from a kernel thread where\ntask-\u003eactive_mm !\u003d \u0026init_mm and alloc_vm_area() was only updating the page\ntables for init_mm.  The usual method of deferring the update to the page\ntables of other processes (i.e., after taking a fault) doesn\u0027t work as a\nfault cannot occur during the hypercall.\n\nThis would work on some systems depending on what else was using vmalloc.\n\nFix this by reverting ef691947d8a3 (\"vmalloc: remove vmalloc_sync_all()\nfrom alloc_vm_area()\") and add a comment to explain why it\u0027s needed.\n\nSigned-off-by: David Vrabel \u003cdavid.vrabel@citrix.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nCc: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nCc: Ian Campbell \u003cIan.Campbell@citrix.com\u003e\nCc: Keir Fraser \u003ckeir.xen@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "66d52cb7c42a5df2a6aded5f29dba98ac2882064",
      "tree": "6d154119840cec22ecaeda4cc76a5d9d412d5e09",
      "parents": [
        "42274b5f8129467095e8b907b5bc9536caf30fa8"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Jul 25 17:12:30 2011 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Oct 03 11:40:04 2011 -0700"
      },
      "message": "mm: page allocator: reconsider zones for allocation after direct reclaim\n\ncommit 76d3fbf8fbf6cc78ceb63549e0e0c5bc8a88f838 upstream.\n\nWith zone_reclaim_mode enabled, it\u0027s possible for zones to be considered\nfull in the zonelist_cache so they are skipped in the future.  If the\nprocess enters direct reclaim, the ZLC may still consider zones to be full\neven after reclaiming pages.  Reconsider all zones for allocation if\ndirect reclaim returns successfully.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Stefan Priebe \u003cs.priebe@profihost.ag\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "42274b5f8129467095e8b907b5bc9536caf30fa8",
      "tree": "9f4d0a531adab1763b673a081e49704c481f1d09",
      "parents": [
        "10927d967aa3e7031b0a573be8f002af607e6227"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Jul 25 17:12:29 2011 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Oct 03 11:40:04 2011 -0700"
      },
      "message": "mm: page allocator: initialise ZLC for first zone eligible for zone_reclaim\n\ncommit cd38b115d5ad79b0100ac6daa103c4fe2c50a913 upstream.\n\nThere have been a small number of complaints about significant stalls\nwhile copying large amounts of data on NUMA machines reported on a\ndistribution bugzilla.  In these cases, zone_reclaim was enabled by\ndefault due to large NUMA distances.  In general, the complaints have not\nbeen about the workload itself unless it was a file server (in which case\nthe recommendation was disable zone_reclaim).\n\nThe stalls are mostly due to significant amounts of time spent scanning\nthe preferred zone for pages to free.  After a failure, it might fallback\nto another node (as zonelists are often node-ordered rather than\nzone-ordered) but stall quickly again when the next allocation attempt\noccurs.  In bad cases, each page allocated results in a full scan of the\npreferred zone.\n\nPatch 1 checks the preferred zone for recent allocation failure\n        which is particularly important if zone_reclaim has failed\n        recently.  This avoids rescanning the zone in the near future and\n        instead falling back to another node.  This may hurt node locality\n        in some cases but a failure to zone_reclaim is more expensive than\n        a remote access.\n\nPatch 2 clears the zlc information after direct reclaim.\n        Otherwise, zone_reclaim can mark zones full, direct reclaim can\n        reclaim enough pages but the zone is still not considered for\n        allocation.\n\nThis was tested on a 24-thread 2-node x86_64 machine.  The tests were\nfocused on large amounts of IO.  All tests were bound to the CPUs on\nnode-0 to avoid disturbances due to processes being scheduled on different\nnodes.  The kernels tested are\n\n3.0-rc6-vanilla\t\tVanilla 3.0-rc6\nzlcfirst\t\tPatch 1 applied\nzlcreconsider\t\tPatches 1+2 applied\n\nFS-Mark\n./fs_mark  -d  /tmp/fsmark-10813  -D  100  -N  5000  -n  208  -L  35  -t  24  -S0  -s  524288\n                fsmark-3.0-rc6       3.0-rc6       \t\t3.0-rc6\n                   vanilla\t\t\t zlcfirs \tzlcreconsider\nFiles/s  min          54.90 ( 0.00%)       49.80 (-10.24%)       49.10 (-11.81%)\nFiles/s  mean        100.11 ( 0.00%)      135.17 (25.94%)      146.93 (31.87%)\nFiles/s  stddev       57.51 ( 0.00%)      138.97 (58.62%)      158.69 (63.76%)\nFiles/s  max         361.10 ( 0.00%)      834.40 (56.72%)      802.40 (55.00%)\nOverhead min       76704.00 ( 0.00%)    76501.00 ( 0.27%)    77784.00 (-1.39%)\nOverhead mean    1485356.51 ( 0.00%)  1035797.83 (43.40%)  1594680.26 (-6.86%)\nOverhead stddev  1848122.53 ( 0.00%)   881489.88 (109.66%)  1772354.90 ( 4.27%)\nOverhead max     7989060.00 ( 0.00%)  3369118.00 (137.13%) 10135324.00 (-21.18%)\nMMTests Statistics: duration\nUser/Sys Time Running Test (seconds)        501.49    493.91    499.93\nTotal Elapsed Time (seconds)               2451.57   2257.48   2215.92\n\nMMTests Statistics: vmstat\nPage Ins                                       46268       63840       66008\nPage Outs                                   90821596    90671128    88043732\nSwap Ins                                           0           0           0\nSwap Outs                                          0           0           0\nDirect pages scanned                        13091697     8966863     8971790\nKswapd pages scanned                               0     1830011     1831116\nKswapd pages reclaimed                             0     1829068     1829930\nDirect pages reclaimed                      13037777     8956828     8648314\nKswapd efficiency                               100%         99%         99%\nKswapd velocity                                0.000     810.643     826.346\nDirect efficiency                                99%         99%         96%\nDirect velocity                             5340.128    3972.068    4048.788\nPercentage direct scans                         100%         83%         83%\nPage writes by reclaim                             0           3           0\nSlabs scanned                                 796672      720640      720256\nDirect inode steals                          7422667     7160012     7088638\nKswapd inode steals                                0     1736840     2021238\n\nTest completes far faster with a large increase in the number of files\ncreated per second.  Standard deviation is high as a small number of\niterations were much higher than the mean.  The number of pages scanned by\nzone_reclaim is reduced and kswapd is used for more work.\n\nLARGE DD\n               \t\t3.0-rc6       3.0-rc6       3.0-rc6\n                   \tvanilla     zlcfirst     zlcreconsider\ndownload tar           59 ( 0.00%)   59 ( 0.00%)   55 ( 7.27%)\ndd source files       527 ( 0.00%)  296 (78.04%)  320 (64.69%)\ndelete source          36 ( 0.00%)   19 (89.47%)   20 (80.00%)\nMMTests Statistics: duration\nUser/Sys Time Running Test (seconds)        125.03    118.98    122.01\nTotal Elapsed Time (seconds)                624.56    375.02    398.06\n\nMMTests Statistics: vmstat\nPage Ins                                     3594216      439368      407032\nPage Outs                                   23380832    23380488    23377444\nSwap Ins                                           0           0           0\nSwap Outs                                          0         436         287\nDirect pages scanned                        17482342    69315973    82864918\nKswapd pages scanned                               0      519123      575425\nKswapd pages reclaimed                             0      466501      522487\nDirect pages reclaimed                       5858054     2732949     2712547\nKswapd efficiency                               100%         89%         90%\nKswapd velocity                                0.000    1384.254    1445.574\nDirect efficiency                                33%          3%          3%\nDirect velocity                            27991.453  184832.737  208171.929\nPercentage direct scans                         100%         99%         99%\nPage writes by reclaim                             0        5082       13917\nSlabs scanned                                  17280       29952       35328\nDirect inode steals                           115257     1431122      332201\nKswapd inode steals                                0           0      979532\n\nThis test downloads a large tarfile and copies it with dd a number of\ntimes - similar to the most recent bug report I\u0027ve dealt with.  Time to\ncompletion is reduced.  The number of pages scanned directly is still\ndisturbingly high with a low efficiency but this is likely due to the\nnumber of dirty pages encountered.  The figures could probably be improved\nwith more work around how kswapd is used and how dirty pages are handled\nbut that is separate work and this result is significant on its own.\n\nStreaming Mapped Writer\nMMTests Statistics: duration\nUser/Sys Time Running Test (seconds)        124.47    111.67    112.64\nTotal Elapsed Time (seconds)               2138.14   1816.30   1867.56\n\nMMTests Statistics: vmstat\nPage Ins                                       90760       89124       89516\nPage Outs                                  121028340   120199524   120736696\nSwap Ins                                           0          86          55\nSwap Outs                                          0           0           0\nDirect pages scanned                       114989363    96461439    96330619\nKswapd pages scanned                        56430948    56965763    57075875\nKswapd pages reclaimed                      27743219    27752044    27766606\nDirect pages reclaimed                         49777       46884       36655\nKswapd efficiency                                49%         48%         48%\nKswapd velocity                            26392.541   31363.631   30561.736\nDirect efficiency                                 0%          0%          0%\nDirect velocity                            53780.091   53108.759   51581.004\nPercentage direct scans                          67%         62%         62%\nPage writes by reclaim                           385         122        1513\nSlabs scanned                                  43008       39040       42112\nDirect inode steals                                0          10           8\nKswapd inode steals                              733         534         477\n\nThis test just creates a large file mapping and writes to it linearly.\nTime to completion is again reduced.\n\nThe gains are mostly down to two things.  In many cases, there is less\nscanning as zone_reclaim simply gives up faster due to recent failures.\nThe second reason is that memory is used more efficiently.  Instead of\nscanning the preferred zone every time, the allocator falls back to\nanother zone and uses it instead improving overall memory utilisation.\n\nThis patch: initialise ZLC for first zone eligible for zone_reclaim.\n\nThe zonelist cache (ZLC) is used among other things to record if\nzone_reclaim() failed for a particular zone recently.  The intention is to\navoid a high cost scanning extremely long zonelists or scanning within the\nzone uselessly.\n\nCurrently the zonelist cache is setup only after the first zone has been\nconsidered and zone_reclaim() has been called.  The objective was to avoid\na costly setup but zone_reclaim is itself quite expensive.  If it is\nfailing regularly such as the first eligible zone having mostly mapped\npages, the cost in scanning and allocation stalls is far higher than the\nZLC initialisation step.\n\nThis patch initialises ZLC before the first eligible zone calls\nzone_reclaim().  Once initialised, it is checked whether the zone failed\nzone_reclaim recently.  If it has, the zone is skipped.  As the first zone\nis now being checked, additional care has to be taken about zones marked\nfull.  A zone can be marked \"full\" because it should not have enough\nunmapped pages for zone_reclaim but this is excessive as direct reclaim or\nkswapd may succeed where zone_reclaim fails.  Only mark zones \"full\" after\nzone_reclaim fails if it failed to reclaim enough pages after scanning.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Stefan Priebe \u003cs.priebe@profihost.ag\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "5cd33b37653f4c32b9d8e992bab5938c37eae130",
      "tree": "1576740c74ae4192ace8f8131ab9e6b504d3fd67",
      "parents": [
        "a5ee43644bcdcae9146349ba5163d991cfca1324"
      ],
      "author": {
        "name": "Shubhraprakash Das",
        "email": "sadas@codeaurora.org",
        "time": "Mon Jul 18 18:07:10 2011 -0600"
      },
      "committer": {
        "name": "Bryan Huntsman",
        "email": "bryanh@codeaurora.org",
        "time": "Mon Oct 03 10:25:50 2011 -0700"
      },
      "message": "mm: ashmem: Add cache clean and invalidate ioctls for ashmem\n\nCRs-fixed: 291124\nSigned-off-by: Shubhraprakash Das \u003csadas@codeaurora.org\u003e\n"
    },
    {
      "commit": "7429cea50e3a0020a1bf0a6e9d596ebe2d3aba40",
      "tree": "ff1d279b5ffdf7bc0ce8c76260e9e779adce2252",
      "parents": [
        "15187778e4af8e8f675639dbc8c942aab3658f20"
      ],
      "author": {
        "name": "Larry Bassel",
        "email": "lbassel@codeaurora.org",
        "time": "Fri Jul 08 15:08:58 2011 -0700"
      },
      "committer": {
        "name": "Bryan Huntsman",
        "email": "bryanh@codeaurora.org",
        "time": "Mon Oct 03 09:58:55 2011 -0700"
      },
      "message": "pmem: remove support for unstable PMEM devices\n\nThis functionality has never been used, is ugly and\ncomplicates the DMM design.\n\nSigned-off-by: Larry Bassel \u003clbassel@codeaurora.org\u003e\n"
    },
    {
      "commit": "3f2bc4d6eb5a4fada842462ba22bb6bbb41d00c7",
      "tree": "088e0646c8abcbde263d13ee865ba69032ac86dd",
      "parents": [
        "f06154cc47399dfdb3950d3e6b71d67ee186f69d"
      ],
      "author": {
        "name": "Bryan Huntsman",
        "email": "bryanh@codeaurora.org",
        "time": "Tue Aug 16 17:27:22 2011 -0700"
      },
      "committer": {
        "name": "Bryan Huntsman",
        "email": "bryanh@codeaurora.org",
        "time": "Mon Oct 03 09:57:10 2011 -0700"
      },
      "message": "Initial Contribution\n\nmsm-2.6.38: tag AU_LINUX_ANDROID_GINGERBREAD.02.03.04.00.142\n\nSigned-off-by: Bryan Huntsman \u003cbryanh@codeaurora.org\u003e\n"
    },
    {
      "commit": "2366d7cc46e70064f33be79dc415b069d3122772",
      "tree": "a6d2655cd014bb268cdcba7bf6032df8f2970d52",
      "parents": [
        "a4e0b4cc115c938f75ca7cf24b0a739da846a6c7"
      ],
      "author": {
        "name": "Clemens Ladisch",
        "email": "clemens@ladisch.de",
        "time": "Tue Jun 21 22:09:50 2011 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Aug 17 10:55:53 2011 -0700"
      },
      "message": "mm: fix wrong vmap address calculations with odd NR_CPUS values\n\ncommit f982f91516fa4cfd9d20518833cd04ad714585be upstream.\n\nCommit db64fe02258f (\"mm: rewrite vmap layer\") introduced code that does\naddress calculations under the assumption that VMAP_BLOCK_SIZE is a\npower of two.  However, this might not be true if CONFIG_NR_CPUS is not\nset to a power of two.\n\nWrong vmap_block index/offset values could lead to memory corruption.\nHowever, this has never been observed in practice (or never been\ndiagnosed correctly); what caught this was the BUG_ON in vb_alloc() that\nchecks for inconsistent vmap_block indices.\n\nTo fix this, ensure that VMAP_BLOCK_SIZE always is a power of two.\n\nBugLink: https://bugzilla.kernel.org/show_bug.cgi?id\u003d31572\nReported-by: Pavel Kysilka \u003cgoldenfish@linuxsoft.cz\u003e\nReported-by: Matias A. Fonzo \u003cselk@dragora.org\u003e\nSigned-off-by: Clemens Ladisch \u003cclemens@ladisch.de\u003e\nSigned-off-by: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nCc: Krzysztof Helt \u003ckrzysztof.h1@poczta.fm\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "9abd59b0df155835a970c2b9c8f93367eb793797",
      "tree": "bcf0868f831d204e2b582113c53b8de3ff015eca",
      "parents": [
        "4e111751cfcb75f26d2725eab934b6eb91a3d115",
        "94ed5b4788a7cdbe68bc7cb8516972cbebdc8274"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Aug 10 18:07:59 2011 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Aug 10 18:07:59 2011 -0700"
      },
      "message": "Merge commit \u0027v3.0.1\u0027 into android-3.0\n"
    },
    {
      "commit": "4e111751cfcb75f26d2725eab934b6eb91a3d115",
      "tree": "b3d63b5b44bd2036db6e0f0b2e81769c84cc5ca3",
      "parents": [
        "ca64b0cd3a12d7704f4e98f4f5d51f41eb5047a2",
        "02f8c6aee8df3cdc935e9bdd4f2d020306035dbe"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Aug 10 18:04:30 2011 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Aug 10 18:04:30 2011 -0700"
      },
      "message": "Merge commit \u0027v3.0\u0027 into android-3.0\n"
    },
    {
      "commit": "84416db67616ae44e7111c1c904a53cc79b95b6a",
      "tree": "4a87402339a3488109972558c78a8b9c6840d30e",
      "parents": [
        "06b943855b6dbcc8cb3cdca954c19711ce7b76b6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Jul 30 16:35:02 2011 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Aug 04 21:58:42 2011 -0700"
      },
      "message": "oom: task-\u003emm \u003d\u003d NULL doesn\u0027t mean the memory was freed\n\ncommit c027a474a68065391c8773f6e83ed5412657e369 upstream.\n\nexit_mm() sets -\u003emm \u003d\u003d NULL then it does mmput()-\u003eexit_mmap() which\nfrees the memory.\n\nHowever select_bad_process() checks -\u003emm !\u003d NULL before TIF_MEMDIE,\nso it continues to kill other tasks even if we have the oom-killed\ntask freeing its memory.\n\nChange select_bad_process() to check -\u003emm after TIF_MEMDIE, but skip\nthe tasks which have already passed exit_notify() to ensure a zombie\nwith TIF_MEMDIE set can\u0027t block oom-killer. Alternatively we could\nprobably clear TIF_MEMDIE after exit_mmap().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "a6f0411fbde8a3677fc3e0843db68ca031fa727c",
      "tree": "09988678715828e045c0b3dfac6f33ee52698d38",
      "parents": [
        "ea530dbfb61aef022d468b597ce13c32da2fb944"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Tue Jul 26 16:08:25 2011 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Aug 04 21:58:41 2011 -0700"
      },
      "message": "memcg: fix behavior of mem_cgroup_resize_limit()\n\ncommit 108b6a78463bb8c7163e4f9779f36ad8bbade334 upstream.\n\nCommit 22a668d7c3ef (\"memcg: fix behavior under memory.limit equals to\nmemsw.limit\") introduced \"memsw_is_minimum\" flag, which becomes true\nwhen mem_limit \u003d\u003d memsw_limit.  The flag is checked at the beginning of\nreclaim, and \"noswap\" is set if the flag is true, because using swap is\nmeaningless in this case.\n\nThis works well in most cases, but when we try to shrink mem_limit,\nwhich is the same as memsw_limit now, we might fail to shrink mem_limit\nbecause swap doesn\u0027t used.\n\nThis patch fixes this behavior by:\n - check MEM_CGROUP_RECLAIM_SHRINK at the begining of reclaim\n - If it is set, don\u0027t set \"noswap\" flag even if memsw_is_minimum is true.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "650957da7699e730e78e82735b8c2595fcf7794a",
      "tree": "1f44a3a822a79e5f89eb6c71427d2576a087e7d5",
      "parents": [
        "b045b9a265fb46d8197b7d78aff1a8f6ab8e23df"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Mon Jul 25 17:11:57 2011 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Aug 04 21:58:39 2011 -0700"
      },
      "message": "mm/backing-dev.c: reset bdi min_ratio in bdi_unregister()\n\ncommit ccb6108f5b0b541d3eb332c3a73e645c0f84278e upstream.\n\nVito said:\n\n: The system has many usb disks coming and going day to day, with their\n: respective bdi\u0027s having min_ratio set to 1 when inserted.  It works for\n: some time until eventually min_ratio can no longer be set, even when the\n: active set of bdi\u0027s seen in /sys/class/bdi/*/min_ratio doesn\u0027t add up to\n: anywhere near 100.\n:\n: This then leads to an unrelated starvation problem caused by write-heavy\n: fuse mounts being used atop the usb disks, a problem the min_ratio setting\n: at the underlying devices bdi effectively prevents.\n\nFix this leakage by resetting the bdi min_ratio when unregistering the\nBDI.\n\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nReported-by: Vito Caputo \u003clkml@pengaru.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "b045b9a265fb46d8197b7d78aff1a8f6ab8e23df",
      "tree": "650daaba84981a7ac749611f2ccee133380940c5",
      "parents": [
        "cb83d9f7840657a0f0cc29ba5c01ce7320e28e9a"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Mon Jul 25 17:12:32 2011 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Aug 04 21:58:38 2011 -0700"
      },
      "message": "mm/futex: fix futex writes on archs with SW tracking of dirty \u0026 young\n\ncommit 2efaca927f5cd7ecd0f1554b8f9b6a9a2c329c03 upstream.\n\nI haven\u0027t reproduced it myself but the fail scenario is that on such\nmachines (notably ARM and some embedded powerpc), if you manage to hit\nthat futex path on a writable page whose dirty bit has gone from the PTE,\nyou\u0027ll livelock inside the kernel from what I can tell.\n\nIt will go in a loop of trying the atomic access, failing, trying gup to\n\"fix it up\", getting succcess from gup, go back to the atomic access,\nfailing again because dirty wasn\u0027t fixed etc...\n\nSo I think you essentially hang in the kernel.\n\nThe scenario is probably rare\u0027ish because affected architecture are\nembedded and tend to not swap much (if at all) so we probably rarely hit\nthe case where dirty is missing or young is missing, but I think Shan has\na piece of SW that can reliably reproduce it using a shared writable\nmapping \u0026 fork or something like that.\n\nOn archs who use SW tracking of dirty \u0026 young, a page without dirty is\neffectively mapped read-only and a page without young unaccessible in the\nPTE.\n\nAdditionally, some architectures might lazily flush the TLB when relaxing\nwrite protection (by doing only a local flush), and expect a fault to\ninvalidate the stale entry if it\u0027s still present on another processor.\n\nThe futex code assumes that if the \"in_atomic()\" access -EFAULT\u0027s, it can\n\"fix it up\" by causing get_user_pages() which would then be equivalent to\ntaking the fault.\n\nHowever that isn\u0027t the case.  get_user_pages() will not call\nhandle_mm_fault() in the case where the PTE seems to have the right\npermissions, regardless of the dirty and young state.  It will eventually\nupdate those bits ...  in the struct page, but not in the PTE.\n\nAdditionally, it will not handle the lazy TLB flushing that can be\nrequired by some architectures in the fault case.\n\nBasically, gup is the wrong interface for the job.  The patch provides a\nmore appropriate one which boils down to just calling handle_mm_fault()\nsince what we are trying to do is simulate a real page fault.\n\nThe futex code currently attempts to write to user memory within a\npagefault disabled section, and if that fails, tries to fix it up using\nget_user_pages().\n\nThis doesn\u0027t work on archs where the dirty and young bits are maintained\nby software, since they will gate access permission in the TLB, and will\nnot be updated by gup().\n\nIn addition, there\u0027s an expectation on some archs that a spurious write\nfault triggers a local TLB flush, and that is missing from the picture as\nwell.\n\nI decided that adding those \"features\" to gup() would be too much for this\nalready too complex function, and instead added a new simpler\nfixup_user_fault() which is essentially a wrapper around handle_mm_fault()\nwhich the futex code can call.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix some nits Darren saw, fiddle comment layout]\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nReported-by: Shan Hai \u003chaishan.bai@gmail.com\u003e\nTested-by: Shan Hai \u003chaishan.bai@gmail.com\u003e\nCc: David Laight \u003cDavid.Laight@ACULAB.COM\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Darren Hart \u003cdarren.hart@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "4746efded84d7c5a9c8d64d4c6e814ff0cf9fb42",
      "tree": "174f400db27c1a1d9a66407931199aabfdce6bba",
      "parents": [
        "f7b88631a89757d70192044c9d9f2e8d2fc02f2c"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Jul 19 08:49:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 19 22:09:31 2011 -0700"
      },
      "message": "vmscan: fix a livelock in kswapd\n\nI\u0027m running a workload which triggers a lot of swap in a machine with 4\nnodes.  After I kill the workload, I found a kswapd livelock.  Sometimes\nkswapd3 or kswapd2 are keeping running and I can\u0027t access filesystem,\nbut most memory is free.\n\nThis looks like a regression since commit 08951e545918c159 (\"mm: vmscan:\ncorrect check for kswapd sleeping in sleeping_prematurely\").\n\nNode 2 and 3 have only ZONE_NORMAL, but balance_pgdat() will return 0\nfor classzone_idx.  The reason is end_zone in balance_pgdat() is 0 by\ndefault, if all zones have watermark ok, end_zone will keep 0.\n\nLater sleeping_prematurely() always returns true.  Because this is an\norder 3 wakeup, and if classzone_idx is 0, both balanced_pages and\npresent_pages in pgdat_balanced() are 0.  We add a special case here.\nIf a zone has no page, we think it\u0027s balanced.  This fixes the livelock.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.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": "75c56a81116e51c5cf15c0641906d0745188cd16",
      "tree": "c1d8e7def5bbb099a39d5e9ccfb13508ea5ca46a",
      "parents": [
        "b4294d618e8a19bb47826e51ae52b9fb2fe05f80",
        "620917de59eeb934b9f8cf35cc2d95c1ac8ed0fc"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jul 12 20:10:37 2011 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jul 12 20:10:37 2011 -0700"
      },
      "message": "Merge commit \u0027v3.0-rc7\u0027 into android-3.0\n"
    },
    {
      "commit": "8f3b1327aa454bc8283e96bca7669c3c88b83f79",
      "tree": "c18f10d34bd41c9eeb74a64d5838ee8b6c0ce817",
      "parents": [
        "f607e7fc5fb94d92030c4527287e9c149ddf9e65"
      ],
      "author": {
        "name": "Bob Liu",
        "email": "lliubbo@gmail.com",
        "time": "Fri Jul 08 15:39:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 08 21:14:44 2011 -0700"
      },
      "message": "mm/nommu.c: fix remap_pfn_range()\n\nremap_pfn_range() means map physical address pfn\u003c\u003cPAGE_SHIFT to user addr.\n\nFor nommu arch it\u0027s implemented by vma-\u003evm_start \u003d pfn \u003c\u003c PAGE_SHIFT which\nis wrong acroding the original meaning of this function.  And some driver\ndeveloper using remap_pfn_range() with correct parameter will get\nunexpected result because vm_start is changed.  It should be implementd\nlike addr \u003d pfn \u003c\u003c PAGE_SHIFT but which is meanless on nommu arch, this\npatch just make it simply return.\n\nParameter name and setting of vma-\u003evm_flags also be fixed.\n\nSigned-off-by: Bob Liu \u003clliubbo@gmail.com\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Greg Ungerer \u003cgerg@uclinux.org\u003e\nCc: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: Bob Liu \u003clliubbo@gmail.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": "453a9bf347f1e22a5bb3605ced43b2366921221d",
      "tree": "dfe355892b8ace86f74f6b8a34ad86da159f697d",
      "parents": [
        "4d0c066d29f030d47d19678f8008933e67dd3b72"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 08 15:39:43 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 08 21:14:44 2011 -0700"
      },
      "message": "memcg: fix numa scan information update to be triggered by memory event\n\ncommit 889976dbcb12 (\"memcg: reclaim memory from nodes in round-robin\norder\") adds an numa node round-robin for memcg.  But the information is\nupdated once per 10sec.\n\nThis patch changes the update trigger from jiffies to memcg\u0027s event count.\n After this patch, numa scan information will be updated when we see 1024\nevents of pagein/pageout under a memcg.\n\n[akpm@linux-foundation.org: attempt to repair code layout]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4d0c066d29f030d47d19678f8008933e67dd3b72",
      "tree": "96f46e845b7a937b2e41b735061f696d2cb03293",
      "parents": [
        "0b43c3aab0137595335b08b340a3f3e5af9818a6"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 08 15:39:42 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 08 21:14:43 2011 -0700"
      },
      "message": "memcg: fix reclaimable lru check in memcg\n\nNow, in mem_cgroup_hierarchical_reclaim(), mem_cgroup_local_usage() is\nused for checking whether the memcg contains reclaimable pages or not.  If\nno pages in it, the routine skips it.\n\nBut, mem_cgroup_local_usage() contains Unevictable pages and cannot handle\n\"noswap\" condition correctly.  This doesn\u0027t work on a swapless system.\n\nThis patch adds test_mem_cgroup_reclaimable() and replaces\nmem_cgroup_local_usage().  test_mem_cgroup_reclaimable() see LRU counter\nand returns correct answer to the caller.  And this new function has\n\"noswap\" argument and can see only FILE LRU if necessary.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix kerneldoc layout]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b43c3aab0137595335b08b340a3f3e5af9818a6",
      "tree": "dad2556800b89d42875470744a25533d1d983989",
      "parents": [
        "215ddd6664ced067afca7eebd2d1eb83f064ff5a"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Jul 08 15:39:41 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 08 21:14:43 2011 -0700"
      },
      "message": "mm: __tlb_remove_page() check the correct batch\n\n__tlb_remove_page() switches to a new batch page, but still checks space\nin the old batch.  This check always fails, and causes a forced tlb flush.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "215ddd6664ced067afca7eebd2d1eb83f064ff5a",
      "tree": "b0e01235355d9c77b3bf63e0a57a6721fc8e3793",
      "parents": [
        "da175d06b437093f93109ba9e5efbe44dfdf9409"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Fri Jul 08 15:39:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 08 21:14:43 2011 -0700"
      },
      "message": "mm: vmscan: only read new_classzone_idx from pgdat when reclaiming successfully\n\nDuring allocator-intensive workloads, kswapd will be woken frequently\ncausing free memory to oscillate between the high and min watermark.  This\nis expected behaviour.  Unfortunately, if the highest zone is small, a\nproblem occurs.\n\nWhen balance_pgdat() returns, it may be at a lower classzone_idx than it\nstarted because the highest zone was unreclaimable.  Before checking if it\nshould go to sleep though, it checks pgdat-\u003eclasszone_idx which when there\nis no other activity will be MAX_NR_ZONES-1.  It interprets this as it has\nbeen woken up while reclaiming, skips scheduling and reclaims again.  As\nthere is no useful reclaim work to do, it enters into a loop of shrinking\nslab consuming loads of CPU until the highest zone becomes reclaimable for\na long period of time.\n\nThere are two problems here.  1) If the returned classzone or order is\nlower, it\u0027ll continue reclaiming without scheduling.  2) if the highest\nzone was marked unreclaimable but balance_pgdat() returns immediately at\nDEF_PRIORITY, the new lower classzone is not communicated back to kswapd()\nfor sleeping.\n\nThis patch does two things that are related.  If the end_zone is\nunreclaimable, this information is communicated back.  Second, if the\nclasszone or order was reduced due to failing to reclaim, new information\nis not read from pgdat and instead an attempt is made to go to sleep.  Due\nto this, it is also necessary that pgdat-\u003eclasszone_idx be initialised\neach time to pgdat-\u003enr_zones - 1 to avoid re-reads being interpreted as\nwakeups.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReported-by: Pádraig Brady \u003cP@draigBrady.com\u003e\nTested-by: Pádraig Brady \u003cP@draigBrady.com\u003e\nTested-by: Andrew Lutomirski \u003cluto@mit.edu\u003e\nAcked-by: 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: Johannes Weiner \u003channes@cmpxchg.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": "da175d06b437093f93109ba9e5efbe44dfdf9409",
      "tree": "04bbed7c41347e3614690947c66f87e8e38a6051",
      "parents": [
        "d7868dae893c83c50c7824bc2bc75f93d114669f"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Fri Jul 08 15:39:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 08 21:14:43 2011 -0700"
      },
      "message": "mm: vmscan: evaluate the watermarks against the correct classzone\n\nWhen deciding if kswapd is sleeping prematurely, the classzone is taken\ninto account but this is different to what balance_pgdat() and the\nallocator are doing.  Specifically, the DMA zone will be checked based on\nthe classzone used when waking kswapd which could be for a GFP_KERNEL or\nGFP_HIGHMEM request.  The lowmem reserve limit kicks in, the watermark is\nnot met and kswapd thinks it\u0027s sleeping prematurely keeping kswapd awake in\nerror.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReported-by: Pádraig Brady \u003cP@draigBrady.com\u003e\nTested-by: Pádraig Brady \u003cP@draigBrady.com\u003e\nTested-by: Andrew Lutomirski \u003cluto@mit.edu\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: Johannes Weiner \u003channes@cmpxchg.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": "d7868dae893c83c50c7824bc2bc75f93d114669f",
      "tree": "7c9e56513ecbbf086c81ebff77310f80e0232ecc",
      "parents": [
        "08951e545918c1594434d000d88a7793e2452a9b"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Fri Jul 08 15:39:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 08 21:14:43 2011 -0700"
      },
      "message": "mm: vmscan: do not apply pressure to slab if we are not applying pressure to zone\n\nDuring allocator-intensive workloads, kswapd will be woken frequently\ncausing free memory to oscillate between the high and min watermark.  This\nis expected behaviour.\n\nWhen kswapd applies pressure to zones during node balancing, it checks if\nthe zone is above a high+balance_gap threshold.  If it is, it does not\napply pressure but it unconditionally shrinks slab on a global basis which\nis excessive.  In the event kswapd is being kept awake due to a high small\nunreclaimable zone, it skips zone shrinking but still calls shrink_slab().\n\nOnce pressure has been applied, the check for zone being unreclaimable is\nbeing made before the check is made if all_unreclaimable should be set.\nThis miss of unreclaimable can cause has_under_min_watermark_zone to be\nset due to an unreclaimable zone preventing kswapd backing off on\ncongestion_wait().\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReported-by: Pádraig Brady \u003cP@draigBrady.com\u003e\nTested-by: Pádraig Brady \u003cP@draigBrady.com\u003e\nTested-by: Andrew Lutomirski \u003cluto@mit.edu\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.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": "08951e545918c1594434d000d88a7793e2452a9b",
      "tree": "56f91aba454751e2b6bcd67945ed2d4ebbeb2025",
      "parents": [
        "902daf6580cffe04721250fb71b5527a98718b11"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Fri Jul 08 15:39:36 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 08 21:14:42 2011 -0700"
      },
      "message": "mm: vmscan: correct check for kswapd sleeping in sleeping_prematurely\n\nDuring allocator-intensive workloads, kswapd will be woken frequently\ncausing free memory to oscillate between the high and min watermark.  This\nis expected behaviour.  Unfortunately, if the highest zone is small, a\nproblem occurs.\n\nThis seems to happen most with recent sandybridge laptops but it\u0027s\nprobably a co-incidence as some of these laptops just happen to have a\nsmall Normal zone.  The reproduction case is almost always during copying\nlarge files that kswapd pegs at 100% CPU until the file is deleted or\ncache is dropped.\n\nThe problem is mostly down to sleeping_prematurely() keeping kswapd awake\nwhen the highest zone is small and unreclaimable and compounded by the\nfact we shrink slabs even when not shrinking zones causing a lot of time\nto be spent in shrinkers and a lot of memory to be reclaimed.\n\nPatch 1 corrects sleeping_prematurely to check the zones matching\n\tthe classzone_idx instead of all zones.\n\nPatch 2 avoids shrinking slab when we are not shrinking a zone.\n\nPatch 3 notes that sleeping_prematurely is checking lower zones against\n\ta high classzone which is not what allocators or balance_pgdat()\n\tis doing leading to an artifical belief that kswapd should be\n\tstill awake.\n\nPatch 4 notes that when balance_pgdat() gives up on a high zone that the\n\tdecision is not communicated to sleeping_prematurely()\n\nThis problem affects 2.6.38.8 for certain and is expected to affect 2.6.39\nand 3.0-rc4 as well.  If accepted, they need to go to -stable to be picked\nup by distros and this series is against 3.0-rc4.  I\u0027ve cc\u0027d people that\nreported similar problems recently to see if they still suffer from the\nproblem and if this fixes it.\n\nThis patch: correct the check for kswapd sleeping in sleeping_prematurely()\n\nDuring allocator-intensive workloads, kswapd will be woken frequently\ncausing free memory to oscillate between the high and min watermark.  This\nis expected behaviour.\n\nA problem occurs if the highest zone is small.  balance_pgdat() only\nconsiders unreclaimable zones when priority is DEF_PRIORITY but\nsleeping_prematurely considers all zones.  It\u0027s possible for this sequence\nto occur\n\n  1. kswapd wakes up and enters balance_pgdat()\n  2. At DEF_PRIORITY, marks highest zone unreclaimable\n  3. At DEF_PRIORITY-1, ignores highest zone setting end_zone\n  4. At DEF_PRIORITY-1, calls shrink_slab freeing memory from\n        highest zone, clearing all_unreclaimable. Highest zone\n        is still unbalanced\n  5. kswapd returns and calls sleeping_prematurely\n  6. sleeping_prematurely looks at *all* zones, not just the ones\n     being considered by balance_pgdat. The highest small zone\n     has all_unreclaimable cleared but the zone is not\n     balanced. all_zones_ok is false so kswapd stays awake\n\nThis patch corrects the behaviour of sleeping_prematurely to check the\nzones balance_pgdat() checked.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReported-by: Pádraig Brady \u003cP@draigBrady.com\u003e\nTested-by: Pádraig Brady \u003cP@draigBrady.com\u003e\nTested-by: Andrew Lutomirski \u003cluto@mit.edu\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.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": "e55d4fa96762fd767a3b6d842c904e994db6bb2e",
      "tree": "c74157e01cb128cb97f106a50cfadc4c8b872c41",
      "parents": [
        "e32c14667e4fe9f16ac9b918d15d29abd2315a55",
        "b0af8dfdd67699e25083478c63eedef2e72ebd85"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jun 29 13:54:42 2011 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jun 29 13:54:42 2011 -0700"
      },
      "message": "Merge commit \u0027v3.0-rc5\u0027 into android-3.0\n"
    },
    {
      "commit": "ac34a1a3c39da0a1b9188d12a9ce85506364ed2a",
      "tree": "f74f34047c6bc516e29196685cc8671aff4a02d2",
      "parents": [
        "26c4caea9d697043cc5a458b96411b86d7f6babd"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Mon Jun 27 16:18:12 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:13 2011 -0700"
      },
      "message": "memcg: fix direct softlimit reclaim to be called in limit path\n\nCommit d149e3b25d7c (\"memcg: add the soft_limit reclaim in global direct\nreclaim\") adds a softlimit hook to shrink_zones().  By this, soft limit\nis called as\n\n   try_to_free_pages()\n       do_try_to_free_pages()\n           shrink_zones()\n               mem_cgroup_soft_limit_reclaim()\n\nThen, direct reclaim is memcg softlimit hint aware, now.\n\nBut, the memory cgroup\u0027s \"limit\" path can call softlimit shrinker.\n\n   try_to_free_mem_cgroup_pages()\n       do_try_to_free_pages()\n           shrink_zones()\n               mem_cgroup_soft_limit_reclaim()\n\nThis will cause a global reclaim when a memcg hits limit.\n\nThis is bug. soft_limit_reclaim() should be called when\nscanning_global_lru(sc) \u003d\u003d true.\n\nAnd the commit adds a variable \"total_scanned\" for counting softlimit\nscanned pages....it\u0027s not \"total\".  This patch removes the variable and\nupdate sc-\u003enr_scanned instead of it.  This will affect shrink_slab()\u0027s\nscan condition but, global LRU is scanned by softlimit and I think this\nchange makes sense.\n\nTODO: avoid too much scanning of a zone when softlimit did enough work.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08142579b6ca35883c1ed066a2681de6f6917062",
      "tree": "00735ed37753533f3b645714770b4fb036b5f7e0",
      "parents": [
        "9b679320a5fbf46454011e5c62e0b8991b0956d1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jun 27 16:18:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:13 2011 -0700"
      },
      "message": "mm: fix assertion mapping-\u003enrpages \u003d\u003d 0 in end_writeback()\n\nUnder heavy memory and filesystem load, users observe the assertion\nmapping-\u003enrpages \u003d\u003d 0 in end_writeback() trigger.  This can be caused by\npage reclaim reclaiming the last page from a mapping in the following\nrace:\n\n\tCPU0\t\t\t\tCPU1\n  ...\n  shrink_page_list()\n    __remove_mapping()\n      __delete_from_page_cache()\n        radix_tree_delete()\n\t\t\t\t\tevict_inode()\n\t\t\t\t\t  truncate_inode_pages()\n\t\t\t\t\t    truncate_inode_pages_range()\n\t\t\t\t\t      pagevec_lookup() - finds nothing\n\t\t\t\t\t  end_writeback()\n\t\t\t\t\t    mapping-\u003enrpages !\u003d 0 -\u003e BUG\n        page-\u003emapping \u003d NULL\n        mapping-\u003enrpages--\n\nFix the problem by doing a reliable check of mapping-\u003enrpages under\nmapping-\u003etree_lock in end_writeback().\n\nAnalyzed by Jay \u003cjinshan.xiong@whamcloud.com\u003e, lost in LKML, and dug out\nby Miklos Szeredi \u003cmszeredi@suse.de\u003e.\n\nCc: Jay \u003cjinshan.xiong@whamcloud.com\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\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": "9b679320a5fbf46454011e5c62e0b8991b0956d1",
      "tree": "49ea7be5e8bb669ef99533a18c73555e2882efc5",
      "parents": [
        "aa2c96d6f329e66cc59352b0f12e8f04e6a9593b"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Mon Jun 27 16:18:09 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:13 2011 -0700"
      },
      "message": "mm/memory-failure.c: fix spinlock vs mutex order\n\nWe cannot take a mutex while holding a spinlock, so flip the order and\nfix the locking documentation.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Andi Kleen \u003cak@linux.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": "d9d90e5eb70e09903dadff42099b6c948f814050",
      "tree": "c3ab73df6dee61f9403bfd819a6b0cb9f3ca6085",
      "parents": [
        "94c1e62df4494b79782cb9c7279f827212d1de70"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Mon Jun 27 16:18:04 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:12 2011 -0700"
      },
      "message": "tmpfs: add shmem_read_mapping_page_gfp\n\nAlthough it is used (by i915) on nothing but tmpfs, read_cache_page_gfp()\nis unsuited to tmpfs, because it inserts a page into pagecache before\ncalling the filesystem\u0027s -\u003ereadpage: tmpfs may have pages in swapcache\nwhich only it knows how to locate and switch to filecache.\n\nAt present tmpfs provides a -\u003ereadpage method, and copes with this by\ncopying pages; but soon we can simplify it by removing its -\u003ereadpage.\nProvide shmem_read_mapping_page_gfp() now, ready for that transition,\n\nExport shmem_read_mapping_page_gfp() and add it to list in shmem_fs.h,\nwith shmem_read_mapping_page() inline for the common mapping_gfp case.\n\n(shmem_read_mapping_page_gfp or shmem_read_cache_page_gfp? Generally the\nread_mapping_page functions use the mapping\u0027s -\u003ereadpage, and the\nread_cache_page functions use the supplied filler, so I think\nread_cache_page_gfp was slightly misnamed.)\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "94c1e62df4494b79782cb9c7279f827212d1de70",
      "tree": "43013fb403e592c535e6a7770be105b635ac9b63",
      "parents": [
        "072441e21ddcd1140606b7d4ef6eab579a86b0b3"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Mon Jun 27 16:18:03 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:12 2011 -0700"
      },
      "message": "tmpfs: take control of its truncate_range\n\n2.6.35\u0027s new truncate convention gave tmpfs the opportunity to control\nits file truncation, no longer enforced from outside by vmtruncate().\nWe shall want to build upon that, to handle pagecache and swap together.\n\nSlightly redefine the -\u003etruncate_range interface: let it now be called\nbetween the unmap_mapping_range()s, with the filesystem responsible for\ndoing the truncate_inode_pages_range() from it - just as the filesystem\nis nowadays responsible for doing that from its -\u003esetattr.\n\nLet\u0027s rename shmem_notify_change() to shmem_setattr().  Instead of\ncalling the generic truncate_setsize(), bring that code in so we can\ncall shmem_truncate_range() - which will later be updated to perform its\nown variant of truncate_inode_pages_range().\n\nRemove the punch_hole unmap_mapping_range() from shmem_truncate_range():\nnow that the COW\u0027s unmap_mapping_range() comes after -\u003etruncate_range,\nthere is no need to call it a third time.\n\nExport shmem_truncate_range() and add it to the list in shmem_fs.h, so\nthat i915_gem_object_truncate() can call it explicitly in future; get\nthis patch in first, then update drm/i915 once this is available (until\nthen, i915 will just be doing the truncate_inode_pages() twice).\n\nThough introduced five years ago, no other filesystem is implementing\n-\u003etruncate_range, and its only other user is madvise(,,MADV_REMOVE): we\nexpect to convert it to fallocate(,FALLOC_FL_PUNCH_HOLE,,) shortly,\nwhereupon -\u003etruncate_range can be removed from inode_operations -\nshmem_truncate_range() will help i915 across that transition too.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "072441e21ddcd1140606b7d4ef6eab579a86b0b3",
      "tree": "6f059ad83c09dfbeb1def29e805839db3e5bf85f",
      "parents": [
        "5b8ba10198a109f8a02380648c5d29000caa9c55"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Mon Jun 27 16:18:02 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:12 2011 -0700"
      },
      "message": "mm: move shmem prototypes to shmem_fs.h\n\nBefore adding any more global entry points into shmem.c, gather such\nprototypes into shmem_fs.h.  Remove mm\u0027s own declarations from swap.h,\nbut for now leave the ones in mm.h: because shmem_file_setup() and\nshmem_zero_setup() are called from various places, and we should not\nforce other subsystems to update immediately.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b8ba10198a109f8a02380648c5d29000caa9c55",
      "tree": "1e4328d86395baa3d429c0d9911b7d7e1272629d",
      "parents": [
        "4d258b25d947521c8b913154db61ec55198243f8"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Mon Jun 27 16:18:01 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:12 2011 -0700"
      },
      "message": "mm: move vmtruncate_range to truncate.c\n\nYou would expect to find vmtruncate_range() next to vmtruncate() in\nmm/truncate.c: move it there.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f957db4fcdd8f03e186aa8f041f4049e76ab741c",
      "tree": "34c5868d819fad1b831e72ca600e655a7b9d8872",
      "parents": [
        "7553e8f2d5161a2b7a9b7a9f37be1b77e735552f"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Jun 22 18:13:04 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 22 21:06:48 2011 -0700"
      },
      "message": "mm, hotplug: protect zonelist building with zonelists_mutex\n\nCommit 959ecc48fc75 (\"mm/memory_hotplug.c: fix building of node hotplug\nzonelist\") does not protect the build_all_zonelists() call with\nzonelists_mutex as needed.  This can lead to races in constructing\nzonelist ordering if a concurrent build is underway.  Protecting this\nwith lock_memory_hotplug() is insufficient since zonelists can be\nrebuild though sysfs as well.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7553e8f2d5161a2b7a9b7a9f37be1b77e735552f",
      "tree": "1e5413e5998a523f6f9a8ea647b56a6d91be4ee5",
      "parents": [
        "b1d7dd80aadb9042e83f9778b484a2f92e0b04d4"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Jun 22 18:13:01 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 22 21:06:47 2011 -0700"
      },
      "message": "mm, hotplug: fix error handling in mem_online_node()\n\nThe error handling in mem_online_node() is incorrect: hotadd_new_pgdat()\nreturns NULL if the new pgdat could not have been allocated and a pointer\nto it otherwise.\n\nmem_online_node() should fail if hotadd_new_pgdat() fails, not the\ninverse.  This fixes an issue when memoryless nodes are not onlined and\ntheir sysfs interface is not registered when their first cpu is brought\nup.\n\nThe bug was introduced by commit cf23422b9d76 (\"cpu/mem hotplug: enable\nCPUs online before local memory online\") iow v2.6.35.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a3fe0122cb4c94f7991a7174fee424407253f58",
      "tree": "d59363da3e8df349d8d79facb34d80d3cb4a3727",
      "parents": [
        "92ab01111003afa1c65d355380e60be606412118"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jun 22 16:05:47 2011 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jun 22 16:21:50 2011 -0700"
      },
      "message": "mm: ashmem: Fix arguments to ashmem_shrink\n\nThe arguments to shrink functions have changed, update\nashmem_shrink to match.\n\nChange-Id: Id279d22d761a2a7c4965c957960eef804d06cc07\nSigned-off-by: Colin Cross \u003cccross@android.com\u003e\n"
    },
    {
      "commit": "dd34739c03f2f9a79403d33419c2e61e11b4c403",
      "tree": "74e4e43b78d54994e88aef7df96f0f8f4b080934",
      "parents": [
        "eee2acbae95555006307395d8a6c91452d62851d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 17 19:05:36 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 17 19:24:11 2011 -0700"
      },
      "message": "mm: avoid anon_vma_chain allocation under anon_vma lock\n\nHugh Dickins points out that lockdep (correctly) spots a potential\ndeadlock on the anon_vma lock, because we now do a GFP_KERNEL allocation\nof anon_vma_chain while doing anon_vma_clone().  The problem is that\npage reclaim will want to take the anon_vma lock of any anonymous pages\nthat it will try to reclaim.\n\nSo re-organize the code in anon_vma_clone() slightly: first do just a\nGFP_NOWAIT allocation, which will usually work fine.  But if that fails,\nlet\u0027s just drop the lock and re-do the allocation, now with GFP_KERNEL.\n\nEnd result: not only do we avoid the locking problem, this also ends up\ngetting better concurrency in case the allocation does need to block.\nTim Chen reports that with all these anon_vma locking tweaks, we\u0027re now\nalmost back up to the spinlock performance.\n\nReported-and-tested-by: Hugh Dickins \u003chughd@google.com\u003e\nTested-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eee2acbae95555006307395d8a6c91452d62851d",
      "tree": "85b02243a07a5617ac45fe2d4a714e4f758f0a98",
      "parents": [
        "bb4aa39676f73b4657b3edd893ae83881c430c0c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Fri Jun 17 13:54:23 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 17 19:23:52 2011 -0700"
      },
      "message": "mm: avoid repeated anon_vma lock/unlock sequences in unlink_anon_vmas()\n\nThis matches the anon_vma_clone() case, and uses the same lock helper\nfunctions.  Because of the need to potentially release the anon_vma\u0027s,\nit\u0027s a bit more complex, though.\n\nWe traverse the \u0027vma-\u003eanon_vma_chain\u0027 in two phases: the first loop gets\nthe anon_vma lock (with the helper function that only takes the lock\nonce for the whole loop), and removes any entries that don\u0027t need any\nmore processing.\n\nThe second phase just traverses the remaining list entries (without\nholding the anon_vma lock), and does any actual freeing of the\nanon_vma\u0027s that is required.\n\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nTested-by: Hugh Dickins \u003chughd@google.com\u003e\nTested-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bb4aa39676f73b4657b3edd893ae83881c430c0c",
      "tree": "6b8db9ed4a9e3fb6c232dd8447b0d24e76f5885a",
      "parents": [
        "eb96c925152fc289311e5d7e956b919e9b60ab53"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 16 20:44:51 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 17 19:20:49 2011 -0700"
      },
      "message": "mm: avoid repeated anon_vma lock/unlock sequences in anon_vma_clone()\n\nIn anon_vma_clone() we traverse the vma-\u003eanon_vma_chain of the source\nvma, locking the anon_vma for each entry.\n\nBut they are all going to have the same root entry, which means that\nwe\u0027re locking and unlocking the same lock over and over again.  Which is\nexpensive in locked operations, but can get _really_ expensive when that\nroot entry sees any kind of lock contention.\n\nIn fact, Tim Chen reports a big performance regression due to this: when\nwe switched to use a mutex instead of a spinlock, the contention case\ngets much worse.\n\nSo to alleviate this all, this commit creates a small helper function\n(lock_anon_vma_root()) that can be used to take the lock just once\nrather than taking and releasing it over and over again.\n\nWe still have the same \"take the lock and release\" it behavior in the\nexit path (in unlink_anon_vmas()), but that one is a bit harder to fix\nsince we\u0027re actually freeing the anon_vma entries as we go, and that\nwill touch the lock too.\n\nReported-and-tested-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nTested-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "99a15e21d96f6857dafab1e5167e5e8183215c9c",
      "tree": "eb6224c0bf11fc243de298c3fa665e418f849d16",
      "parents": [
        "7cc2ed05891f424c2e323bc1a368ddb5c78b90f2"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jun 16 12:56:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 16 15:01:24 2011 -0700"
      },
      "message": "migrate: don\u0027t account swapcache as shmem\n\nswapcache will reach the below code path in migrate_page_move_mapping,\nand swapcache is accounted as NR_FILE_PAGES but it\u0027s not accounted as\nNR_SHMEM.\n\nHugh pointed out we must use PageSwapCache instead of comparing\nmapping to \u0026swapper_space, to avoid build failure with CONFIG_SWAP\u003dn.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9be34c9d526c305efb332ad53460b57d5f8edb3e",
      "tree": "43db860557f3080b254291dac1035be1468dfdff",
      "parents": [
        "19a1166fa2352f9c07a5ab34a3c2aab462cff35d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 16 00:35:09 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 16 00:35:09 2011 -0700"
      },
      "message": "mm: get rid of the most spurious find_vma_prev() users\n\nWe have some users of this function that date back to before the vma\nlist was doubly linked, and just are silly.  These days, you can find\nthe previous vma by just following the vma-\u003evm_prev pointer.\n\nIn some cases you don\u0027t need any find_vma() lookup at all, and in other\ncases you\u0027re better off with the regular \"find_vma()\" that uses the vma\ncache front-end lookup.\n\nSome \"find_vma_prev()\" users are still valid, though.  For example, in\nthe case of a stack that grows up, it can be the case that we don\u0027t find\nany \u0027vma\u0027 at all (because we\u0027re looking up an address that is past the\nlast vma), and that the stack that we want to grow is the \u0027prev\u0027 vma.\n\nBut that kind of special case aside, we generally should prefer to use\n\u0027find_vma()\u0027.\n\nNoticed due to a totally unrelated POWER memory corruption bug that just\nhappened to hit in \u0027find_vma_prev()\u0027 and made me go \"Hmm - why are we\nusing that function here?\".\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b472611a32a72f4a118c069c2d62a1a3f087afd",
      "tree": "166ec2dea398e7760c30077fb329cf7f2ab08c2b",
      "parents": [
        "c7cbb02222eccb82bfd42696b01abceddae663f2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Jun 15 15:08:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:02 2011 -0700"
      },
      "message": "ksm: fix NULL pointer dereference in scan_get_next_rmap_item()\n\nAndrea Righi reported a case where an exiting task can race against\nksmd::scan_get_next_rmap_item (http://lkml.org/lkml/2011/6/1/742) easily\ntriggering a NULL pointer dereference in ksmd.\n\nksm_scan.mm_slot \u003d\u003d \u0026ksm_mm_head with only one registered mm\n\nCPU 1 (__ksm_exit)\t\tCPU 2 (scan_get_next_rmap_item)\n \t\t\t\tlist_empty() is false\nlock\t\t\t\tslot \u003d\u003d \u0026ksm_mm_head\nlist_del(slot-\u003emm_list)\n(list now empty)\nunlock\n\t\t\t\tlock\n\t\t\t\tslot \u003d list_entry(slot-\u003emm_list.next)\n\t\t\t\t(list is empty, so slot is still ksm_mm_head)\n\t\t\t\tunlock\n\t\t\t\tslot-\u003emm \u003d\u003d NULL ... Oops\n\nClose this race by revalidating that the new slot is not simply the list\nhead again.\n\nAndrea\u0027s test case:\n\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003csys/mman.h\u003e\n\n#define BUFSIZE getpagesize()\n\nint main(int argc, char **argv)\n{\n\tvoid *ptr;\n\n\tif (posix_memalign(\u0026ptr, getpagesize(), BUFSIZE) \u003c 0) {\n\t\tperror(\"posix_memalign\");\n\t\texit(1);\n\t}\n\tif (madvise(ptr, BUFSIZE, MADV_MERGEABLE) \u003c 0) {\n\t\tperror(\"madvise\");\n\t\texit(1);\n\t}\n\t*(char *)NULL \u003d 0;\n\n\treturn 0;\n}\n\nReported-by: Andrea Righi \u003candrea@betterlinux.com\u003e\nTested-by: Andrea Righi \u003candrea@betterlinux.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.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": "f9e35b3b41f47c4e17d8132edbcab305a6aaa4b0",
      "tree": "d489fff3885bb7c4df0eebd2f074a398420740e6",
      "parents": [
        "d179e84ba5da1d0024087d1759a2938817a00f3f"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Wed Jun 15 15:08:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:02 2011 -0700"
      },
      "message": "mm: compaction: abort compaction if too many pages are isolated and caller is asynchronous V2\n\nAsynchronous compaction is used when promoting to huge pages.  This is all\nvery nice but if there are a number of processes in compacting memory, a\nlarge number of pages can be isolated.  An \"asynchronous\" process can\nstall for long periods of time as a result with a user reporting that\nfirefox can stall for 10s of seconds.  This patch aborts asynchronous\ncompaction if too many pages are isolated as it\u0027s better to fail a\nhugepage promotion than stall a process.\n\n[minchan.kim@gmail.com: return COMPACT_PARTIAL for abort]\nReported-and-tested-by: Ury Stankevich \u003curykhy@gmail.com\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d179e84ba5da1d0024087d1759a2938817a00f3f",
      "tree": "169c9cc4030a793df1bc29613eff85ee3acef9a9",
      "parents": [
        "7454f4ba40b419eb999a3c61a99da662bf1a2bb8"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Wed Jun 15 15:08:51 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:02 2011 -0700"
      },
      "message": "mm: vmscan: do not use page_count without a page pin\n\nIt is unsafe to run page_count during the physical pfn scan because\ncompound_head could trip on a dangling pointer when reading\npage-\u003efirst_page if the compound page is being freed by another CPU.\n\n[mgorman@suse.de: split out patch]\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7454f4ba40b419eb999a3c61a99da662bf1a2bb8",
      "tree": "e0c12088e544378554bc371d99f497d93470c4c4",
      "parents": [
        "a582a738c763e106f47eab24b8146c698a9c700b"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Wed Jun 15 15:08:50 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:02 2011 -0700"
      },
      "message": "mm: compaction: ensure that the compaction free scanner does not move to the next zone\n\nCompaction works with two scanners, a migration and a free scanner.  When\nthe scanners crossover, migration within the zone is complete.  The\nlocation of the scanner is recorded on each cycle to avoid excesive\nscanning.\n\nWhen a zone is small and mostly reserved, it\u0027s very easy for the migration\nscanner to be close to the end of the zone.  Then the following situation\ncan occurs\n\n  o migration scanner isolates some pages near the end of the zone\n  o free scanner starts at the end of the zone but finds that the\n    migration scanner is already there\n  o free scanner gets reinitialised for the next cycle as\n    cc-\u003emigrate_pfn + pageblock_nr_pages\n    moving the free scanner into the next zone\n  o migration scanner moves into the next zone\n\nWhen this happens, NR_ISOLATED accounting goes haywire because some of the\naccounting happens against the wrong zone.  One zones counter remains\npositive while the other goes negative even though the overall global\ncount is accurate.  This was reported on X86-32 with !SMP because !SMP\nallows the negative counters to be visible.  The fact that it is the bug\nshould theoritically be possible there.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a582a738c763e106f47eab24b8146c698a9c700b",
      "tree": "aaa5eda6bae7adc04dc5cbd513f5c25ac684af97",
      "parents": [
        "5db8a73a8d7cc6a66afbf25ed7fda338caa8f5f9"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Wed Jun 15 15:08:49 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:02 2011 -0700"
      },
      "message": "compaction: checks correct fragmentation index\n\nfragmentation_index() returns -1000 when the allocation might succeed\nThis doesn\u0027t match the comment and code in compaction_suitable(). I\nthought compaction_suitable should return COMPACT_PARTIAL in -1000\ncase, because in this case allocation could succeed depending on\nwatermarks.\n\nThe impact of this is that compaction starts and compact_finished() is\ncalled which rechecks the watermarks and the free lists.  It should have\nthe same result in that compaction should not start but is more expensive.\n\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@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": "5db8a73a8d7cc6a66afbf25ed7fda338caa8f5f9",
      "tree": "ef9de80dcee654053f3725570b0e053d2812d66a",
      "parents": [
        "d2c32258798f813dc2be6cbc32f78aa5ac5cb205"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Wed Jun 15 15:08:48 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "mm/memory-failure.c: fix page isolated count mismatch\n\nPages isolated for migration are accounted with the vmstat counters\nNR_ISOLATE_[ANON|FILE].  Callers of migrate_pages() are expected to\nincrement these counters when pages are isolated from the LRU.  Once the\npages have been migrated, they are put back on the LRU or freed and the\nisolated count is decremented.\n\nMemory failure is not properly accounting for pages it isolates causing\nthe NR_ISOLATED counters to be negative.  On SMP builds, this goes\nunnoticed as negative counters are treated as 0 due to expected per-cpu\ndrift.  On UP builds, the counter is treated by too_many_isolated() as a\nlarge value causing processes to enter D state during page reclaim or\ncompaction.  This patch accounts for pages isolated by memory failure\ncorrectly.\n\n[mel@csn.ul.ie: rewrote changelog]\nReviewed-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nAcked-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": "fbc29a25e484be073e7d762c9f7f1d4bf8aecc48",
      "tree": "276a9e1e0c3d8f653dd821c049ec4b6940a06c1d",
      "parents": [
        "26fe616844491a41a1abc02e29f7a9d1ec2f8ddb"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "memcg: avoid percpu cached charge draining at softlimit\n\nBased on Michal Hocko\u0027s comment.\n\nWe are not draining per cpu cached charges during soft limit reclaim\nbecause background reclaim doesn\u0027t care about charges.  It tries to free\nsome memory and charges will not give any.\n\nCached charges might influence only selection of the biggest soft limit\noffender but as the call is done only after the selection has been already\ndone it makes no change.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "26fe616844491a41a1abc02e29f7a9d1ec2f8ddb",
      "tree": "cd8747ad8e96d6ebda771db41b96db11a4b09f26",
      "parents": [
        "7ae534d074e01e54d5cfbc9734b73fdfc855501f"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "memcg: fix percpu cached charge draining frequency\n\nFor performance, memory cgroup caches some \"charge\" from res_counter into\nper cpu cache.  This works well but because it\u0027s cache, it needs to be\nflushed in some cases.  Typical cases are\n\n   1. when someone hit limit.\n\n   2. when rmdir() is called and need to charges to be 0.\n\nBut \"1\" has problem.\n\nRecently, with large SMP machines, we see many kworker runs because of\nflushing memcg\u0027s cache.  Bad things in implementation are that even if a\ncpu contains a cache for memcg not related to a memcg which hits limit,\ndrain code is called.\n\nThis patch does\n        A) check percpu cache contains a useful data or not.\n        B) check other asynchronous percpu draining doesn\u0027t run.\n        C) don\u0027t call local cpu callback.\n\n(*)This patch avoid changing the calling condition with hard-limit.\n\nWhen I run \"cat 1Gfile \u003e /dev/null\" under 300M limit memcg,\n\n[Before]\n13767 kamezawa  20   0 98.6m  424  416 D 10.0  0.0   0:00.61 cat\n   58 root      20   0     0    0    0 S  0.6  0.0   0:00.09 kworker/2:1\n   60 root      20   0     0    0    0 S  0.6  0.0   0:00.08 kworker/4:1\n    4 root      20   0     0    0    0 S  0.3  0.0   0:00.02 kworker/0:0\n   57 root      20   0     0    0    0 S  0.3  0.0   0:00.05 kworker/1:1\n   61 root      20   0     0    0    0 S  0.3  0.0   0:00.05 kworker/5:1\n   62 root      20   0     0    0    0 S  0.3  0.0   0:00.05 kworker/6:1\n   63 root      20   0     0    0    0 S  0.3  0.0   0:00.05 kworker/7:1\n\n[After]\n 2676 root      20   0 98.6m  416  416 D  9.3  0.0   0:00.87 cat\n 2626 kamezawa  20   0 15192 1312  920 R  0.3  0.0   0:00.28 top\n    1 root      20   0 19384 1496 1204 S  0.0  0.0   0:00.66 init\n    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd\n    3 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0\n    4 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kworker/0:0\n\n[akpm@linux-foundation.org: make percpu_charge_mutex static, tweak comments]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nTested-by: Ying Han \u003cyinghan@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": "7ae534d074e01e54d5cfbc9734b73fdfc855501f",
      "tree": "8c815762779fd79cc83db788aa29e6239212c3f4",
      "parents": [
        "733eda7ac316cd4e550fa096e4ed42356dc546e7"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:44 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "memcg: fix wrong check of noswap with softlimit\n\nHierarchical reclaim doesn\u0027t swap out if memsw and resource limits are\nthye same (memsw_is_minimum \u003d\u003d true) because we would hit mem+swap limit\nanyway (during hard limit reclaim).\n\nIf it comes to the soft limit we shouldn\u0027t consider memsw_is_minimum at\nall because it doesn\u0027t make much sense.  Either the soft limit is bellow\nthe hard limit and then we cannot hit mem+swap limit or the direct reclaim\ntakes a precedence.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "37573e8c718277103f61f03741bdc5606d31b07e",
      "tree": "7142211508420a8ea90b8ae01bfa5ee93ffa1a44",
      "parents": [
        "8957712710e045044e3c44375c6a87d7ffa17d51"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:42 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "memcg: fix init_page_cgroup nid with sparsemem\n\nCommit 21a3c9646873 (\"memcg: allocate memory cgroup structures in local\nnodes\") makes page_cgroup allocation as NUMA aware.  But that caused a\nproblem https://bugzilla.kernel.org/show_bug.cgi?id\u003d36192.\n\nThe problem was getting a NID from invalid struct pages, which was not\ninitialized because it was out-of-node, out of [node_start_pfn,\nnode_end_pfn)\n\nNow, with sparsemem, page_cgroup_init scans pfn from 0 to max_pfn.  But\nthis may scan a pfn which is not on any node and can access memmap which\nis not initialized.\n\nThis makes page_cgroup_init() for SPARSEMEM node aware and remove a code\nto get nid from page-\u003eflags.  (Then, we\u0027ll use valid NID always.)\n\n[akpm@linux-foundation.org: try to fix up comments]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8957712710e045044e3c44375c6a87d7ffa17d51",
      "tree": "94d801709cb1a57d12695ba9b2f8da42996e178e",
      "parents": [
        "45d16f09ddd66597e561876f5652c05bf986360a"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:41 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "mm: memory.numa_stat: fix file permission\n\nCommit 406eb0c9ba76 (\"memcg: add memory.numastat api for numa\nstatistics\") adds memory.numa_stat file for memory cgroup.  But the file\npermissions are wrong.\n\n  [kamezawa@bluextal linux-2.6]$ ls -l /cgroup/memory/A/memory.numa_stat\n  ---------- 1 root root 0 Jun  9 18:36 /cgroup/memory/A/memory.numa_stat\n\nThis patch fixes the permission as\n\n  [root@bluextal kamezawa]# ls -l /cgroup/memory/A/memory.numa_stat\n  -r--r--r-- 1 root root 0 Jun 10 16:49 /cgroup/memory/A/memory.numa_stat\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Ying Han \u003cyinghan@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": "b0320c7b7d1ac1bd5c2d9dff3258524ab39bad32",
      "tree": "bdac09caec787a28b1b31fea3c2911808e9cb6d1",
      "parents": [
        "959ecc48fc7506b9d7825ea70e40d92d9b308033"
      ],
      "author": {
        "name": "Rafael Aquini",
        "email": "aquini@linux.com",
        "time": "Wed Jun 15 15:08:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "mm: fix negative commitlimit when gigantic hugepages are allocated\n\nWhen 1GB hugepages are allocated on a system, free(1) reports less\navailable memory than what really is installed in the box.  Also, if the\ntotal size of hugepages allocated on a system is over half of the total\nmemory size, CommitLimit becomes a negative number.\n\nThe problem is that gigantic hugepages (order \u003e MAX_ORDER) can only be\nallocated at boot with bootmem, thus its frames are not accounted to\n\u0027totalram_pages\u0027.  However, they are accounted to hugetlb_total_pages()\n\nWhat happens to turn CommitLimit into a negative number is this\ncalculation, in fs/proc/meminfo.c:\n\n        allowed \u003d ((totalram_pages - hugetlb_total_pages())\n                * sysctl_overcommit_ratio / 100) + total_swap_pages;\n\nA similar calculation occurs in __vm_enough_memory() in mm/mmap.c.\n\nAlso, every vm statistic which depends on \u0027totalram_pages\u0027 will render\nconfusing values, as if system were \u0027missing\u0027 some part of its memory.\n\nImpact of this bug:\n\nWhen gigantic hugepages are allocated and sysctl_overcommit_memory \u003d\u003d\nOVERCOMMIT_NEVER.  In a such situation, __vm_enough_memory() goes through\nthe mentioned \u0027allowed\u0027 calculation and might end up mistakenly returning\n-ENOMEM, thus forcing the system to start reclaiming pages earlier than it\nwould be ususal, and this could cause detrimental impact to overall\nsystem\u0027s performance, depending on the workload.\n\nBesides the aforementioned scenario, I can only think of this causing\nannoyances with memory reports from /proc/meminfo and free(1).\n\n[akpm@linux-foundation.org: standardize comment layout]\nReported-by: Russ Anderson \u003crja@sgi.com\u003e\nSigned-off-by: Rafael Aquini \u003caquini@linux.com\u003e\nAcked-by: Russ Anderson \u003crja@sgi.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Christoph Lameter \u003ccl@linux.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": "959ecc48fc7506b9d7825ea70e40d92d9b308033",
      "tree": "31dc427bf7153c8bf47d72413386c4eb632a602d",
      "parents": [
        "de695e159e3fd679594eb45449d2638d54434c32"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "mm/memory_hotplug.c: fix building of node hotplug zonelist\n\nDuring memory hotplug we refresh zonelists when we online a page in a new\nzone.  It means that the node\u0027s zonelist is not initialized until pages\nare onlined.  So for example, \"nid\" passed by MEM_GOING_ONLINE notifier\nwill point to NODE_DATA(nid) which has no zone fallback list.  Moreover,\nif we hot-add cpu-only nodes, alloc_pages() will do no fallback.\n\nThis patch makes a zonelist when a new pgdata is available.\n\nNote: in production, at fujitsu, memory should be onlined before cpu\n      and our server didn\u0027t have any memory-less nodes and had no problems.\n\n      But recent changes in MEM_GOING_ONLINE+page_cgroup\n      will access not initialized zonelist of node.\n      Anyway, there are memory-less node and we need some care.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3957c7768e5ea02fd3345176ddd340f820e5d285",
      "tree": "b3cbefeea3ac3adea0ca9d49e140503c9e5754b6",
      "parents": [
        "5f1a19070b16c20cdc71ed0e981bfa19f8f6a4ee"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Wed Jun 15 15:08:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:00 2011 -0700"
      },
      "message": "mm: compaction: fix special case -1 order checks\n\nCommit 56de7263fcf3 (\"mm: compaction: direct compact when a high-order\nallocation fails\") introduced a check for cc-\u003eorder \u003d\u003d -1 in\ncompact_finished.  We should continue compacting in that case because\nthe request came from userspace and there is no particular order to\ncompact for.  Similar check has been added by 82478fb7 (mm: compaction:\nprevent division-by-zero during user-requested compaction) for\ncompaction_suitable.\n\nThe check is, however, done after zone_watermark_ok which uses order as a\nright hand argument for shifts.  Not only watermark check is pointless if\nwe can break out without it but it also uses 1 \u003c\u003c -1 which is not well\ndefined (at least from C standard).  Let\u0027s move the -1 check above\nzone_watermark_ok.\n\n[minchan.kim@gmail.com\u003e - caught compaction_suitable]\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hioryu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5f1a19070b16c20cdc71ed0e981bfa19f8f6a4ee",
      "tree": "f3eaeb7a040e2484d71485118d58e34eb0760bf3",
      "parents": [
        "4bbd61fb9726808e72ab2aa440401f6e5e1aa8f7"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 15 15:08:23 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:00 2011 -0700"
      },
      "message": "mm: fix wrong kunmap_atomic() pointer\n\nRunning a ktest.pl test, I hit the following bug on x86_32:\n\n  ------------[ cut here ]------------\n  WARNING: at arch/x86/mm/highmem_32.c:81 __kunmap_atomic+0x64/0xc1()\n   Hardware name:\n  Modules linked in:\n  Pid: 93, comm: sh Not tainted 2.6.39-test+ #1\n  Call Trace:\n   [\u003cc04450da\u003e] warn_slowpath_common+0x7c/0x91\n   [\u003cc042f5df\u003e] ? __kunmap_atomic+0x64/0xc1\n   [\u003cc042f5df\u003e] ? __kunmap_atomic+0x64/0xc1^M\n   [\u003cc0445111\u003e] warn_slowpath_null+0x22/0x24\n   [\u003cc042f5df\u003e] __kunmap_atomic+0x64/0xc1\n   [\u003cc04d4a22\u003e] unmap_vmas+0x43a/0x4e0\n   [\u003cc04d9065\u003e] exit_mmap+0x91/0xd2\n   [\u003cc0443057\u003e] mmput+0x43/0xad\n   [\u003cc0448358\u003e] exit_mm+0x111/0x119\n   [\u003cc044855f\u003e] do_exit+0x1ff/0x5fa\n   [\u003cc0454ea2\u003e] ? set_current_blocked+0x3c/0x40\n   [\u003cc0454f24\u003e] ? sigprocmask+0x7e/0x8e\n   [\u003cc0448b55\u003e] do_group_exit+0x65/0x88\n   [\u003cc0448b90\u003e] sys_exit_group+0x18/0x1c\n   [\u003cc0c3915f\u003e] sysenter_do_call+0x12/0x38\n  ---[ end trace 8055f74ea3c0eb62 ]---\n\nRunning a ktest.pl git bisect, found the culprit: commit e303297e6c3a\n(\"mm: extended batches for generic mmu_gather\")\n\nBut although this was the commit triggering the bug, it was not the one\noriginally responsible for the bug.  That was commit d16dfc550f53 (\"mm:\nmmu_gather rework\").\n\nThe code in zap_pte_range() has something that looks like the following:\n\n\tpte \u003d  pte_offset_map_lock(mm, pmd, addr, \u0026ptl);\n\tdo {\n\t\t[...]\n\t} while (pte++, addr +\u003d PAGE_SIZE, addr !\u003d end);\n\tpte_unmap_unlock(pte - 1, ptl);\n\nThe pte starts off pointing at the first element in the page table\ndirectory that was returned by the pte_offset_map_lock().  When it\u0027s done\nwith the page, pte will be pointing to anything between the next entry and\nthe first entry of the next page inclusive.  By doing a pte - 1, this puts\nthe pte back onto the original page, which is all that pte_unmap_unlock()\nneeds.\n\nIn most archs (64 bit), this is not an issue as the pte is ignored in the\npte_unmap_unlock().  But on 32 bit archs, where things may be kmapped, it\nis essential that the pte passed to pte_unmap_unlock() resides on the same\npage that was given by pte_offest_map_lock().\n\nThe problem came in d16dfc55 (\"mm: mmu_gather rework\") where it introduced\na \"break;\" from the while loop.  This alone did not seem to easily trigger\nthe bug.  But the modifications made by e303297e6 caused that \"break;\" to\nbe hit on the first iteration, before the pte++.\n\nThe pte not being incremented will now cause pte_unmap_unlock(pte - 1) to\nbe pointing to the previous page.  This will cause the wrong page to be\nunmapped, and also trigger the warning above.\n\nThe simple solution is to just save the pointer given by\npte_offset_map_lock() and use it in the unlock.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.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": "d7911ef30cb7bec52234c2b7a5c275ac8f07905a",
      "tree": "c3d9dc8ffc5d9478da434faecc27759ee34edf83",
      "parents": [
        "83cd81a34357a632509f7491eec81e62e71d65f7"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:15 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:03:59 2011 -0700"
      },
      "message": "vmscan: implement swap token priority aging\n\nWhile testing for memcg aware swap token, I observed a swap token was\noften grabbed an intermittent running process (eg init, auditd) and they\nnever release a token.\n\nWhy?\n\nSome processes (eg init, auditd, audispd) wake up when a process exiting.\nAnd swap token can be get first page-in process when a process exiting\nmakes no swap token owner.  Thus such above intermittent running process\noften get a token.\n\nAnd currently, swap token priority is only decreased at page fault path.\nThen, if the process sleep immediately after to grab swap token, the swap\ntoken priority never be decreased.  That\u0027s obviously undesirable.\n\nThis patch implement very poor (and lightweight) priority aging.  It only\nbe affect to the above corner case and doesn\u0027t change swap tendency\nworkload performance (eg multi process qsbench load)\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83cd81a34357a632509f7491eec81e62e71d65f7",
      "tree": "cc96e65bd3000fd9090dacfabdd8810e9c66e0c9",
      "parents": [
        "a433658c30974fc87ba3ff52d7e4e6299762aa3d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:14 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:03:59 2011 -0700"
      },
      "message": "vmscan: implement swap token trace\n\nThis is useful for observing swap token activity.\n\nexample output:\n\n             zsh-1845  [000]   598.962716: update_swap_token_priority:\nmm\u003dffff88015eaf7700 old_prio\u003d1 new_prio\u003d0\n          memtoy-1830  [001]   602.033900: update_swap_token_priority:\nmm\u003dffff880037a45880 old_prio\u003d947 new_prio\u003d949\n          memtoy-1830  [000]   602.041509: update_swap_token_priority:\nmm\u003dffff880037a45880 old_prio\u003d949 new_prio\u003d951\n          memtoy-1830  [000]   602.051959: update_swap_token_priority:\nmm\u003dffff880037a45880 old_prio\u003d951 new_prio\u003d953\n          memtoy-1830  [000]   602.052188: update_swap_token_priority:\nmm\u003dffff880037a45880 old_prio\u003d953 new_prio\u003d955\n          memtoy-1830  [001]   602.427184: put_swap_token:\ntoken_mm\u003dffff880037a45880\n             zsh-1789  [000]   602.427281: replace_swap_token:\nold_token_mm\u003d          (null) old_prio\u003d0 new_token_mm\u003dffff88015eaf7018\nnew_prio\u003d2\n             zsh-1789  [001]   602.433456: update_swap_token_priority:\nmm\u003dffff88015eaf7018 old_prio\u003d2 new_prio\u003d4\n             zsh-1789  [000]   602.437613: update_swap_token_priority:\nmm\u003dffff88015eaf7018 old_prio\u003d4 new_prio\u003d6\n             zsh-1789  [000]   602.443924: update_swap_token_priority:\nmm\u003dffff88015eaf7018 old_prio\u003d6 new_prio\u003d8\n             zsh-1789  [000]   602.451873: update_swap_token_priority:\nmm\u003dffff88015eaf7018 old_prio\u003d8 new_prio\u003d10\n             zsh-1789  [001]   602.462639: update_swap_token_priority:\nmm\u003dffff88015eaf7018 old_prio\u003d10 new_prio\u003d12\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel\u003criel@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a433658c30974fc87ba3ff52d7e4e6299762aa3d",
      "tree": "8df65e22af520ca5c020281763e6874d0bb51bc5",
      "parents": [
        "e1bbd19bc4afef7adb80cca163800391c4f5773d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:03:59 2011 -0700"
      },
      "message": "vmscan,memcg: memcg aware swap token\n\nCurrently, memcg reclaim can disable swap token even if the swap token mm\ndoesn\u0027t belong in its memory cgroup.  It\u0027s slightly risky.  If an admin\ncreates very small mem-cgroup and silly guy runs contentious heavy memory\npressure workload, every tasks are going to lose swap token and then\nsystem may become unresponsive.  That\u0027s bad.\n\nThis patch adds \u0027memcg\u0027 parameter into disable_swap_token().  and if the\nparameter doesn\u0027t match swap token, VM doesn\u0027t disable it.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel\u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0164f69d0cf1a6abbc936851f5b72ece92187cda",
      "tree": "000bb234b98d76ce0b5195a3ee53a505aa0d3d86",
      "parents": [
        "f300ea499721ca208fc4714b9105bfd7e9f75be0"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Jun 15 15:08:09 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:03:59 2011 -0700"
      },
      "message": "mm/memory.c: fix kernel-doc notation\n\nFix new kernel-doc warnings in mm/memory.c:\n\n  Warning(mm/memory.c:1327): No description found for parameter \u0027tlb\u0027\n  Warning(mm/memory.c:1327): Excess function parameter \u0027tlbp\u0027 description in \u0027unmap_vmas\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": "f300ea499721ca208fc4714b9105bfd7e9f75be0",
      "tree": "afa4cb47cf030647491066b816df7f5fbf239bc6",
      "parents": [
        "ada9c93312f7ec49514c68c211595ce2601cebae"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Wed Jun 15 15:08:08 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:03:58 2011 -0700"
      },
      "message": "mm: remove khugepaged double thp vmstat update with CONFIG_NUMA\u003dn\n\nJohannes noticed the vmstat update is already taken care of by\nkhugepaged_alloc_hugepage() internally.  The only places that are required\nto update the vmstat are the callers of alloc_hugepage (callers of\nkhugepaged_alloc_hugepage aren\u0027t).\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReported-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@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": "09411fd653bdcb2dcb7ffc5a5d2fba3bc1e3ef8c",
      "tree": "ef1afe0eda693b8486765251227bdc09539c808c",
      "parents": [
        "4d2c26338ac3ce78b2325730bfeb4884ba60bd77"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Thu Aug 26 15:08:32 2010 +0100"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jun 14 09:09:36 2011 -0700"
      },
      "message": "Support lseek(2) in ashmem driver\n\nSigned-off-by: Bjorn Bringert \u003cbringert@android.com\u003e\nChange-Id: I509d18b21832e229737ea7ebaa231fb107eb61d7\n"
    },
    {
      "commit": "5eb6fdc0c710873d2be76db4965f247f484f531a",
      "tree": "287726229faa2e3497a9bf711139577399ec5e0c",
      "parents": [
        "4818e03a42d2e2886ee5360ea32da647aedb403b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@google.com",
        "time": "Sat Aug 21 17:26:52 2010 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jun 14 09:09:34 2011 -0700"
      },
      "message": "ashmem: Update arguments of shrinker for 2.6.35\n\nChange-Id: Ie527d18f3352ede06d565826c8d35ded1638203a\nSigned-off-by: Colin Cross \u003cccross@google.com\u003e\n"
    },
    {
      "commit": "f6db96177fc8e788a4b12d196c34b214db58bf48",
      "tree": "e98e816a4be21530d233f265e0b0e68ab8d61e14",
      "parents": [
        "be17d1d867677666e6a126fcf71c6fc4cd08df09"
      ],
      "author": {
        "name": "Arve Hjønnevåg",
        "email": "arve@android.com",
        "time": "Thu Jul 15 16:31:16 2010 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jun 14 09:09:33 2011 -0700"
      },
      "message": "ashmem: Fix ASHMEM_SET_PROT_MASK.\n\nChange-Id: I1412cc9560de8c4feb1162fc30922f0e3362a476\nSigned-off-by: Arve Hjønnevåg \u003carve@android.com\u003e\n"
    },
    {
      "commit": "6809f0087c72d4b3eab3563c4b36bab52a9d8e7c",
      "tree": "cebf18ced5f326220e22b0c4c2f00fc371b6cbe7",
      "parents": [
        "f23ba5021d5c4e35f0973dd0a15aa7dceaea0293"
      ],
      "author": {
        "name": "Bjorn Bringert",
        "email": "bringert@android.com",
        "time": "Thu Apr 15 10:04:01 2010 +0100"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jun 14 09:09:32 2011 -0700"
      },
      "message": "Implement read(2) in ashmem driver\n\nBug: 2595601\nChange-Id: I47c0016f594f9354fb8658ccb26e3d395bcb137b\nSigned-off-by: Bjorn Bringert \u003cbringert@android.com\u003e\n"
    },
    {
      "commit": "6a4e6432fc9e6e00cf295987c4e5e19d4d5bd9cd",
      "tree": "b025a6c6aa702c803cc5c0eb0fa5c8c093141cd3",
      "parents": [
        "a7f1281e92dd98063bbeec925f4cd83e2bfcbd39"
      ],
      "author": {
        "name": "Robert Love",
        "email": "rlove@google.com",
        "time": "Tue Oct 14 10:00:47 2008 -0400"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jun 14 09:08:46 2011 -0700"
      },
      "message": "ashmem for 2.6.27.\n\nForward port of ashmem to 2.6.27.\n\nSigned-off-by: Robert Love \u003crlove@google.com\u003e\n\nashmem: Don\u0027t install fault handler for private mmaps.\n\nAshmem is used to create named private heaps. If this heap is backed\nby a tmpfs file it will allocate two pages for every page touched.\nIn 2.6.27, the extra page would later be freed, but 2.6.29 does not\nscan anonymous pages when running without swap so the memory is not\nfreed while the file is referenced. This change changes the behavior\nof private ashmem mmaps to match /dev/zero instead tmpfs.\n\nSigned-off-by: Arve Hjønnevåg \u003carve@android.com\u003e\n\nashmem: Add common prefix to name reported in /proc/pid/maps\n\nSigned-off-by: Arve Hjønnevåg \u003carve@android.com\u003e\n\nashmem: don\u0027t require a page aligned size\n\nThis makes ashmem more similar to shmem and mmap, by\nnot requiring the specified size to be page aligned,\ninstead rounding it internally as needed.\n\nSigned-off-by: Marco Nelissen \u003cmarcone@android.com\u003e\n"
    },
    {
      "commit": "83de731ffcc6777a33e8a6132c7da8d91faac9ca",
      "tree": "b206ab0d3b2ff4bf814d63772aeaab9f4559080f",
      "parents": [
        "180b7a0ba65bb1c60076b9f5efee22cf6b1361bf"
      ],
      "author": {
        "name": "Arve Hjønnevåg",
        "email": "arve@android.com",
        "time": "Tue Feb 17 14:51:02 2009 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jun 14 09:08:39 2011 -0700"
      },
      "message": "mm: Add min_free_order_shift tunable.\n\nBy default the kernel tries to keep half as much memory free at each\norder as it does for one order below. This can be too agressive when\nrunning without swap.\n\nChange-Id: I5efc1a0b50f41ff3ac71e92d2efd175dedd54ead\nSigned-off-by: Arve Hjønnevåg \u003carve@android.com\u003e\n"
    },
    {
      "commit": "40779859de0f73b40390c6401a024d06cf024290",
      "tree": "b799c66c3886a8be5c40c3c382f1a5feda7dabef",
      "parents": [
        "ffdb8f1bfbd9cef1394f5d3c4a774015d4ac0f97",
        "a947eb95ea03199da7408a64baa97fbb613e9b84"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 13 13:00:53 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 13 13:00:53 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  SLAB: Record actual last user of freed objects.\n  slub: always align cpu_slab to honor cmpxchg_double requirement\n"
    },
    {
      "commit": "8397345172aa5cdcbc133977af9d525f45b874ea",
      "tree": "9b1077a62bbe06d20f1e49d1aa842db0435be085",
      "parents": [
        "59c5f46fbe01a00eedf54a23789634438bb80603",
        "e6bc45d65df8599fdbae73be9cec4ceed274db53"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 07 18:36:59 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 07 18:36:59 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  vfs: make unlink() and rmdir() return ENOENT in preference to EROFS\n  lmLogOpen() broken failure exit\n  usb: remove bad dput after dentry_unhash\n  more conservative S_NOSEC handling\n"
    },
    {
      "commit": "e0dcd8a05be438b3d2e49ef61441ea3a463663f8",
      "tree": "a498479e6015180c26c5e5e37214b757b62098b3",
      "parents": [
        "0d6925d43bd637fe4da7acb7bf1d0b92d38ab34b"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Sun Jun 05 22:03:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 06 18:00:27 2011 +0900"
      },
      "message": "mm: fix ENOSPC returned by handle_mm_fault()\n\nAl Viro observes that in the hugetlb case, handle_mm_fault() may return\na value of the kind ENOSPC when its caller is expecting a value of the\nkind VM_FAULT_SIGBUS: fix alloc_huge_page()\u0027s failure returns.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e1f1de02c2275d7172e18dc4e7c2065777611bf",
      "tree": "15e9d202e64275cdbff6ed1d54804da5966d7d8d",
      "parents": [
        "1fa7b6a29c61358cc2ca6f64cef4aa0e1a7ca74c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 03 18:24:58 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 03 18:24:58 2011 -0400"
      },
      "message": "more conservative S_NOSEC handling\n\nCaching \"we have already removed suid/caps\" was overenthusiastic as merged.\nOn network filesystems we might have had suid/caps set on another client,\nsilently picked by this client on revalidate, all of that *without* clearing\nthe S_NOSEC flag.\n\nAFAICS, the only reasonably sane way to deal with that is\n\t* new superblock flag; unless set, S_NOSEC is not going to be set.\n\t* local block filesystems set it in their -\u003emount() (more accurately,\nmount_bdev() does, so does btrfs -\u003emount(), users of mount_bdev() other than\nlocal block ones clear it)\n\t* if any network filesystem (or a cluster one) wants to use S_NOSEC,\nit\u0027ll need to set MS_NOSEC in sb-\u003es_flags *AND* take care to clear S_NOSEC when\ninode attribute changes are picked from other clients.\n\nIt\u0027s not an earth-shattering hole (anybody that can set suid on another client\nwill almost certainly be able to write to the file before doing that anyway),\nbut it\u0027s a bug that needs fixing.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a947eb95ea03199da7408a64baa97fbb613e9b84",
      "tree": "f3a6c46b2c1b19a332a009d0e5ddb7512e21a40f",
      "parents": [
        "d4d84fef6d0366b585b7de13527a0faeca84d9ce"
      ],
      "author": {
        "name": "Suleiman Souhlal",
        "email": "ssouhlal@FreeBSD.org",
        "time": "Thu Jun 02 00:16:42 2011 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Jun 03 19:33:50 2011 +0300"
      },
      "message": "SLAB: Record actual last user of freed objects.\n\nCurrently, when using CONFIG_DEBUG_SLAB, we put in kfree() or\nkmem_cache_free() as the last user of free objects, which is not\nvery useful, so change it to the caller of those functions instead.\n\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Suleiman Souhlal \u003csuleiman@google.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "d4d84fef6d0366b585b7de13527a0faeca84d9ce",
      "tree": "c67449976f955cff4a2fe8a74affc2dd67c37b7e",
      "parents": [
        "55922c9d1b84b89cb946c777fddccb3247e7df2c"
      ],
      "author": {
        "name": "Chris Metcalf",
        "email": "cmetcalf@tilera.com",
        "time": "Thu Jun 02 10:19:41 2011 -0400"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Jun 03 19:33:49 2011 +0300"
      },
      "message": "slub: always align cpu_slab to honor cmpxchg_double requirement\n\nOn an architecture without CMPXCHG_LOCAL but with DEBUG_VM enabled,\nthe VM_BUG_ON() in __pcpu_double_call_return_bool() will cause an early\npanic during boot unless we always align cpu_slab properly.\n\nIn principle we could remove the alignment-testing VM_BUG_ON() for\narchitectures that don\u0027t have CMPXCHG_LOCAL, but leaving it in means\nthat new code will tend not to break x86 even if it is introduced\non another platform, and it\u0027s low cost to require alignment.\n\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "1fa7b6a29c61358cc2ca6f64cef4aa0e1a7ca74c",
      "tree": "7318c8602f61c2052df308920bd681539f760555",
      "parents": [
        "f0f52a9463839c52a63c05d6e7d4a330d94a9794"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 02 06:11:24 2011 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 02 06:11:24 2011 +0900"
      },
      "message": "Revert \"mm: fail GFP_DMA allocations when ZONE_DMA is not configured\"\n\nThis reverts commit a197b59ae6e8bee56fcef37ea2482dc08414e2ac.\n\nAs rmk says:\n \"Commit a197b59ae6e8 (mm: fail GFP_DMA allocations when ZONE_DMA is not\n  configured) is causing regressions on ARM with various drivers which\n  use GFP_DMA.\n\n  The behaviour up until now has been to silently ignore that flag when\n  CONFIG_ZONE_DMA is not enabled, and to allocate from the normal zone.\n  However, as a result of the above commit, such allocations now fail\n  which causes drivers to fail.  These are regressions compared to the\n  previous kernel version.\"\n\nso just revert it.\n\nRequested-by: Russell King \u003clinux@arm.linux.org.uk\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "bc658c96037fc87463f0703ad2ea7c895344cb7e"
}
