)]}'
{
  "log": [
    {
      "commit": "1193755ac6328ad240ba987e6ec41d5e8baf0680",
      "tree": "40bf847d7e3ebaa57b107151d14e6cd1d280cc6d",
      "parents": [
        "4edebed86690eb8db9af3ab85baf4a34e73266cc",
        "0ef97dcfce4179a2eba046b855ee2f91d6f1b414"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs changes from Al Viro.\n \"A lot of misc stuff.  The obvious groups:\n   * Miklos\u0027 atomic_open series; kills the damn abuse of\n     -\u003ed_revalidate() by NFS, which was the major stumbling block for\n     all work in that area.\n   * ripping security_file_mmap() and dealing with deadlocks in the\n     area; sanitizing the neighborhood of vm_mmap()/vm_munmap() in\n     general.\n   * -\u003eencode_fh() switched to saner API; insane fake dentry in\n     mm/cleancache.c gone.\n   * assorted annotations in fs (endianness, __user)\n   * parts of Artem\u0027s -\u003es_dirty work (jff2 and reiserfs parts)\n   * -\u003eupdate_time() work from Josef.\n   * other bits and pieces all over the place.\n\n  Normally it would\u0027ve been in two or three pull requests, but\n  signal.git stuff had eaten a lot of time during this cycle ;-/\"\n\nFix up trivial conflicts in Documentation/filesystems/vfs.txt (the\n\u0027truncate_range\u0027 inode method was removed by the VM changes, the VFS\nupdate adds an \u0027update_time()\u0027 method), and in fs/btrfs/ulist.[ch] (due\nto sparse fix added twice, with other changes nearby).\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (95 commits)\n  nfs: don\u0027t open in -\u003ed_revalidate\n  vfs: retry last component if opening stale dentry\n  vfs: nameidata_to_filp(): don\u0027t throw away file on error\n  vfs: nameidata_to_filp(): inline __dentry_open()\n  vfs: do_dentry_open(): don\u0027t put filp\n  vfs: split __dentry_open()\n  vfs: do_last() common post lookup\n  vfs: do_last(): add audit_inode before open\n  vfs: do_last(): only return EISDIR for O_CREAT\n  vfs: do_last(): check LOOKUP_DIRECTORY\n  vfs: do_last(): make ENOENT exit RCU safe\n  vfs: make follow_link check RCU safe\n  vfs: do_last(): use inode variable\n  vfs: do_last(): inline walk_component()\n  vfs: do_last(): make exit RCU safe\n  vfs: split do_lookup()\n  Btrfs: move over to use -\u003eupdate_time\n  fs: introduce inode operation -\u003eupdate_time\n  reiserfs: get rid of resierfs_sync_super\n  reiserfs: mark the superblock as dirty a bit later\n  ...\n"
    },
    {
      "commit": "e3fc629d7bb70848fbf479688a66d4e76dff46ac",
      "tree": "96b6d5ffdb1c643fb28807a635e6ca4e24964034",
      "parents": [
        "98de59bfe4b2ff6344d9ad8e5296f80de5dcc5b6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 20:08:42 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 10:37:17 2012 -0400"
      },
      "message": "switch aio and shm to do_mmap_pgoff(), make do_mmap() static\n\nafter all, 0 bytes and 0 pages is the same thing...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5bf5f03c271907978489868a4c72aeb42b5127d2",
      "tree": "2d6b283fa5ee83b723fd4b4a8f070ae53c60ebe9",
      "parents": [
        "dbda591d920b4c7692725b13e3f68ecb251e9080"
      ],
      "author": {
        "name": "Pravin B Shelar",
        "email": "pshelar@nicira.com",
        "time": "Tue May 29 15:06:49 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "mm: fix slab-\u003epage flags corruption\n\nTransparent huge pages can change page-\u003eflags (PG_compound_lock) without\ntaking Slab lock.  Since THP can not break slab pages we can safely access\ncompound page without taking compound lock.\n\nSpecifically this patch fixes a race between compound_unlock() and slab\nfunctions which perform page-flags updates.  This can occur when\nget_page()/put_page() is called on a page from slab.\n\n[akpm@linux-foundation.org: tweak comment text, fix comment layout, fix label indenting]\nReported-by: Amey Bhide \u003cabhide@nicira.com\u003e\nSigned-off-by: Pravin B Shelar \u003cpshelar@nicira.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "17cf28afea2a1112f240a3a2da8af883be024811",
      "tree": "ed9e3eb9b1d44118a12e4ecdf369e3b9b3208be1",
      "parents": [
        "3f31d07571eeea18a7d34db9af21d2285b807a17"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:41 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:23 2012 -0700"
      },
      "message": "mm/fs: remove truncate_range\n\nRemove vmtruncate_range(), and remove the truncate_range method from\nstruct inode_operations: only tmpfs ever supported it, and tmpfs has now\nconverted over to using the fallocate method of file_operations.\n\nUpdate Documentation accordingly, adding (setlease and) fallocate lines.\nAnd while we\u0027re in mm.h, remove duplicate declarations of shmem_lock() and\nshmem_file_setup(): everyone is now using the ones in shmem_fs.h.\n\nBased-on-patch-by: Cong Wang \u003camwang@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Cong Wang \u003camwang@redhat.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f74d2c8e827af12596f153a564c868bf6dbe3dd",
      "tree": "6ef2bafd6c23a4c4a9ef716ea530daea824a7721",
      "parents": [
        "7e027b14d53e9729f823ba8652095d1e309aa8e9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 06 13:54:06 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 06 14:05:17 2012 -0700"
      },
      "message": "vm: remove \u0027nr_accounted\u0027 calculations from the unmap_vmas() interfaces\n\nThe VM accounting makes no sense at this level, and half of the callers\ndidn\u0027t ever actually use the end result.  The only time we want to\nunaccount the memory is when we actually remove the vma, so do the\naccounting at that point instead.\n\nThis simplifies the interfaces (no need to pass down that silly page\ncounter to functions that really don\u0027t care), and also makes it much\nmore obvious what is actually going on: we do vm_[un]acct_memory() when\nadding or removing the vma, not on random page walking.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7e027b14d53e9729f823ba8652095d1e309aa8e9",
      "tree": "a706e9f6ac67d92e4df18662cdb0205844a17871",
      "parents": [
        "18b15fcde715a5512671af9d72a76e7f6d7cb6f0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 06 13:43:15 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 06 13:52:07 2012 -0700"
      },
      "message": "vm: simplify unmap_vmas() calling convention\n\nNone of the callers want to pass in \u0027zap_details\u0027, and it doesn\u0027t even\nmake sense for the case of actually unmapping vma\u0027s.  So remove the\nargument, and clean up the interface.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bfce281c287a427d0841fadf5d59242757b4e620",
      "tree": "abca9ebeef4c668021e85e4d54e6e779121e92cc",
      "parents": [
        "9f3a4afb276e4d8b3be7f3e678d4dbd11470416f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Apr 20 21:57:04 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 21 01:58:20 2012 -0400"
      },
      "message": "kill mm argument of vm_munmap()\n\nit\u0027s always current-\u003emm\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6be5ceb02e98eaf6cfc4f8b12a896d04023f340d",
      "tree": "f34de1392300bbf63549f4eeb20f7606d6f7b1f9",
      "parents": [
        "a46ef99d80817a167477ed1c8b4d90ee0c2e726f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 17:13:58 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 17:29:13 2012 -0700"
      },
      "message": "VM: add \"vm_mmap()\" helper function\n\nThis continues the theme started with vm_brk() and vm_munmap():\nvm_mmap() does the same thing as do_mmap(), but additionally does the\nrequired VM locking.\n\nThis uninlines (and rewrites it to be clearer) do_mmap(), which sadly\nduplicates it in mm/mmap.c and mm/nommu.c.  But that way we don\u0027t have\nto export our internal do_mmap_pgoff() function.\n\nSome day we hopefully don\u0027t have to export do_mmap() either, if all\nmodular users can become the simpler vm_mmap() instead.  We\u0027re actually\nvery close to that already, with the notable exception of the (broken)\nuse in i810, and a couple of stragglers in binfmt_elf.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a46ef99d80817a167477ed1c8b4d90ee0c2e726f",
      "tree": "3d8c980c627e8b9c009dbf63628a9be8b8d1069f",
      "parents": [
        "e4eb1ff61b323d6141614e5458a1f53c7046ff8e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 16:20:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 17:29:13 2012 -0700"
      },
      "message": "VM: add \"vm_munmap()\" helper function\n\nLike the vm_brk() function, this is the same as \"do_munmap()\", except it\ndoes the VM locking for the caller.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e4eb1ff61b323d6141614e5458a1f53c7046ff8e",
      "tree": "7a0251509c169b0df1a6bf4bc47c5bca709e06da",
      "parents": [
        "3b422e9c2c020a1137349c614da7f9c9761a0922"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 15:35:40 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 17:28:17 2012 -0700"
      },
      "message": "VM: add \"vm_brk()\" helper function\n\nIt does the same thing as \"do_brk()\", except it handles the VM locking\ntoo.\n\nIt turns out that all external callers want that anyway, so we can make\ndo_brk() static to just mm/mmap.c while at it.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "532bfc851a7475fb6a36c1e953aa395798a7cca7",
      "tree": "a7892e5a31330dd59f31959efbe9fda1803784fd",
      "parents": [
        "0195c00244dc2e9f522475868fa278c473ba7339",
        "8da00edc1069f01c34510fa405dc15d96c090a3f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:19:27 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:19:28 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge third batch of patches from Andrew Morton:\n - Some MM stragglers\n - core SMP library cleanups (on_each_cpu_mask)\n - Some IPI optimisations\n - kexec\n - kdump\n - IPMI\n - the radix-tree iterator work\n - various other misc bits.\n\n \"That\u0027ll do for -rc1.  I still have ~10 patches for 3.4, will send\n  those along when they\u0027ve baked a little more.\"\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (35 commits)\n  backlight: fix typo in tosa_lcd.c\n  crc32: add help text for the algorithm select option\n  mm: move hugepage test examples to tools/testing/selftests/vm\n  mm: move slabinfo.c to tools/vm\n  mm: move page-types.c from Documentation to tools/vm\n  selftests/Makefile: make `run_tests\u0027 depend on `all\u0027\n  selftests: launch individual selftests from the main Makefile\n  radix-tree: use iterators in find_get_pages* functions\n  radix-tree: rewrite gang lookup using iterator\n  radix-tree: introduce bit-optimized iterator\n  fs/proc/namespaces.c: prevent crash when ns_entries[] is empty\n  nbd: rename the nbd_device variable from lo to nbd\n  pidns: add reboot_pid_ns() to handle the reboot syscall\n  sysctl: use bitmap library functions\n  ipmi: use locks on watchdog timeout set on reboot\n  ipmi: simplify locking\n  ipmi: fix message handling during panics\n  ipmi: use a tasklet for handling received messages\n  ipmi: increase KCS timeouts\n  ipmi: decrease the IPMI message transaction time in interrupt mode\n  ...\n"
    },
    {
      "commit": "623e3db9f9b7d6e7b2a99180f9cf0825c936ab7a",
      "tree": "d8eaa8f1665a048c4318ccd0759775e057792823",
      "parents": [
        "3748b2f15b06ea1861df39d5e9693dcd6e9542b1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Mar 28 14:42:40 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:35 2012 -0700"
      },
      "message": "mm for fs: add truncate_pagecache_range()\n\nHolepunching filesystems ext4 and xfs are using truncate_inode_pages_range\nbut forgetting to unmap pages first (ocfs2 remembers).  This is not really\na bug, since races already require truncate_inode_page() to handle that\ncase once the page is locked; but it can be very inefficient if the file\nbeing punched happens to be mapped into many vmas.\n\nProvide a drop-in replacement truncate_pagecache_range() which does the\nunmapping pass first, handling the awkward mismatch between arguments to\ntruncate_inode_pages_range() and arguments to unmap_mapping_range().\n\nNote that holepunching does not unmap privately COWed pages in the range:\nPOSIX requires that we do so when truncating, but it\u0027s hard to justify,\ndifficult to implement without an i_size cutoff, and no filesystem is\nattempting to implement it.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: Ben Myers \u003cbpm@sgi.com\u003e\nCc: Alex Elder \u003celder@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0195c00244dc2e9f522475868fa278c473ba7339",
      "tree": "f97ca98ae64ede2c33ad3de05ed7bbfa4f4495ed",
      "parents": [
        "f21ce8f8447c8be8847dadcfdbcc76b0d7365fa5",
        "141124c02059eee9dbc5c86ea797b1ca888e77f7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 15:58:21 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 15:58:21 2012 -0700"
      },
      "message": "Merge tag \u0027split-asm_system_h-for-linus-20120328\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-asm_system\n\nPull \"Disintegrate and delete asm/system.h\" from David Howells:\n \"Here are a bunch of patches to disintegrate asm/system.h into a set of\n  separate bits to relieve the problem of circular inclusion\n  dependencies.\n\n  I\u0027ve built all the working defconfigs from all the arches that I can\n  and made sure that they don\u0027t break.\n\n  The reason for these patches is that I recently encountered a circular\n  dependency problem that came about when I produced some patches to\n  optimise get_order() by rewriting it to use ilog2().\n\n  This uses bitops - and on the SH arch asm/bitops.h drags in\n  asm-generic/get_order.h by a circuituous route involving asm/system.h.\n\n  The main difficulty seems to be asm/system.h.  It holds a number of\n  low level bits with no/few dependencies that are commonly used (eg.\n  memory barriers) and a number of bits with more dependencies that\n  aren\u0027t used in many places (eg.  switch_to()).\n\n  These patches break asm/system.h up into the following core pieces:\n\n    (1) asm/barrier.h\n\n        Move memory barriers here.  This already done for MIPS and Alpha.\n\n    (2) asm/switch_to.h\n\n        Move switch_to() and related stuff here.\n\n    (3) asm/exec.h\n\n        Move arch_align_stack() here.  Other process execution related bits\n        could perhaps go here from asm/processor.h.\n\n    (4) asm/cmpxchg.h\n\n        Move xchg() and cmpxchg() here as they\u0027re full word atomic ops and\n        frequently used by atomic_xchg() and atomic_cmpxchg().\n\n    (5) asm/bug.h\n\n        Move die() and related bits.\n\n    (6) asm/auxvec.h\n\n        Move AT_VECTOR_SIZE_ARCH here.\n\n  Other arch headers are created as needed on a per-arch basis.\"\n\nFixed up some conflicts from other header file cleanups and moving code\naround that has happened in the meantime, so David\u0027s testing is somewhat\nweakened by that.  We\u0027ll find out anything that got broken and fix it..\n\n* tag \u0027split-asm_system_h-for-linus-20120328\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-asm_system: (38 commits)\n  Delete all instances of asm/system.h\n  Remove all #inclusions of asm/system.h\n  Add #includes needed to permit the removal of asm/system.h\n  Move all declarations of free_initmem() to linux/mm.h\n  Disintegrate asm/system.h for OpenRISC\n  Split arch_align_stack() out from asm-generic/system.h\n  Split the switch_to() wrapper out of asm-generic/system.h\n  Move the asm-generic/system.h xchg() implementation to asm-generic/cmpxchg.h\n  Create asm-generic/barrier.h\n  Make asm-generic/cmpxchg.h #include asm-generic/cmpxchg-local.h\n  Disintegrate asm/system.h for Xtensa\n  Disintegrate asm/system.h for Unicore32 [based on ver #3, changed by gxt]\n  Disintegrate asm/system.h for Tile\n  Disintegrate asm/system.h for Sparc\n  Disintegrate asm/system.h for SH\n  Disintegrate asm/system.h for Score\n  Disintegrate asm/system.h for S390\n  Disintegrate asm/system.h for PowerPC\n  Disintegrate asm/system.h for PA-RISC\n  Disintegrate asm/system.h for MN10300\n  ...\n"
    },
    {
      "commit": "49a7f04a4b9d45cd794741ce3d5d66524b37bdd0",
      "tree": "74f7df3f508691bd73597119a537f810cf43d2ef",
      "parents": [
        "705f4502bb9592ad0e8fb1cd2ba5ae4ce955ff8b"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Mar 28 18:30:03 2012 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Mar 28 18:30:03 2012 +0100"
      },
      "message": "Move all declarations of free_initmem() to linux/mm.h\n\nMove all declarations of free_initmem() to linux/mm.h so that there\u0027s only one\nand it\u0027s used by everything.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\ncc: linux-c6x-dev@linux-c6x.org\ncc: microblaze-uclinux@itee.uq.edu.au\ncc: linux-sh@vger.kernel.org\ncc: sparclinux@vger.kernel.org\ncc: x86@kernel.org\ncc: linux-mm@kvack.org\n"
    },
    {
      "commit": "ed2d265d1266736bd294332d7f649003943ae36e",
      "tree": "860e5b7bb72933e4a9abacdc2f2d75a0e6254e32",
      "parents": [
        "f1d38e423a697b7aa06e12d3ca4753bcc1aa3531",
        "6c03438edeb5c359af35f060ea016ca65671c269"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:08:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:08:39 2012 -0700"
      },
      "message": "Merge tag \u0027bug-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\nPull \u003clinux/bug.h\u003e cleanup from Paul Gortmaker:\n \"The changes shown here are to unify linux\u0027s BUG support under the one\n  \u003clinux/bug.h\u003e file.  Due to historical reasons, we have some BUG code\n  in bug.h and some in kernel.h -- i.e.  the support for BUILD_BUG in\n  linux/kernel.h predates the addition of linux/bug.h, but old code in\n  kernel.h wasn\u0027t moved to bug.h at that time.  As a band-aid, kernel.h\n  was including \u003casm/bug.h\u003e to pseudo link them.\n\n  This has caused confusion[1] and general yuck/WTF[2] reactions.  Here\n  is an example that violates the principle of least surprise:\n\n      CC      lib/string.o\n      lib/string.c: In function \u0027strlcat\u0027:\n      lib/string.c:225:2: error: implicit declaration of function \u0027BUILD_BUG_ON\u0027\n      make[2]: *** [lib/string.o] Error 1\n      $\n      $ grep linux/bug.h lib/string.c\n      #include \u003clinux/bug.h\u003e\n      $\n\n  We\u0027ve included \u003clinux/bug.h\u003e for the BUG infrastructure and yet we\n  still get a compile fail! [We\u0027ve not kernel.h for BUILD_BUG_ON.] Ugh -\n  very confusing for someone who is new to kernel development.\n\n  With the above in mind, the goals of this changeset are:\n\n  1) find and fix any include/*.h files that were relying on the\n     implicit presence of BUG code.\n  2) find and fix any C files that were consuming kernel.h and hence\n     relying on implicitly getting some/all BUG code.\n  3) Move the BUG related code living in kernel.h to \u003clinux/bug.h\u003e\n  4) remove the asm/bug.h from kernel.h to finally break the chain.\n\n  During development, the order was more like 3-4, build-test, 1-2.  But\n  to ensure that git history for bisect doesn\u0027t get needless build\n  failures introduced, the commits have been reorderd to fix the problem\n  areas in advance.\n\n\t[1]  https://lkml.org/lkml/2012/1/3/90\n\t[2]  https://lkml.org/lkml/2012/1/17/414\"\n\nFix up conflicts (new radeon file, reiserfs header cleanups) as per Paul\nand linux-next.\n\n* tag \u0027bug-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:\n  kernel.h: doesn\u0027t explicitly use bug.h, so don\u0027t include it.\n  bug: consolidate BUILD_BUG_ON with other bug code\n  BUG: headers with BUG/BUG_ON etc. need linux/bug.h\n  bug.h: add include of it to various implicit C users\n  lib: fix implicit users of kernel.h for TAINT_WARN\n  spinlock: macroize assert_spin_locked to avoid bug.h dependency\n  x86: relocate get/set debugreg fcns to include/asm/debugreg.\n"
    },
    {
      "commit": "accb61fe7bb0f5c2a4102239e4981650f9048519",
      "tree": "5e7120b80944d9719684b94e0c419761ba2d59e1",
      "parents": [
        "909af768e88867016f427264ae39d27a57b6a8ed"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Fri Mar 23 15:02:51 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:42 2012 -0700"
      },
      "message": "coredump: add VM_NODUMP, MADV_NODUMP, MADV_CLEAR_NODUMP\n\nSince we no longer need the VM_ALWAYSDUMP flag, let\u0027s use the freed bit\nfor \u0027VM_NODUMP\u0027 flag.  The idea is is to add a new madvise() flag:\nMADV_DONTDUMP, which can be set by applications to specifically request\nmemory regions which should not dump core.\n\nThe specific application I have in mind is qemu: we can add a flag there\nthat wouldn\u0027t dump all of guest memory when qemu dumps core.  This flag\nmight also be useful for security sensitive apps that want to absolutely\nmake sure that parts of memory are not dumped.  To clear the flag use:\nMADV_DODUMP.\n\n[akpm@linux-foundation.org: s/MADV_NODUMP/MADV_DONTDUMP/, s/MADV_CLEAR_NODUMP/MADV_DODUMP/, per Roland]\n[akpm@linux-foundation.org: fix up the architectures which broke]\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@hack.frob.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Matt Turner \u003cmattst88@gmail.com\u003e\nCc: \"James E.J. Bottomley\" \u003cjejb@parisc-linux.org\u003e\nCc: Helge Deller \u003cdeller@gmx.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "909af768e88867016f427264ae39d27a57b6a8ed",
      "tree": "5068b4d98e4bedecde89d9113dc7ef8c69633f45",
      "parents": [
        "1cc684ab75123efe7ff446eb821d44375ba8fa30"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Fri Mar 23 15:02:51 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:42 2012 -0700"
      },
      "message": "coredump: remove VM_ALWAYSDUMP flag\n\nThe motivation for this patchset was that I was looking at a way for a\nqemu-kvm process, to exclude the guest memory from its core dump, which\ncan be quite large.  There are already a number of filter flags in\n/proc/\u003cpid\u003e/coredump_filter, however, these allow one to specify \u0027types\u0027\nof kernel memory, not specific address ranges (which is needed in this\ncase).\n\nSince there are no more vma flags available, the first patch eliminates\nthe need for the \u0027VM_ALWAYSDUMP\u0027 flag.  The flag is used internally by\nthe kernel to mark vdso and vsyscall pages.  However, it is simple\nenough to check if a vma covers a vdso or vsyscall page without the need\nfor this flag.\n\nThe second patch then replaces the \u0027VM_ALWAYSDUMP\u0027 flag with a new\n\u0027VM_NODUMP\u0027 flag, which can be set by userspace using new madvise flags:\n\u0027MADV_DONTDUMP\u0027, and unset via \u0027MADV_DODUMP\u0027.  The core dump filters\ncontinue to work the same as before unless \u0027MADV_DONTDUMP\u0027 is set on the\nregion.\n\nThe qemu code which implements this features is at:\n\n  http://people.redhat.com/~jbaron/qemu-dump/qemu-dump.patch\n\nIn my testing the qemu core dump shrunk from 383MB -\u003e 13MB with this\npatch.\n\nI also believe that the \u0027MADV_DONTDUMP\u0027 flag might be useful for\nsecurity sensitive apps, which might want to select which areas are\ndumped.\n\nThis patch:\n\nThe VM_ALWAYSDUMP flag is currently used by the coredump code to\nindicate that a vma is part of a vsyscall or vdso section.  However, we\ncan determine if a vma is in one these sections by checking it against\nthe gate_vma and checking for a non-NULL return value from\narch_vma_name().  Thus, freeing a valuable vma bit.\n\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@hack.frob.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Avi Kivity \u003cavi@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": "754b9800779402924fffe456b49d557e15260cbf",
      "tree": "0e0441eca766616fccd8fc37a3885397efc6063a",
      "parents": [
        "35cb8d9e18c0bb33b90d7e574abadbe23b65427d",
        "ea281a9ebaba3287130dbe15bb0aad6f798bb06b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:42:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:42:04 2012 -0700"
      },
      "message": "Merge branch \u0027x86-mce-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull MCE changes from Ingo Molnar.\n\n* \u0027x86-mce-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  x86/mce: Fix return value of mce_chrdev_read() when erst is disabled\n  x86/mce: Convert static array of pointers to per-cpu variables\n  x86/mce: Replace hard coded hex constants with symbolic defines\n  x86/mce: Recognise machine check bank signature for data path error\n  x86/mce: Handle \"action required\" errors\n  x86/mce: Add mechanism to safely save information in MCE handler\n  x86/mce: Create helper function to save addr/misc when needed\n  HWPOISON: Add code to handle \"action required\" errors.\n  HWPOISON: Clean up memory_failure() vs. __memory_failure()\n"
    },
    {
      "commit": "95211279c5ad00a317c98221d7e4365e02f20836",
      "tree": "2ddc8625378d2915b8c96392f3cf6663b705ed55",
      "parents": [
        "5375871d432ae9fc581014ac117b96aaee3cd0c7",
        "12724850e8064f64b6223d26d78c0597c742c65a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:04:48 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:04:48 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge first batch of patches from Andrew Morton:\n \"A few misc things and all the MM queue\"\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (92 commits)\n  memcg: avoid THP split in task migration\n  thp: add HPAGE_PMD_* definitions for !CONFIG_TRANSPARENT_HUGEPAGE\n  memcg: clean up existing move charge code\n  mm/memcontrol.c: remove unnecessary \u0027break\u0027 in mem_cgroup_read()\n  mm/memcontrol.c: remove redundant BUG_ON() in mem_cgroup_usage_unregister_event()\n  mm/memcontrol.c: s/stealed/stolen/\n  memcg: fix performance of mem_cgroup_begin_update_page_stat()\n  memcg: remove PCG_FILE_MAPPED\n  memcg: use new logic for page stat accounting\n  memcg: remove PCG_MOVE_LOCK flag from page_cgroup\n  memcg: simplify move_account() check\n  memcg: remove EXPORT_SYMBOL(mem_cgroup_update_page_stat)\n  memcg: kill dead prev_priority stubs\n  memcg: remove PCG_CACHE page_cgroup flag\n  memcg: let css_get_next() rely upon rcu_read_lock()\n  cgroup: revert ss_id_lock to spinlock\n  idr: make idr_get_next() good for rcu_read_lock()\n  memcg: remove unnecessary thp check in page stat accounting\n  memcg: remove redundant returns\n  memcg: enum lru_list lru\n  ...\n"
    },
    {
      "commit": "8d13bddd11c10db40e2c81b4b224c11126691fc0",
      "tree": "bec31e54cbc43bf6b49c391d81893203b903b5ec",
      "parents": [
        "d1d5e05ffdc110021ae7937802e88ae0d223dcdc"
      ],
      "author": {
        "name": "Kautuk Consul",
        "email": "consul.kautuk@gmail.com",
        "time": "Wed Mar 21 16:34:15 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:00 2012 -0700"
      },
      "message": "page_alloc.c: remove add_from_early_node_map()\n\nadd_from_early_node_map() is unused.\n\nSigned-off-by: Kautuk Consul \u003cconsul.kautuk@gmail.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "05af2e104a0c282dcd9303431e1360750ba76de6",
      "tree": "cdd5876f2d17b26cc3ded7ef85d04d0e853e9b7e",
      "parents": [
        "90481622d75715bfcb68501280a917dbfe516029"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Mar 21 16:34:13 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "mm, counters: remove task argument to sync_mm_rss() and __sync_task_rss_stat()\n\nsync_mm_rss() can only be used for current to avoid race conditions in\niterating and clearing its per-task counters.  Remove the task argument\nfor it and its helper function, __sync_task_rss_stat(), to avoid thinking\nit can be used safely for anything other than current.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b76437579d1344b612cf1851ae610c636cec7db0",
      "tree": "37c31c957f1159635258168e27e49b90347e37aa",
      "parents": [
        "9e81130b7ce23050335b1197bb51743517b5b9d0"
      ],
      "author": {
        "name": "Siddhesh Poyarekar",
        "email": "siddhesh.poyarekar@gmail.com",
        "time": "Wed Mar 21 16:34:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "procfs: mark thread stack correctly in proc/\u003cpid\u003e/maps\n\nStack for a new thread is mapped by userspace code and passed via\nsys_clone.  This memory is currently seen as anonymous in\n/proc/\u003cpid\u003e/maps, which makes it difficult to ascertain which mappings\nare being used for thread stacks.  This patch uses the individual task\nstack pointers to determine which vmas are actually thread stacks.\n\nFor a multithreaded program like the following:\n\n\t#include \u003cpthread.h\u003e\n\n\tvoid *thread_main(void *foo)\n\t{\n\t\twhile(1);\n\t}\n\n\tint main()\n\t{\n\t\tpthread_t t;\n\t\tpthread_create(\u0026t, NULL, thread_main, NULL);\n\t\tpthread_join(t, NULL);\n\t}\n\nproc/PID/maps looks like the following:\n\n    00400000-00401000 r-xp 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    00600000-00601000 rw-p 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    019ef000-01a10000 rw-p 00000000 00:00 0                                  [heap]\n    7f8a44491000-7f8a44492000 ---p 00000000 00:00 0\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0\n    7f8a44c92000-7f8a44e3d000 r-xp 00000000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a44e3d000-7f8a4503d000 ---p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a4503d000-7f8a45041000 r--p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45041000-7f8a45043000 rw-p 001af000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45043000-7f8a45048000 rw-p 00000000 00:00 0\n    7f8a45048000-7f8a4505f000 r-xp 00000000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4505f000-7f8a4525e000 ---p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525e000-7f8a4525f000 r--p 00016000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525f000-7f8a45260000 rw-p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a45260000-7f8a45264000 rw-p 00000000 00:00 0\n    7f8a45264000-7f8a45286000 r-xp 00000000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45457000-7f8a4545a000 rw-p 00000000 00:00 0\n    7f8a45484000-7f8a45485000 rw-p 00000000 00:00 0\n    7f8a45485000-7f8a45486000 r--p 00021000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45486000-7f8a45487000 rw-p 00022000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45487000-7f8a45488000 rw-p 00000000 00:00 0\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0                          [stack]\n    7fff627ff000-7fff62800000 r-xp 00000000 00:00 0                          [vdso]\n    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]\n\nHere, one could guess that 7f8a44492000-7f8a44c92000 is a stack since\nthe earlier vma that has no permissions (7f8a44e3d000-7f8a4503d000) but\nthat is not always a reliable way to find out which vma is a thread\nstack.  Also, /proc/PID/maps and /proc/PID/task/TID/maps has the same\ncontent.\n\nWith this patch in place, /proc/PID/task/TID/maps are treated as \u0027maps\nas the task would see it\u0027 and hence, only the vma that that task uses as\nstack is marked as [stack].  All other \u0027stack\u0027 vmas are marked as\nanonymous memory.  /proc/PID/maps acts as a thread group level view,\nwhere all thread stack vmas are marked as [stack:TID] where TID is the\nprocess ID of the task that uses that vma as stack, while the process\nstack is marked as [stack].\n\nSo /proc/PID/maps will look like this:\n\n    00400000-00401000 r-xp 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    00600000-00601000 rw-p 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    019ef000-01a10000 rw-p 00000000 00:00 0                                  [heap]\n    7f8a44491000-7f8a44492000 ---p 00000000 00:00 0\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0                          [stack:1442]\n    7f8a44c92000-7f8a44e3d000 r-xp 00000000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a44e3d000-7f8a4503d000 ---p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a4503d000-7f8a45041000 r--p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45041000-7f8a45043000 rw-p 001af000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45043000-7f8a45048000 rw-p 00000000 00:00 0\n    7f8a45048000-7f8a4505f000 r-xp 00000000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4505f000-7f8a4525e000 ---p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525e000-7f8a4525f000 r--p 00016000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525f000-7f8a45260000 rw-p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a45260000-7f8a45264000 rw-p 00000000 00:00 0\n    7f8a45264000-7f8a45286000 r-xp 00000000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45457000-7f8a4545a000 rw-p 00000000 00:00 0\n    7f8a45484000-7f8a45485000 rw-p 00000000 00:00 0\n    7f8a45485000-7f8a45486000 r--p 00021000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45486000-7f8a45487000 rw-p 00022000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45487000-7f8a45488000 rw-p 00000000 00:00 0\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0                          [stack]\n    7fff627ff000-7fff62800000 r-xp 00000000 00:00 0                          [vdso]\n    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]\n\nThus marking all vmas that are used as stacks by the threads in the\nthread group along with the process stack.  The task level maps will\nhowever like this:\n\n    00400000-00401000 r-xp 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    00600000-00601000 rw-p 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    019ef000-01a10000 rw-p 00000000 00:00 0                                  [heap]\n    7f8a44491000-7f8a44492000 ---p 00000000 00:00 0\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0                          [stack]\n    7f8a44c92000-7f8a44e3d000 r-xp 00000000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a44e3d000-7f8a4503d000 ---p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a4503d000-7f8a45041000 r--p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45041000-7f8a45043000 rw-p 001af000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45043000-7f8a45048000 rw-p 00000000 00:00 0\n    7f8a45048000-7f8a4505f000 r-xp 00000000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4505f000-7f8a4525e000 ---p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525e000-7f8a4525f000 r--p 00016000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525f000-7f8a45260000 rw-p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a45260000-7f8a45264000 rw-p 00000000 00:00 0\n    7f8a45264000-7f8a45286000 r-xp 00000000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45457000-7f8a4545a000 rw-p 00000000 00:00 0\n    7f8a45484000-7f8a45485000 rw-p 00000000 00:00 0\n    7f8a45485000-7f8a45486000 r--p 00021000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45486000-7f8a45487000 rw-p 00022000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45487000-7f8a45488000 rw-p 00000000 00:00 0\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0\n    7fff627ff000-7fff62800000 r-xp 00000000 00:00 0                          [vdso]\n    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]\n\nwhere only the vma that is being used as a stack by *that* task is\nmarked as [stack].\n\nAnalogous changes have been made to /proc/PID/smaps,\n/proc/PID/numa_maps, /proc/PID/task/TID/smaps and\n/proc/PID/task/TID/numa_maps. Relevant snippets from smaps and\nnuma_maps:\n\n    [siddhesh@localhost ~ ]$ pgrep a.out\n    1441\n    [siddhesh@localhost ~ ]$ cat /proc/1441/smaps | grep \"\\[stack\"\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0                          [stack:1442]\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0                          [stack]\n    [siddhesh@localhost ~ ]$ cat /proc/1441/task/1442/smaps | grep \"\\[stack\"\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0                          [stack]\n    [siddhesh@localhost ~ ]$ cat /proc/1441/task/1441/smaps | grep \"\\[stack\"\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0                          [stack]\n    [siddhesh@localhost ~ ]$ cat /proc/1441/numa_maps | grep \"stack\"\n    7f8a44492000 default stack:1442 anon\u003d2 dirty\u003d2 N0\u003d2\n    7fff6273a000 default stack anon\u003d3 dirty\u003d3 N0\u003d3\n    [siddhesh@localhost ~ ]$ cat /proc/1441/task/1442/numa_maps | grep \"stack\"\n    7f8a44492000 default stack anon\u003d2 dirty\u003d2 N0\u003d2\n    [siddhesh@localhost ~ ]$ cat /proc/1441/task/1441/numa_maps | grep \"stack\"\n    7fff6273a000 default stack anon\u003d3 dirty\u003d3 N0\u003d3\n\n[akpm@linux-foundation.org: checkpatch fixes]\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Siddhesh Poyarekar \u003csiddhesh.poyarekar@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@gmail.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Jamie Lokier \u003cjamie@shareable.org\u003e\nCc: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "69c978232aaa99476f9bd002c2a29a84fa3779b5",
      "tree": "7edb0da034b8824040f4f7327dd31ad260532167",
      "parents": [
        "6131728914810a6c02e08750e13e45870101e862"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Wed Mar 21 16:33:49 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:55 2012 -0700"
      },
      "message": "mm: make get_mm_counter static-inline\n\nMake get_mm_counter() always static inline, it is simple enough for that.\nAnd remove unused set_mm_counter()\n\nbloat-o-meter:\n\nadd/remove: 0/1 grow/shrink: 4/12 up/down: 99/-341 (-242)\nfunction                                     old     new   delta\ntry_to_unmap_one                             886     952     +66\nsys_remap_file_pages                        1214    1230     +16\ndup_mm                                      1684    1700     +16\ndo_exit                                     2277    2278      +1\nzap_page_range                               208     205      -3\nunmap_region                                 304     296      -8\nstatic.oom_kill_process                      554     546      -8\ntry_to_unmap_file                           1716    1700     -16\ngetrusage                                    925     909     -16\nflush_old_exec                              1704    1688     -16\nstatic.dump_header                           416     390     -26\nacct_update_integrals                        218     187     -31\ndo_task_stat                                2986    2954     -32\nget_mm_counter                                34       -     -34\nxacct_add_tsk                                371     334     -37\ntask_statm                                   172     118     -54\ntask_mem                                     383     323     -60\n\ntry_to_unmap_one() grows because update_hiwater_rss() now completely inline.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6e8bb0193af3f308ef22817a5560422d33e58b90",
      "tree": "6001421c8d389bd00b18e0510e3f6c9130f9f80b",
      "parents": [
        "853f5e264018113b1f96f05551b07a74b836c7fc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 05 13:41:15 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:39:51 2012 -0400"
      },
      "message": "VM: make unmap_vmas() return void\n\nsame story - nobody uses it and it\u0027s been pointless since\n\"mm: Remove i_mmap_lock lockbreak\" went in.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "14f5ff5df37a8fabe2d25b1e64df7e010cc87db9",
      "tree": "10f46ad8429790de35ebad33631d435f74aaff0e",
      "parents": [
        "8b2a12382ccc9df31b27dac37fe04dffe088b57c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 05 13:38:09 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:39:50 2012 -0400"
      },
      "message": "VM: make zap_page_range() return void\n\n... since all callers ignore its return value and it\u0027s been\nuseless since commit 97a894136f29802da19a15541de3c019e1ca147e\n(mm: Remove i_mmap_lock lockbreak) anyway.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "187f1882b5b0748b3c4c22274663fdb372ac0452",
      "tree": "36283f258cf65f03599a045d48bb05d0ec27f3f9",
      "parents": [
        "50af5ead3b44ccf8bd2b4d2a50c1b610f557c480"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Nov 23 20:12:59 2011 -0500"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Mar 04 17:54:34 2012 -0500"
      },
      "message": "BUG: headers with BUG/BUG_ON etc. need linux/bug.h\n\nIf a header file is making use of BUG, BUG_ON, BUILD_BUG_ON, or any\nother BUG variant in a static inline (i.e. not in a #define) then\nthat header really should be including \u003clinux/bug.h\u003e and not just\nexpecting it to be implicitly present.\n\nWe can make this change risk-free, since if the files using these\nheaders didn\u0027t have exposure to linux/bug.h already, they would have\nbeen causing compile failures/warnings.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "4e9f44ba29f20484615a461244bfd3a419391490",
      "tree": "490dd38bb8d14765327cee0be2f9731254e9c402",
      "parents": [
        "87f71ae2dd7471c1b4c94100be1f218e91dc64c3",
        "5f7b88d51e89771f64c15903b96b5933dd0bc6d8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jan 26 11:40:13 2012 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jan 26 11:40:13 2012 +0100"
      },
      "message": "Merge tag \u0027mce-recovery-for-tip\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras into x86/mce\n\nImplement MCE recovery for the data load error path and assorted cleanups.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d0b9706c20ebb4ba181dc26e52ac9a6861abf425",
      "tree": "436e89246fd5ebcf737cae27e135a1995155329b",
      "parents": [
        "02d929502ce7b57f4835d8bb7c828d36e6d9e8ce",
        "54eed6cb16ec315565aaaf8e34252ca253a68b7b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 11 19:12:10 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 11 19:12:10 2012 -0800"
      },
      "message": "Merge branch \u0027x86-mm-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\n* \u0027x86-mm-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  x86/numa: Add constraints check for nid parameters\n  mm, x86: Remove debug_pagealloc_enabled\n  x86/mm: Initialize high mem before free_all_bootmem()\n  arch/x86/kernel/e820.c: quiet sparse noise about plain integer as NULL pointer\n  arch/x86/kernel/e820.c: Eliminate bubble sort from sanitize_e820_map()\n  x86: Fix mmap random address range\n  x86, mm: Unify zone_sizes_init()\n  x86, mm: Prepare zone_sizes_init() for unification\n  x86, mm: Use max_low_pfn for ZONE_NORMAL on 64-bit\n  x86, mm: Wrap ZONE_DMA32 with CONFIG_ZONE_DMA32\n  x86, mm: Use max_pfn instead of highend_pfn\n  x86, mm: Move zone init from paging_init() on 64-bit\n  x86, mm: Use MAX_DMA_PFN for ZONE_DMA on 32-bit\n"
    },
    {
      "commit": "640708a2cff7f81e246243b0073c66e6ece7e53e",
      "tree": "8cc00ae2b374bf6750ad9ca20da3566e28cfc9ff",
      "parents": [
        "7773fbc54182a90cd248656619c7d33859e5f91d"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Tue Jan 10 15:11:23 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:54 2012 -0800"
      },
      "message": "procfs: introduce the /proc/\u003cpid\u003e/map_files/ directory\n\nThis one behaves similarly to the /proc/\u003cpid\u003e/fd/ one - it contains\nsymlinks one for each mapping with file, the name of a symlink is\n\"vma-\u003evm_start-vma-\u003evm_end\", the target is the file.  Opening a symlink\nresults in a file that point exactly to the same inode as them vma\u0027s one.\n\nFor example the ls -l of some arbitrary /proc/\u003cpid\u003e/map_files/\n\n | lr-x------ 1 root root 64 Aug 26 06:40 7f8f80403000-7f8f80404000 -\u003e /lib64/libc-2.5.so\n | lr-x------ 1 root root 64 Aug 26 06:40 7f8f8061e000-7f8f80620000 -\u003e /lib64/libselinux.so.1\n | lr-x------ 1 root root 64 Aug 26 06:40 7f8f80826000-7f8f80827000 -\u003e /lib64/libacl.so.1.1.0\n | lr-x------ 1 root root 64 Aug 26 06:40 7f8f80a2f000-7f8f80a30000 -\u003e /lib64/librt-2.5.so\n | lr-x------ 1 root root 64 Aug 26 06:40 7f8f80a30000-7f8f80a4c000 -\u003e /lib64/ld-2.5.so\n\nThis *helps* checkpointing process in three ways:\n\n1. When dumping a task mappings we do know exact file that is mapped\n   by particular region.  We do this by opening\n   /proc/$pid/map_files/$address symlink the way we do with file\n   descriptors.\n\n2. This also helps in determining which anonymous shared mappings are\n   shared with each other by comparing the inodes of them.\n\n3. When restoring a set of processes in case two of them has a mapping\n   shared, we map the memory by the 1st one and then open its\n   /proc/$pid/map_files/$address file and map it by the 2nd task.\n\nUsing /proc/$pid/maps for this is quite inconvenient since it brings\nrepeatable re-reading and reparsing for this text file which slows down\nrestore procedure significantly.  Also as being pointed in (3) it is a way\neasier to use top level shared mapping in children as\n/proc/$pid/map_files/$address when needed.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[gorcunov@openvz.org: make map_files depend on CHECKPOINT_RESTORE]\nSigned-off-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nReviewed-by: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nReviewed-by: \"Kirill A. Shutemov\" \u003ckirill@shutemov.name\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c0a32fc5a2e470d0b02597b23ad79a317735253e",
      "tree": "2d164edae0062918ca2088772c00b0615781353b",
      "parents": [
        "1399ff86f2a2bbacbbe68fa00c5f8c752b344723"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Tue Jan 10 15:07:28 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:42 2012 -0800"
      },
      "message": "mm: more intensive memory corruption debugging\n\nWith CONFIG_DEBUG_PAGEALLOC configured, the CPU will generate an exception\non access (read,write) to an unallocated page, which permits us to catch\ncode which corrupts memory.  However the kernel is trying to maximise\nmemory usage, hence there are usually few free pages in the system and\nbuggy code usually corrupts some crucial data.\n\nThis patch changes the buddy allocator to keep more free/protected pages\nand to interlace free/protected and allocated pages to increase the\nprobability of catching corruption.\n\nWhen the kernel is compiled with CONFIG_DEBUG_PAGEALLOC,\ndebug_guardpage_minorder defines the minimum order used by the page\nallocator to grant a request.  The requested size will be returned with\nthe remaining pages used as guard pages.\n\nThe default value of debug_guardpage_minorder is zero: no change from\ncurrent behaviour.\n\n[akpm@linux-foundation.org: tweak documentation, s/flg/flag/]\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7329bbeb92740f35d64a8860ae7837ff4db27fe0",
      "tree": "df4decab54463fd2dee4979f1aa38615f1ef2f3c",
      "parents": [
        "cd42f4a3b2b1c4cbd997363dc57821953d73fd87"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Dec 13 09:27:58 2011 -0800"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Jan 03 12:06:38 2012 -0800"
      },
      "message": "HWPOISON: Add code to handle \"action required\" errors.\n\nAdd new flag bit \"MF_ACTION_REQUIRED\" to be used by machine check\ncode to force a signal with si_code \u003d BUS_MCEERR_AR in the case\nwhere the error occurs in processor execution context. Pass the\nflags argument along call chain:\n\tmemory_failure()\n\t  hwpoison_user_mappings()\n\t    kill_procs()\n\t      kill_proc()\n\nDrop the \"_ao\" suffix from kill_procs_ao() and kill_proc_ao() since\nthey can now handle \"action required\" as well as \"action optional\" errors.\n\nAcked-by: Borislav Petkov \u003cbp@amd64.org\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "cd42f4a3b2b1c4cbd997363dc57821953d73fd87",
      "tree": "c7db057922def7f742fbcd283324051bdd92b053",
      "parents": [
        "dc47ce90c3a822cd7c9e9339fe4d5f61dcb26b50"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Thu Dec 15 10:48:12 2011 -0800"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Jan 03 12:06:32 2012 -0800"
      },
      "message": "HWPOISON: Clean up memory_failure() vs. __memory_failure()\n\nThere is only one caller of memory_failure(), all other users call\n__memory_failure() and pass in the flags argument explicitly. The\nlone user of memory_failure() will soon need to pass flags too.\n\nAdd flags argument to the callsite in mce.c. Delete the old memory_failure()\nfunction, and then rename __memory_failure() without the leading \"__\".\n\nProvide clearer message when action optional memory errors are ignored.\n\nAcked-by: Borislav Petkov \u003cbp@amd64.org\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "45aa0663cc408617b79a2b53f0a5f50e94688a48",
      "tree": "0a53931c317c3c72a3555bd2fbb70a881ee870f2",
      "parents": [
        "511585a28e5b5fd1cac61e601e42efc4c5dd64b5",
        "7bd0b0f0da3b1ec11cbcc798eb0ef747a1184077"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 20 12:14:26 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 20 12:14:26 2011 +0100"
      },
      "message": "Merge branch \u0027memblock-kill-early_node_map\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into core/memblock\n"
    },
    {
      "commit": "83aeeada7c69f35e5100b27ec354335597a7a488",
      "tree": "44644e68f303368feba7c8ba3e0e0991d6238ada",
      "parents": [
        "635697c663f38106063d5659f0cf2e45afcd4bb5"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Thu Dec 08 14:33:54 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 09 07:50:27 2011 -0800"
      },
      "message": "vmscan: use atomic-long for shrinker batching\n\nUse atomic-long operations instead of looping around cmpxchg().\n\n[akpm@linux-foundation.org: massage atomic.h inclusions]\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0ee332c1451869963626bf9cac88f165a90990e1",
      "tree": "a40e6c9c6cfe39ecbca37a08019be3c9e56a4a9b",
      "parents": [
        "a2bf79e7dcc97b4e9654f273453f9264f49e41ff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Dec 08 10:22:09 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Dec 08 10:22:09 2011 -0800"
      },
      "message": "memblock: Kill early_node_map[]\n\nNow all ARCH_POPULATES_NODE_MAP archs select HAVE_MEBLOCK_NODE_MAP -\nthere\u0027s no user of early_node_map[] left.  Kill early_node_map[] and\nreplace ARCH_POPULATES_NODE_MAP with HAVE_MEMBLOCK_NODE_MAP.  Also,\nrelocate for_each_mem_pfn_range() and helper from mm.h to memblock.h\nas page_alloc.c would no longer host an alternative implementation.\n\nThis change is ultimately one to one mapping and shouldn\u0027t cause any\nobservable difference; however, after the recent changes, there are\nsome functions which now would fit memblock.c better than page_alloc.c\nand dependency on HAVE_MEMBLOCK_NODE_MAP instead of HAVE_MEMBLOCK\ndoesn\u0027t make much sense on some of them.  Further cleanups for\nfunctions inside HAVE_MEMBLOCK_NODE_MAP in mm.h would be nice.\n\n-v2: Fix compile bug introduced by mis-spelling\n CONFIG_HAVE_MEMBLOCK_NODE_MAP to CONFIG_MEMBLOCK_HAVE_NODE_MAP in\n mmzone.h.  Reported by Stephen Rothwell.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Chen Liqin \u003cliqin.chen@sunplusct.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "54c29c635ae91f5d75ced7bffeaa77ba37ca02bb",
      "tree": "cddf131b5e70809ec5c282f619de0635e45c1cfa",
      "parents": [
        "855c743a27bb58a9a521bdc485ef5acfdb69badc"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Tue Nov 29 17:05:11 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 06 09:24:07 2011 +0100"
      },
      "message": "mm, x86: Remove debug_pagealloc_enabled\n\nWhen (no)bootmem finish operation, it pass pages to buddy\nallocator. Since debug_pagealloc_enabled is not set, we will do\nnot protect pages, what is not what we want with\nCONFIG_DEBUG_PAGEALLOC\u003dy.\n\nTo fix remove debug_pagealloc_enabled. That variable was\nintroduced by commit 12d6f21e \"x86: do not PSE on\nCONFIG_DEBUG_PAGEALLOC\u003dy\" to get more CPA (change page\nattribude) code testing. But currently we have CONFIG_CPA_DEBUG,\nwhich test CPA.\n\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: linux-mm@kvack.org\nLink: http://lkml.kernel.org/r/1322582711-14571-1-git-send-email-sgruszka@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d4bbf7e7759afc172e2bfbc5c416324590049cdd",
      "tree": "7eab5ee5481cd3dcf1162329fec827177640018a",
      "parents": [
        "a150439c4a97db379f0ed6faa46fbbb6e7bf3cb2",
        "401d0069cb344f401bc9d264c31db55876ff78c0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 28 09:46:22 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 28 09:46:22 2011 -0800"
      },
      "message": "Merge branch \u0027master\u0027 into x86/memblock\n\nConflicts \u0026 resolutions:\n\n* arch/x86/xen/setup.c\n\n\tdc91c728fd \"xen: allow extra memory to be in multiple regions\"\n\t24aa07882b \"memblock, x86: Replace memblock_x86_reserve/free...\"\n\n\tconflicted on xen_add_extra_mem() updates.  The resolution is\n\ttrivial as the latter just want to replace\n\tmemblock_x86_reserve_range() with memblock_reserve().\n\n* drivers/pci/intel-iommu.c\n\n\t166e9278a3f \"x86/ia64: intel-iommu: move to drivers/iommu/\"\n\t5dfe8660a3d \"bootmem: Replace work_with_active_regions() with...\"\n\n\tconflicted as the former moved the file under drivers/iommu/.\n\tResolved by applying the chnages from the latter on the moved\n\tfile.\n\n* mm/Kconfig\n\n\t6661672053a \"memblock: add NO_BOOTMEM config symbol\"\n\tc378ddd53f9 \"memblock, x86: Make ARCH_DISCARD_MEMBLOCK a config option\"\n\n\tconflicted trivially.  Both added config options.  Just\n\tletting both add their own options resolves the conflict.\n\n* mm/memblock.c\n\n\td1f0ece6cdc \"mm/memblock.c: small function definition fixes\"\n\ted7b56a799c \"memblock: Remove memblock_memory_can_coalesce()\"\n\n\tconfliected.  The former updates function removed by the\n\tlatter.  Resolution is trivial.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "b35a35b556f5e6b7993ad0baf20173e75c09ce8c",
      "tree": "85ea46dde6e97d4c73b724698fd65a403529953e",
      "parents": [
        "e0d85a366c2300efd230ef82a9b22110b0658331"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Wed Nov 02 13:37:36 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 16:06:58 2011 -0700"
      },
      "message": "thp: share get_huge_page_tail()\n\nThis avoids duplicating the function in every arch gup_fast.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "70b50f94f1644e2aa7cb374819cfd93f3c28d725",
      "tree": "79198cd9a92600140827a670d1ed5eefdcd23d79",
      "parents": [
        "994c0e992522c123298b4a91b72f5e67ba2d1123"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Wed Nov 02 13:36:59 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 16:06:57 2011 -0700"
      },
      "message": "mm: thp: tail page refcounting fix\n\nMichel while working on the working set estimation code, noticed that\ncalling get_page_unless_zero() on a random pfn_to_page(random_pfn)\nwasn\u0027t safe, if the pfn ended up being a tail page of a transparent\nhugepage under splitting by __split_huge_page_refcount().\n\nHe then found the problem could also theoretically materialize with\npage_cache_get_speculative() during the speculative radix tree lookups\nthat uses get_page_unless_zero() in SMP if the radix tree page is freed\nand reallocated and get_user_pages is called on it before\npage_cache_get_speculative has a chance to call get_page_unless_zero().\n\nSo the best way to fix the problem is to keep page_tail-\u003e_count zero at\nall times.  This will guarantee that get_page_unless_zero() can never\nsucceed on any tail page.  page_tail-\u003e_mapcount is guaranteed zero and\nis unused for all tail pages of a compound page, so we can simply\naccount the tail page references there and transfer them to\ntail_page-\u003e_count in __split_huge_page_refcount() (in addition to the\nhead_page-\u003e_mapcount).\n\nWhile debugging this s/_count/_mapcount/ change I also noticed get_page is\ncalled by direct-io.c on pages returned by get_user_pages.  That wasn\u0027t\nentirely safe because the two atomic_inc in get_page weren\u0027t atomic.  As\nopposed to other get_user_page users like secondary-MMU page fault to\nestablish the shadow pagetables would never call any superflous get_page\nafter get_user_page returns.  It\u0027s safer to make get_page universally safe\nfor tail pages and to use get_page_foll() within follow_page (inside\nget_user_pages()).  get_page_foll() is safe to do the refcounting for tail\npages without taking any locks because it is run within PT lock protected\ncritical sections (PT lock for pte and page_table_lock for\npmd_trans_huge).\n\nThe standard get_page() as invoked by direct-io instead will now take\nthe compound_lock but still only for tail pages.  The direct-io paths\nare usually I/O bound and the compound_lock is per THP so very\nfinegrined, so there\u0027s no risk of scalability issues with it.  A simple\ndirect-io benchmarks with all lockdep prove locking and spinlock\ndebugging infrastructure enabled shows identical performance and no\noverhead.  So it\u0027s worth it.  Ideally direct-io should stop calling\nget_page() on pages returned by get_user_pages().  The spinlock in\nget_page() is already optimized away for no-THP builds but doing\nget_page() on tail pages returned by GUP is generally a rare operation\nand usually only run in I/O paths.\n\nThis new refcounting on page_tail-\u003e_mapcount in addition to avoiding new\nRCU critical sections will also allow the working set estimation code to\nwork without any further complexity associated to the tail page\nrefcounting with THP.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReported-by: Michel Lespinasse \u003cwalken@google.com\u003e\nReviewed-by: Michel Lespinasse \u003cwalken@google.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: \u003cstable@kernel.org\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ee9a4f086716d792219c021e8509f91165a4128",
      "tree": "f85162b8e024624f07909eaba4e85b89df924ebb",
      "parents": [
        "06d5e032adcbc7d50c606a1396f00e2474e4213e"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Oct 31 17:08:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:48 2011 -0700"
      },
      "message": "mm: neaten warn_alloc_failed\n\nAdd __attribute__((format (printf...) to the function to validate format\nand arguments.  Use vsprintf extension %pV to avoid any possible message\ninterleaving.  Coalesce format string.  Convert printks/pr_warning to\npr_warn.\n\n[akpm@linux-foundation.org: use the __printf() macro]\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aa462abe8aaf2198d6aef97da20c874ac694a39f",
      "tree": "f7c1b4e82fe8eeaad8ce61a5e9e4d301accaf32b",
      "parents": [
        "f991879473828f320a714e9494fb37a26ccd6b66"
      ],
      "author": {
        "name": "Ian Campbell",
        "email": "ian.campbell@citrix.com",
        "time": "Wed Aug 17 17:40:33 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 17 13:00:20 2011 -0700"
      },
      "message": "mm: fix __page_to_pfn for a const struct page argument\n\nThis allows the cast in lowmem_page_address (introduced as a warning\nfixup to 33dd4e0ec911 \"mm: make some struct page\u0027s const\") to be\nremoved.\n\nPropagate const\u0027ness to page_to_section() as well since it is required\nby __page_to_pfn.\n\nSigned-off-by: Ian Campbell \u003cian.campbell@citrix.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f991879473828f320a714e9494fb37a26ccd6b66",
      "tree": "349fee2f3c0d9b10340f2fbdb03fa63c2570dbfa",
      "parents": [
        "72ed62bdc46d76c965fb95aecb5d0bf97c976723"
      ],
      "author": {
        "name": "Ian Campbell",
        "email": "ian.campbell@citrix.com",
        "time": "Wed Aug 17 13:45:09 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 17 13:00:20 2011 -0700"
      },
      "message": "mm: make HASHED_PAGE_VIRTUAL page_address\u0027 struct page argument const.\n\nFollowup to 33dd4e0ec911 \"mm: make some struct page\u0027s const\" which missed the\nHASHED_PAGE_VIRTUAL case.\n\nSigned-off-by: Ian Campbell \u003cian.campbell@citrix.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5c723ba5b7886909b2e430f2eae454c33f7fe5c6",
      "tree": "4111bfcba622b375d5dd6955fca5252753f283a1",
      "parents": [
        "2f84dd70916ccadd25e94d28363182a978f569b6"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Wed Jul 27 12:17:11 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 08 12:11:02 2011 -0700"
      },
      "message": "mm: Fix fixup_user_fault() for MMU\u003dn\n\nIn commit 2efaca927f5c (\"mm/futex: fix futex writes on archs with SW\ntracking of dirty \u0026 young\") we forgot about MMU\u003dn.  This patch fixes\nthat.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nLink: http://lkml.kernel.org/r/1311761831.24752.413.camel@twins\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0e323b47057f4492b8fa22345f38d80a469bf8d",
      "tree": "feb760c7e2cdb1e43640417409428ab858910ea3",
      "parents": [
        "c027a474a68065391c8773f6e83ed5412657e369",
        "c3e6088e1036f8084bc7444b38437da136b7588b"
      ],
      "author": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Wed Aug 03 11:30:42 2011 -0400"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Wed Aug 03 11:30:42 2011 -0400"
      },
      "message": "Merge branch \u0027apei\u0027 into apei-release\n\nSome trivial conflicts due to other various merges\nadding to the end of common lists sooner than this one.\n\n\tarch/ia64/Kconfig\n\tarch/powerpc/Kconfig\n\tarch/x86/Kconfig\n\tlib/Kconfig\n\tlib/Makefile\n\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "ea8f5fb8a71fddaf5f3a17100d3247855701f732",
      "tree": "052c3f7e699745394a35063d2a58c4ef0995f3c5",
      "parents": [
        "152cef40a808d3034e383465b3f7d6783613e458"
      ],
      "author": {
        "name": "Huang Ying",
        "email": "ying.huang@intel.com",
        "time": "Wed Jul 13 13:14:27 2011 +0800"
      },
      "committer": {
        "name": "Len Brown",
        "email": "len.brown@intel.com",
        "time": "Wed Aug 03 11:15:58 2011 -0400"
      },
      "message": "HWPoison: add memory_failure_queue()\n\nmemory_failure() is the entry point for HWPoison memory error\nrecovery.  It must be called in process context.  But commonly\nhardware memory errors are notified via MCE or NMI, so some delayed\nexecution mechanism must be used.  In MCE handler, a work queue + ring\nbuffer mechanism is used.\n\nIn addition to MCE, now APEI (ACPI Platform Error Interface) GHES\n(Generic Hardware Error Source) can be used to report memory errors\ntoo.  To add support to APEI GHES memory recovery, a mechanism similar\nto that of MCE is implemented.  memory_failure_queue() is the new\nentry point that can be called in IRQ context.  The next step is to\nmake MCE handler uses this interface too.\n\nSigned-off-by: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Len Brown \u003clen.brown@intel.com\u003e\n"
    },
    {
      "commit": "2efaca927f5cd7ecd0f1554b8f9b6a9a2c329c03",
      "tree": "1bea042a7c712e861d7734db59b3311375c439c3",
      "parents": [
        "72c4783210f77fd743f0a316858d33f27db51e7c"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Mon Jul 25 17:12:32 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 20:57:11 2011 -0700"
      },
      "message": "mm/futex: fix futex writes on archs with SW tracking of dirty \u0026 young\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\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": "85821aab39b3403a8b5731812a930b78684d1642",
      "tree": "dfac06b03f57a26146df3013b8fb6eb7a85158c6",
      "parents": [
        "5e5358e7cf48aa079b8761a7d806ad536023745c"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Mon Jul 25 17:12:23 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 20:57:10 2011 -0700"
      },
      "message": "mm: truncate functions are in truncate.c\n\nCorrect comment on truncate_inode_pages*() in linux/mm.h; and remove\ndeclaration of page_unuse(), it didn\u0027t exist even in 2.2.26 or 2.4.0!\n\nSigned-off-by: Hugh Dickins \u003chughd@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": "c27fe4c8942d3ca715986f79cc26f44608d7d9fb",
      "tree": "d954d0417c941f5e51cf029608311ef04acd9575",
      "parents": [
        "6c6d5280431544e4036886ea74e3334a98bc5f96"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Jul 25 17:12:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 20:57:08 2011 -0700"
      },
      "message": "pagewalk: add locking-rule comments\n\nOriginally, walk_hugetlb_range() didn\u0027t require a caller take any lock.\nBut commit d33b9f45bd (\"mm: hugetlb: fix hugepage memory leak in\nwalk_page_range\") changed its rule.  Because it added find_vma() call in\nwalk_hugetlb_range().\n\nAny locking-rule change commit should write a doc too.\n\n[akpm@linux-foundation.org: clarify comment]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Hiroyuki Kamezawa \u003ckamezawa.hiroyuki@gmail.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "33dd4e0ec91138c3d80e790c08a3db47426c81f2",
      "tree": "5b244874a004cc8a34033846f4e504c9306bf025",
      "parents": [
        "ee8f248d266ec6966c0ce6b7dec24de43dcc1b58"
      ],
      "author": {
        "name": "Ian Campbell",
        "email": "ian.campbell@citrix.com",
        "time": "Mon Jul 25 17:11:51 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 20:57:07 2011 -0700"
      },
      "message": "mm: make some struct page\u0027s const\n\nThese uses are read-only and in a subsequent patch I have a const struct\npage in my hand...\n\n[akpm@linux-foundation.org: fix warnings in lowmem_page_address()]\nSigned-off-by: Ian Campbell \u003cian.campbell@citrix.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Michel Lespinasse \u003cwalken@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": "bbd9d6f7fbb0305c9a592bf05a32e87eb364a4ff",
      "tree": "12b2bb4202b05f6ae6a43c6ce830a0472043dbe5",
      "parents": [
        "8e204874db000928e37199c2db82b7eb8966cc3c",
        "5a9a43646cf709312d71eca71cef90ad802f28f9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 19:02:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 19:02:39 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (107 commits)\n  vfs: use ERR_CAST for err-ptr tossing in lookup_instantiate_filp\n  isofs: Remove global fs lock\n  jffs2: fix IN_DELETE_SELF on overwriting rename() killing a directory\n  fix IN_DELETE_SELF on overwriting rename() on ramfs et.al.\n  mm/truncate.c: fix build for CONFIG_BLOCK not enabled\n  fs:update the NOTE of the file_operations structure\n  Remove dead code in dget_parent()\n  AFS: Fix silly characters in a comment\n  switch d_add_ci() to d_splice_alias() in \"found negative\" case as well\n  simplify gfs2_lookup()\n  jfs_lookup(): don\u0027t bother with . or ..\n  get rid of useless dget_parent() in btrfs rename() and link()\n  get rid of useless dget_parent() in fs/btrfs/ioctl.c\n  fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n  drivers: fix up various -\u003ellseek() implementations\n  fs: handle SEEK_HOLE/SEEK_DATA properly in all fs\u0027s that define their own llseek\n  Ext4: handle SEEK_HOLE/SEEK_DATA generically\n  Btrfs: implement our own -\u003ellseek\n  fs: add SEEK_HOLE and SEEK_DATA flags\n  reiserfs: make reiserfs default to barrier\u003dflush\n  ...\n\nFix up trivial conflicts in fs/xfs/linux-2.6/xfs_super.c due to the new\nshrinker callout for the inode cache, that clashed with the xfs code to\nstart the periodic workers later.\n"
    },
    {
      "commit": "b0d40c92adafde7c2d81203ce7c1c69275f41140",
      "tree": "f75a19dcd1a37aff23dc43323b58f014b1297c6b",
      "parents": [
        "12ad3ab66103e6582ca69c0c9de18b13487eaaef"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:42 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:10 2011 -0400"
      },
      "message": "superblock: introduce per-sb cache shrinker infrastructure\n\nWith context based shrinkers, we can implement a per-superblock\nshrinker that shrinks the caches attached to the superblock. We\ncurrently have global shrinkers for the inode and dentry caches that\nsplit up into per-superblock operations via a coarse proportioning\nmethod that does not batch very well.  The global shrinkers also\nhave a dependency - dentries pin inodes - so we have to be very\ncareful about how we register the global shrinkers so that the\nimplicit call order is always correct.\n\nWith a per-sb shrinker callout, we can encode this dependency\ndirectly into the per-sb shrinker, hence avoiding the need for\nstrictly ordering shrinker registrations. We also have no need for\nany proportioning code for the shrinker subsystem already provides\nthis functionality across all shrinkers. Allowing the shrinker to\noperate on a single superblock at a time means that we do less\nsuperblock list traversals and locking and reclaim should batch more\neffectively. This should result in less CPU overhead for reclaim and\npotentially faster reclaim of items from each filesystem.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e9299f5058595a655c3b207cda9635e28b9197e6",
      "tree": "b31a4dc5cab98ee1701313f45e92e583c2d76f63",
      "parents": [
        "3567b59aa80ac4417002bf58e35dce5c777d4164"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:37 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:32 2011 -0400"
      },
      "message": "vmscan: add customisable shrinker batch size\n\nFor shrinkers that have their own cond_resched* calls, having\nshrink_slab break the work down into small batches is not\npaticularly efficient. Add a custom batchsize field to the struct\nshrinker so that shrinkers can use a larger batch size if they\ndesire.\n\nA value of zero (uninitialised) means \"use the default\", so\nbehaviour is unchanged by this patch.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7c0caeb866b0f648d91bb75b8bc6f86af95bb033",
      "tree": "042804fe716310a4de4effbbaa4461237e2b5d4a",
      "parents": [
        "67e24bcb725cabd15ef577bf301275d03d6086d7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 14 11:43:42 2011 +0200"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Thu Jul 14 11:47:43 2011 -0700"
      },
      "message": "memblock: Add optional region-\u003enid\n\nFrom 83103b92f3234ec830852bbc5c45911bd6cbdb20 Mon Sep 17 00:00:00 2001\nFrom: Tejun Heo \u003ctj@kernel.org\u003e\nDate: Thu, 14 Jul 2011 11:22:16 +0200\n\nAdd optional region-\u003enid which can be enabled by arch using\nCONFIG_HAVE_MEMBLOCK_NODE_MAP.  When enabled, memblock also carries\nNUMA node information and replaces early_node_map[].\n\nNewly added memblocks have MAX_NUMNODES as nid.  Arch can then call\nmemblock_set_node() to set node information.  memblock takes care of\nmerging and node affine allocations w.r.t. node information.\n\nWhen MEMBLOCK_NODE_MAP is enabled, early_node_map[], related data\nstructures and functions to manipulate and iterate it are disabled.\nmemblock version of __next_mem_pfn_range() is provided such that\nfor_each_mem_pfn_range() behaves the same and its users don\u0027t have to\nbe updated.\n\n-v2: Yinghai spotted section mismatch caused by missing\n     __init_memblock in memblock_set_node().  Fixed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/20110714094342.GF3455@htj.dyndns.org\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "eb40c4c27f1722f058e4713ccfedebac577d5190",
      "tree": "b471a4451c7cab125b3aafced4c77c7958fd711d",
      "parents": [
        "e64980405cc6aa74ef178d8d9aa4018c867ceed1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 12 10:46:35 2011 +0200"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Thu Jul 14 11:45:35 2011 -0700"
      },
      "message": "memblock, x86: Replace memblock_x86_find_in_range_node() with generic memblock calls\n\nWith the previous changes, generic NUMA aware memblock API has feature\nparity with memblock_x86_find_in_range_node().  There currently are\ntwo users - x86 setup_node_data() and __alloc_memory_core_early() in\nnobootmem.c.\n\nThis patch converts the former to use memblock_alloc_nid() and the\nlatter memblock_find_range_in_node(), and kills\nmemblock_x86_find_in_range_node() and related functions including\nfind_memory_early_core_early() in page_alloc.c.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/1310460395-30913-9-git-send-email-tj@kernel.org\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "5dfe8660a3d7f1ee1265c3536433ee53da3f98a3",
      "tree": "c58232b88741ba1d8cce417b62f3f658369ad9c2",
      "parents": [
        "fc769a8e70a3348d5de49e5f69f6aff810157360"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 14 09:46:10 2011 +0200"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Thu Jul 14 11:45:29 2011 -0700"
      },
      "message": "bootmem: Replace work_with_active_regions() with for_each_mem_pfn_range()\n\nCallback based iteration is cumbersome and much less useful than\nfor_each_*() iterator.  This patch implements for_each_mem_pfn_range()\nwhich replaces work_with_active_regions().  All the current users of\nwork_with_active_regions() are converted.\n\nThis simplifies walking over early_node_map and will allow converting\ninternal logics in page_alloc to use iterator instead of walking\nearly_node_map directly, which in turn will enable moving node\ninformation to memblock.\n\npowerpc change is only compile tested.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/20110714074610.GD3455@htj.dyndns.org\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "1e01979c8f502ac13e3cdece4f38712c5944e6e8",
      "tree": "d47c4700bfdcffc3f7f68b19d50c588c20689b48",
      "parents": [
        "d0ead157387f19801beb1b419568723b2e9b7c79"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 12 09:45:34 2011 +0200"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Tue Jul 12 21:58:29 2011 -0700"
      },
      "message": "x86, numa: Implement pfn -\u003e nid mapping granularity check\n\nSPARSEMEM w/o VMEMMAP and DISCONTIGMEM, both used only on 32bit, use\nsections array to map pfn to nid which is limited in granularity.  If\nNUMA nodes are laid out such that the mapping cannot be accurate, boot\nwill fail triggering BUG_ON() in mminit_verify_page_links().\n\nOn 32bit, it\u0027s 512MiB w/ PAE and SPARSEMEM.  This seems to have been\ngranular enough until commit 2706a0bf7b (x86, NUMA: Enable\nCONFIG_AMD_NUMA on 32bit too).  Apparently, there is a machine which\naligns NUMA nodes to 128MiB and has only AMD NUMA but not SRAT.  This\nled to the following BUG_ON().\n\n On node 0 totalpages: 2096615\n   DMA zone: 32 pages used for memmap\n   DMA zone: 0 pages reserved\n   DMA zone: 3927 pages, LIFO batch:0\n   Normal zone: 1740 pages used for memmap\n   Normal zone: 220978 pages, LIFO batch:31\n   HighMem zone: 16405 pages used for memmap\n   HighMem zone: 1853533 pages, LIFO batch:31\n BUG: Int 6: CR2   (null)\n      EDI   (null)  ESI 00000002  EBP 00000002  ESP c1543ecc\n      EBX f2400000  EDX 00000006  ECX   (null)  EAX 00000001\n      err   (null)  EIP c16209aa   CS 00000060  flg 00010002\n Stack: f2400000 00220000 f7200800 c1620613 00220000 01000000 04400000 00238000\n          (null) f7200000 00000002 f7200b58 f7200800 c1620929 000375fe   (null)\n        f7200b80 c16395f0 00200a02 f7200a80   (null) 000375fe 00000002   (null)\n Pid: 0, comm: swapper Not tainted 2.6.39-rc5-00181-g2706a0b #17\n Call Trace:\n  [\u003cc136b1e5\u003e] ? early_fault+0x2e/0x2e\n  [\u003cc16209aa\u003e] ? mminit_verify_page_links+0x12/0x42\n  [\u003cc1620613\u003e] ? memmap_init_zone+0xaf/0x10c\n  [\u003cc1620929\u003e] ? free_area_init_node+0x2b9/0x2e3\n  [\u003cc1607e99\u003e] ? free_area_init_nodes+0x3f2/0x451\n  [\u003cc1601d80\u003e] ? paging_init+0x112/0x118\n  [\u003cc15f578d\u003e] ? setup_arch+0x791/0x82f\n  [\u003cc15f43d9\u003e] ? start_kernel+0x6a/0x257\n\nThis patch implements node_map_pfn_alignment() which determines\nmaximum internode alignment and update numa_register_memblks() to\nreject NUMA configuration if alignment exceeds the pfn -\u003e nid mapping\ngranularity of the memory model as determined by PAGES_PER_SECTION.\n\nThis makes the problematic machine boot w/ flatmem by rejecting the\nNUMA config and provides protection against crazy NUMA configurations.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLink: http://lkml.kernel.org/r/20110712074534.GB2872@htj.dyndns.org\nLKML-Reference: \u003c20110628174613.GP478@escobedo.osrc.amd.com\u003e\nReported-and-Tested-by: Hans Rosenfeld \u003chans.rosenfeld@amd.com\u003e\nCc: Conny Seidel \u003cconny.seidel@amd.com\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "3864601387cf4196371e3c1897fdffa5228296f9",
      "tree": "1c517a970194f9e49ef98ef434c650771ffa31e1",
      "parents": [
        "63ab25ebbc50f74550bd8d164a34724b498f6fb9"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Thu May 26 16:25:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:36 2011 -0700"
      },
      "message": "mm: extract exe_file handling from procfs\n\nSetup and cleanup of mm_struct-\u003eexe_file is currently done in fs/proc/.\nThis was because exe_file was needed only for /proc/\u003cpid\u003e/exe.  Since we\nwill need the exe_file functionality also for core dumps (so core name can\ncontain full binary path), built this functionality always into the\nkernel.\n\nTo achieve that move that out of proc FS to the kernel/ where in fact it\nshould belong.  By doing that we can make dup_mm_exe_file static.  Also we\ncan drop linux/proc_fs.h inclusion in fs/exec.c and kernel/fork.c.\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ca16d140af91febe25daeb9e032bf8bd46b8c31f",
      "tree": "a093c3f244a1bdfc2a50e271a7e6df3324df0f05",
      "parents": [
        "4db70f73e56961b9bcdfd0c36c62847a18b7dbb5"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu May 26 19:16:19 2011 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 09:20:31 2011 -0700"
      },
      "message": "mm: don\u0027t access vm_flags as \u0027int\u0027\n\nThe type of vma-\u003evm_flags is \u0027unsigned long\u0027. Neither \u0027int\u0027 nor\n\u0027unsigned int\u0027. This patch fixes such misuse.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\n[ Changed to use a typedef - we\u0027ll extend it to cover more cases\n  later, since there has been discussion about making it a 64-bit\n  type..                      - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c856507f2b2b47a49d8587afb58930b463f6bff4",
      "tree": "496cacf39061febc828cdaf97c11ff08f51e4ab4",
      "parents": [
        "b09e0fa4b4ea66266058eead43350bd7d55fec67"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 24 17:12:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:31 2011 -0700"
      },
      "message": "mm: remove last trace of shmem_get_unmapped_area\n\nRemove noMMU declaration of shmem_get_unmapped_area() from mm.h: it fell\nout of use in 2.6.21 and ceased to exist in 2.6.29.\n\nSigned-off-by: Hugh Dickins \u003chughd@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": "172703b08cd05e2d5196ac13e94cc186f629d58b",
      "tree": "d7c3f04008aa3327fb00e49e392bbd97948ff266",
      "parents": [
        "a197b59ae6e8bee56fcef37ea2482dc08414e2ac"
      ],
      "author": {
        "name": "Matt Fleming",
        "email": "matt.fleming@linux.intel.com",
        "time": "Tue May 24 17:12:36 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:30 2011 -0700"
      },
      "message": "mm: delete non-atomic mm counter implementation\n\nThe problem with having two different types of counters is that developers\nadding new code need to keep in mind whether it\u0027s safe to use both the\natomic and non-atomic implementations.  For example, when adding new\ncallers of the *_mm_counter() functions a developer needs to ensure that\nthose paths are always executed with page_table_lock held, in case we\u0027re\nusing the non-atomic implementation of mm counters.\n\nHugh Dickins introduced the atomic mm counters in commit f412ac08c986\n(\"[PATCH] mm: fix rss and mmlist locking\").  When asked why he left the\nnon-atomic counters around he said,\n\n  | The only reason was to avoid adding costly atomic operations into a\n  | configuration that had no need for them there: the page_table_lock\n  | sufficed.\n  |\n  | Certainly it would be simpler just to delete the non-atomic variant.\n  |\n  | And I think it\u0027s fair to say that any configuration on which we\u0027re\n  | measuring performance to that degree (rather than \"does it boot fast?\"\n  | type measurements), would already be going the split ptlocks route.\n\nRemoving the non-atomic counters eases the maintenance burden because\ndevelopers no longer have to mindful of the two implementations when using\n*_mm_counter().\n\nNote that all architectures provide a means of atomically updating\natomic_long_t variables, even if they have to revert to the generic\nspinlock implementation because they don\u0027t support 64-bit atomic\ninstructions (see lib/atomic64.c).\n\nSigned-off-by: Matt Fleming \u003cmatt.fleming@linux.intel.com\u003e\nAcked-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba93fa81b5f2bf0076407a3a777fff122ce16220",
      "tree": "c859d60816b3815679b45d7e492fbbe03e7e2b19",
      "parents": [
        "e3c40f379a144f35e53864a2cd970e238071afd7"
      ],
      "author": {
        "name": "Daniel Kiper",
        "email": "dkiper@net-space.pl",
        "time": "Tue May 24 17:12:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:29 2011 -0700"
      },
      "message": "mm: do not define PFN_SECTION_SHIFT if !CONFIG_SPARSEMEM\n\nDo not define PFN_SECTION_SHIFT if !CONFIG_SPARSEMEM.\n\nSigned-off-by: Daniel Kiper \u003cdkiper@net-space.pl\u003e\nAcked-by: 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": "bf4e8902ee5080f5d2c810b639e7e778c8082b52",
      "tree": "ab60f46992c322d1f440876ac3f444e394628173",
      "parents": [
        "a3bc42f584cf9024580adeb4031d4202dac05858"
      ],
      "author": {
        "name": "Daniel Kiper",
        "email": "dkiper@net-space.pl",
        "time": "Tue May 24 17:12:32 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:28 2011 -0700"
      },
      "message": "mm: enable set_page_section() only if CONFIG_SPARSEMEM and !CONFIG_SPARSEMEM_VMEMMAP\n\nset_page_section() is meaningful only in CONFIG_SPARSEMEM and\n!CONFIG_SPARSEMEM_VMEMMAP context.  Move it to proper place and amend\naccordingly functions which are using it.\n\nSigned-off-by: Daniel Kiper \u003cdkiper@net-space.pl\u003e\nAcked-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1495f230fa7750479c79e3656286b9183d662077",
      "tree": "e5e233bb9fe1916ccc7281e7dcc71b1572fb22c5",
      "parents": [
        "a09ed5e00084448453c8bada4dcd31e5fbfc2f21"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue May 24 17:12:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:26 2011 -0700"
      },
      "message": "vmscan: change shrinker API by passing shrink_control struct\n\nChange each shrinker\u0027s API by consolidating the existing parameters into\nshrink_control struct.  This will simplify any further features added w/o\ntouching each file of shrinker.\n\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: fix warning]\n[kosaki.motohiro@jp.fujitsu.com: fix up new shrinker API]\n[akpm@linux-foundation.org: fix xfs warning]\n[akpm@linux-foundation.org: update gfs2]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@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": "a09ed5e00084448453c8bada4dcd31e5fbfc2f21",
      "tree": "493f5f2a93efb080cdcc28e793cbcfc7999e66eb",
      "parents": [
        "7b1de5868b124d8f399d8791ed30a9b679d64d4d"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue May 24 17:12:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:25 2011 -0700"
      },
      "message": "vmscan: change shrink_slab() interfaces by passing shrink_control\n\nConsolidate the existing parameters to shrink_slab() into a new\nshrink_control struct.  This is needed later to pass the same struct to\nshrinkers.\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\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": "a238ab5b0239575c179f4976064192c3f7409dad",
      "tree": "bed3d186bee49318e1984eeac489a614ad6acb1b",
      "parents": [
        "de03c72cfce5b263a674d04348b58475ec50163c"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "dave@linux.vnet.ibm.com",
        "time": "Tue May 24 17:12:16 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:21 2011 -0700"
      },
      "message": "mm: break out page allocation warning code\n\nThis originally started as a simple patch to give vmalloc() some more\nverbose output on failure on top of the plain page allocator messages.\nJohannes suggested that it might be nicer to lead with the vmalloc() info\n_before_ the page allocator messages.\n\nBut, I do think there\u0027s a lot of value in what __alloc_pages_slowpath()\ndoes with its filtering and so forth.\n\nThis patch creates a new function which other allocators can call instead\nof relying on the internal page allocator warnings.  It also gives this\nfunction private rate-limiting which separates it from other\nprintk_ratelimit() users.\n\nSigned-off-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Michal Nazarewicz \u003cmina86@mina86.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "97a894136f29802da19a15541de3c019e1ca147e",
      "tree": "1fd3f92ba92a37d5d8527a1f41458091d0a944dc",
      "parents": [
        "e4c70a6629f9c74c4b0de258a3951890e9047c82"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue May 24 17:12:04 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:17 2011 -0700"
      },
      "message": "mm: Remove i_mmap_lock lockbreak\n\nHugh says:\n \"The only significant loser, I think, would be page reclaim (when\n  concurrent with truncation): could spin for a long time waiting for\n  the i_mmap_mutex it expects would soon be dropped? \"\n\nCounter points:\n - cpu contention makes the spin stop (need_resched())\n - zap pages should be freeing pages at a higher rate than reclaim\n   ever can\n\nI think the simplification of the truncate code is definitely worth it.\n\nEffectively reverts: 2aa15890f3c (\"mm: prevent concurrent\nunmap_mapping_range() on the same inode\") and takes out the code that\ncaused its problem.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Namhyung Kim \u003cnamhyung@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": "d16dfc550f5326a4000f3322582a7c05dec91d7a",
      "tree": "8ee963542705cbf2187777f1d3f2b209cbda827a",
      "parents": [
        "d05f3169c0fbca16132ec7c2be71685c6de638b5"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue May 24 17:11:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:12 2011 -0700"
      },
      "message": "mm: mmu_gather rework\n\nRework the existing mmu_gather infrastructure.\n\nThe direct purpose of these patches was to allow preemptible mmu_gather,\nbut even without that I think these patches provide an improvement to the\nstatus quo.\n\nThe first 9 patches rework the mmu_gather infrastructure.  For review\npurpose I\u0027ve split them into generic and per-arch patches with the last of\nthose a generic cleanup.\n\nThe next patch provides generic RCU page-table freeing, and the followup\nis a patch converting s390 to use this.  I\u0027ve also got 4 patches from\nDaveM lined up (not included in this series) that uses this to implement\ngup_fast() for sparc64.\n\nThen there is one patch that extends the generic mmu_gather batching.\n\nAfter that follow the mm preemptibility patches, these make part of the mm\na lot more preemptible.  It converts i_mmap_lock and anon_vma-\u003elock to\nmutexes which together with the mmu_gather rework makes mmu_gather\npreemptible as well.\n\nMaking i_mmap_lock a mutex also enables a clean-up of the truncate code.\n\nThis also allows for preemptible mmu_notifiers, something that XPMEM I\nthink wants.\n\nFurthermore, it removes the new and universially detested unmap_mutex.\n\nThis patch:\n\nRemove the first obstacle towards a fully preemptible mmu_gather.\n\nThe current scheme assumes mmu_gather is always done with preemption\ndisabled and uses per-cpu storage for the page batches.  Change this to\ntry and allocate a page for batching and in case of failure, use a small\non-stack array to make some progress.\n\nPreemptible mmu_gather is desired in general and usable once i_mmap_lock\nbecomes a mutex.  Doing it before the mutex conversion saves us from\nhaving to rework the code by moving the mmu_gather bits inside the\npte_lock.\n\nAlso avoid flushing the tlb batches from under the pte lock, this is\nuseful even without the i_mmap_lock conversion as it significantly reduces\npte lock hold times.\n\n[akpm@linux-foundation.org: fix comment tpyo]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Namhyung Kim \u003cnamhyung@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": "d05f3169c0fbca16132ec7c2be71685c6de638b5",
      "tree": "37d82004869fa4e530617883f12cab7538dbd4a6",
      "parents": [
        "248ac0e1943ad1796393d281b096184719eb3f97"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue May 24 17:11:44 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:12 2011 -0700"
      },
      "message": "mm: make expand_downwards() symmetrical with expand_upwards()\n\nCurrently we have expand_upwards exported while expand_downwards is\naccessible only via expand_stack or expand_stack_downwards.\n\ncheck_stack_guard_page is a nice example of the asymmetry.  It uses\nexpand_stack for VM_GROWSDOWN while expand_upwards is called for\nVM_GROWSUP case.\n\nLet\u0027s clean this up by exporting both functions and make those names\nconsistent.  Let\u0027s use expand_{upwards,downwards} because expanding\ndoesn\u0027t always involve stack manipulation (an example is\nia64_do_page_fault which uses expand_upwards for registers backing store\nexpansion).  expand_downwards has to be defined for both\nCONFIG_STACK_GROWS{UP,DOWN} because get_arg_page calls the downwards\nversion in the early process initialization phase for growsup\nconfiguration.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@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": "1b79acc91115ba47e744b70bb166b77bd94f5855",
      "tree": "9097834522de3840845368312c09b5ad4a98e5e5",
      "parents": [
        "839a4fcc8af7412be2efd11f0bd0504757f79f08"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue May 24 17:11:32 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:09 2011 -0700"
      },
      "message": "mm, mem-hotplug: recalculate lowmem_reserve when memory hotplug occurs\n\nCurrently, memory hotplug calls setup_per_zone_wmarks() and\ncalculate_zone_inactive_ratio(), but doesn\u0027t call\nsetup_per_zone_lowmem_reserve().\n\nIt means the number of reserved pages aren\u0027t updated even if memory hot\nplug occur.  This patch fixes it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "37b23e0525d393d48a7d59f870b3bc061a30ccdb",
      "tree": "467e6fcd785108a21d836e1aad8fc1a68aa72e17",
      "parents": [
        "f62e00cc3a00bfbd394a79fc22b334c31f91bd5f"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue May 24 17:11:30 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:08 2011 -0700"
      },
      "message": "x86,mm: make pagefault killable\n\nWhen an oom killing occurs, almost all processes are getting stuck at the\nfollowing two points.\n\n\t1) __alloc_pages_nodemask\n\t2) __lock_page_or_retry\n\n1) is not very problematic because TIF_MEMDIE leads to an allocation\nfailure and getting out from page allocator.\n\n2) is more problematic.  In an OOM situation, zones typically don\u0027t have\npage cache at all and memory starvation might lead to greatly reduced IO\nperformance.  When a fork bomb occurs, TIF_MEMDIE tasks don\u0027t die quickly,\nmeaning that a fork bomb may create new process quickly rather than the\noom-killer killing it.  Then, the system may become livelocked.\n\nThis patch makes the pagefault interruptible by SIGKILL.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7bf02ea22c6cdd09e2d3f1d3c3fe366b834ae9af",
      "tree": "c1c8aa415910e0f0deea1181759ddd2b5d6067fb",
      "parents": [
        "851cc856d73d1185243c149ed0c0839df8a1b2fe"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue May 24 17:11:16 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:03 2011 -0700"
      },
      "message": "arch, mm: filter disallowed nodes from arch specific show_mem functions\n\nArchitectures that implement their own show_mem() function did not pass\nthe filter argument to show_free_areas() to appropriately avoid emitting\nthe state of nodes that are disallowed in the current context.  This patch\nnow passes the filter argument to show_free_areas() so those nodes are now\navoided.\n\nThis patch also removes the show_free_areas() wrapper around\n__show_free_areas() and converts existing callers to pass an empty filter.\n\nia64 emits additional information for each node, so skip_free_areas_zone()\nmust be made global to filter disallowed nodes and it is converted to use\na nid argument rather than a zone for this use case.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Russell King \u003clinux@arm.linux.org.uk\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Fenghua Yu \u003cfenghua.yu@intel.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Helge Deller \u003cdeller@gmx.de\u003e\nCc: James Bottomley \u003cjejb@parisc-linux.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Guan Xuetao \u003cgxt@mprc.pku.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a09a79f66874c905af35d5bb5e5f2fdc7b6b894d",
      "tree": "9cb2ae1fef7083af91a49c19411e9871e0e59a37",
      "parents": [
        "26822eebb25500fb0776c7c256a6af041e9f538b"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mikulas@artax.karlin.mff.cuni.cz",
        "time": "Mon May 09 13:01:09 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 09 16:22:07 2011 -0700"
      },
      "message": "Don\u0027t lock guardpage if the stack is growing up\n\nLinux kernel excludes guard page when performing mlock on a VMA with\ndown-growing stack. However, some architectures have up-growing stack\nand locking the guard page should be excluded in this case too.\n\nThis patch fixes lvm2 on PA-RISC (and possibly other architectures with\nup-growing stack). lvm2 calculates number of used pages when locking and\nwhen unlocking and reports an internal error if the numbers mismatch.\n\n[ Patch changed fairly extensively to also fix /proc/\u003cpid\u003e/maps for the\n  grows-up case, and to move things around a bit to clean it all up and\n  share the infrstructure with the /proc bits.\n\n  Tested on ia64 that has both grow-up and grow-down segments  - Linus ]\n\nSigned-off-by: Mikulas Patocka \u003cmikulas@artax.karlin.mff.cuni.cz\u003e\nTested-by: Tony Luck \u003ctony.luck@gmail.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "78f11a255749d09025f54d4e2df4fbcb031530e2",
      "tree": "20f8ffaf8548d963ffb519631f5c7d7372e9ca42",
      "parents": [
        "6d4831c283530a5f2c6bd8172c13efa236eb149d"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Wed Apr 27 15:26:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 28 11:28:20 2011 -0700"
      },
      "message": "mm: thp: fix /dev/zero MAP_PRIVATE and vm_flags cleanups\n\nThe huge_memory.c THP page fault was allowed to run if vm_ops was null\n(which would succeed for /dev/zero MAP_PRIVATE, as the f_op-\u003emmap wouldn\u0027t\nsetup a special vma-\u003evm_ops and it would fallback to regular anonymous\nmemory) but other THP logics weren\u0027t fully activated for vmas with vm_file\nnot NULL (/dev/zero has a not NULL vma-\u003evm_file).\n\nSo this removes the vm_file checks so that /dev/zero also can safely use\nTHP (the other albeit safer approach to fix this bug would have been to\nprevent the THP initial page fault to run if vm_file was set).\n\nAfter removing the vm_file checks, this also makes huge_memory.c stricter\nin khugepaged for the DEBUG_VM\u003dy case.  It doesn\u0027t replace the vm_file\ncheck with a is_pfn_mapping check (but it keeps checking for VM_PFNMAP\nunder VM_BUG_ON) because for a is_cow_mapping() mapping VM_PFNMAP should\nonly be allowed to exist before the first page fault, and in turn when\nvma-\u003eanon_vma is null (so preventing khugepaged registration).  So I tend\nto think the previous comment saying if vm_file was set, VM_PFNMAP might\nhave been set and we could still be registered in khugepaged (despite\nanon_vma was not NULL to be registered in khugepaged) was too paranoid.\nThe is_linear_pfn_mapping check is also I think superfluous (as described\nby comment) but under DEBUG_VM it is safe to stay.\n\nAddresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d33682\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReported-by: Caspar Zhang \u003cbugs@casparzhang.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.38.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "b2b755b5f10eb32fbdc73a9907c07006b17f714b",
      "tree": "444c7a93cc6c3dd109a4b23f1f76cdc38cf5eb10",
      "parents": [
        "e285c1746accb80620e511f9c72e9893beeedc0e"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Mar 24 15:18:15 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 17:49:37 2011 -0700"
      },
      "message": "lib, arch: add filter argument to show_mem and fix private implementations\n\nCommit ddd588b5dd55 (\"oom: suppress nodes that are not allowed from\nmeminfo on oom kill\") moved lib/show_mem.o out of lib/lib.a, which\nresulted in build warnings on all architectures that implement their own\nversions of show_mem():\n\n\tlib/lib.a(show_mem.o): In function `show_mem\u0027:\n\tshow_mem.c:(.text+0x1f4): multiple definition of `show_mem\u0027\n\tarch/sparc/mm/built-in.o:(.text+0xd70): first defined here\n\nThe fix is to remove __show_mem() and add its argument to show_mem() in\nall implementations to prevent this breakage.\n\nArchitectures that implement their own show_mem() actually don\u0027t do\nanything with the argument yet, but they could be made to filter nodes\nthat aren\u0027t allowed in the current context in the future just like the\ngeneric implementation.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nReported-by: James Bottomley \u003cJames.Bottomley@hansenpartnership.com\u003e\nSuggested-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b81a618dcd3ea99de292dbe624f41ca68f464376",
      "tree": "c5fbe44f944da9d7dc0c224116be77094d379c8a",
      "parents": [
        "2f284c846331fa44be1300a3c2c3e85800268a00",
        "a9712bc12c40c172e393f85a9b2ba8db4bf59509"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 20:51:42 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 20:51:42 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  deal with races in /proc/*/{syscall,stack,personality}\n  proc: enable writing to /proc/pid/mem\n  proc: make check_mem_permission() return an mm_struct on success\n  proc: hold cred_guard_mutex in check_mem_permission()\n  proc: disable mem_write after exec\n  mm: implement access_remote_vm\n  mm: factor out main logic of access_process_vm\n  mm: use mm_struct to resolve gate vma\u0027s in __get_user_pages\n  mm: arch: rename in_gate_area_no_task to in_gate_area_no_mm\n  mm: arch: make in_gate_area take an mm_struct instead of a task_struct\n  mm: arch: make get_gate_vma take an mm_struct instead of a task_struct\n  x86: mark associated mm when running a task in 32 bit compatibility mode\n  x86: add context tag to mark mm when running a task in 32-bit compatibility mode\n  auxv: require the target to be tracable (or yourself)\n  close race in /proc/*/environ\n  report errors in /proc/*/*map* sanely\n  pagemap: close races with suid execve\n  make sessionid permissions in /proc/*/task/* match those in /proc/*\n  fix leaks in path_lookupat()\n\nFix up trivial conflicts in fs/proc/base.c\n"
    },
    {
      "commit": "5ddd36b9c59887c6416e21daf984fbdd9b1818df",
      "tree": "1cc7ce9a671f4c49dc594e1f5d1fc8b596e77b5f",
      "parents": [
        "206cb636576b969e9b471cdedeaea7752e6acb33"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Sun Mar 13 15:49:20 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:57 2011 -0400"
      },
      "message": "mm: implement access_remote_vm\n\nProvide an alternative to access_process_vm that allows the caller to obtain a\nreference to the supplied mm_struct.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cae5d39032acf26c265f6b1dc73d7ce6ff4bc387",
      "tree": "9c89bcab3f4c17fb34eb44342d1f67bb4230d632",
      "parents": [
        "83b964bbf82eb13a8f31bb49ca420787fe01f7a6"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Sun Mar 13 15:49:17 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:55 2011 -0400"
      },
      "message": "mm: arch: rename in_gate_area_no_task to in_gate_area_no_mm\n\nNow that gate vma\u0027s are referenced with respect to a particular mm and not a\nparticular task it only makes sense to propagate the change to this predicate as\nwell.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nReviewed-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "83b964bbf82eb13a8f31bb49ca420787fe01f7a6",
      "tree": "c94dcf5f4116ca351570fb9d2b7e37834e93f430",
      "parents": [
        "31db58b3ab432f72ea76be58b12e6ffaf627d5db"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Sun Mar 13 15:49:16 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:54 2011 -0400"
      },
      "message": "mm: arch: make in_gate_area take an mm_struct instead of a task_struct\n\nMorally, the question of whether an address lies in a gate vma should be asked\nwith respect to an mm, not a particular task.  Moreover, dropping the dependency\non task_struct will help make existing and future operations on mm\u0027s more\nflexible and convenient.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nReviewed-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "31db58b3ab432f72ea76be58b12e6ffaf627d5db",
      "tree": "c88b742e1f2c52045d5abc6d35d7492ebdf64541",
      "parents": [
        "375906f8765e131a4a159b1ffebf78c15db7b3bf"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Sun Mar 13 15:49:15 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 23 16:36:54 2011 -0400"
      },
      "message": "mm: arch: make get_gate_vma take an mm_struct instead of a task_struct\n\nMorally, the presence of a gate vma is more an attribute of a particular mm than\na particular task.  Moreover, dropping the dependency on task_struct will help\nmake both existing and future operations on mm\u0027s more flexible and convenient.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nReviewed-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "033193275b3ffcfe7f3fde7b569f3d207f6cd6a0",
      "tree": "fc65fa02248f855f0f63e087f35a507b6abb5617",
      "parents": [
        "278df9f451dc71dcd002246be48358a473504ad0"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "dave@linux.vnet.ibm.com",
        "time": "Tue Mar 22 16:32:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:04 2011 -0700"
      },
      "message": "pagewalk: only split huge pages when necessary\n\nRight now, if a mm_walk has either -\u003epte_entry or -\u003epmd_entry set, it will\nunconditionally split any transparent huge pages it runs in to.  In\npractice, that means that anyone doing a\n\n\tcat /proc/$pid/smaps\n\nwill unconditionally break down every huge page in the process and depend\non khugepaged to re-collapse it later.  This is fairly suboptimal.\n\nThis patch changes that behavior.  It teaches each -\u003epmd_entry handler\n(there are five) that they must break down the THPs themselves.  Also, the\n_generic_ code will never break down a THP unless a -\u003epte_entry handler is\nactually set.\n\nThis means that the -\u003epmd_entry handlers can now choose to deal with THPs\nwithout breaking them down.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: Eric B Munson \u003cemunson@mgebm.net\u003e\nTested-by: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Michael J Wolf \u003cmjwolf@us.ibm.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "318b275fbca1ab9ec0862de71420e0e92c3d1aa7",
      "tree": "aa4984469443ed53b4e7fa23d3f91966e536a803",
      "parents": [
        "5fda1bd5b8869574dad8e1f9f71e23bf0c186274"
      ],
      "author": {
        "name": "Gleb Natapov",
        "email": "gleb@redhat.com",
        "time": "Tue Mar 22 16:30:51 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:02 2011 -0700"
      },
      "message": "mm: allow GUP to fail instead of waiting on a page\n\nGUP user may want to try to acquire a reference to a page if it is already\nin memory, but not if IO, to bring it in, is needed.  For example KVM may\ntell vcpu to schedule another guest process if current one is trying to\naccess swapped out page.  Meanwhile, the page will be swapped in and the\nguest process, that depends on it, will be able to run again.\n\nThis patch adds FAULT_FLAG_RETRY_NOWAIT (suggested by Linus) and\nFOLL_NOWAIT follow_page flags.  FAULT_FLAG_RETRY_NOWAIT, when used in\nconjunction with VM_FAULT_ALLOW_RETRY, indicates to handle_mm_fault that\nit shouldn\u0027t drop mmap_sem and wait on a page, but return VM_FAULT_RETRY\ninstead.\n\n[akpm@linux-foundation.org: improve FOLL_NOWAIT comment]\nSigned-off-by: Gleb Natapov \u003cgleb@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@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": "ddd588b5dd55f14320379961e47683db4e4c1d90",
      "tree": "09de73c51c8c5e701e644236890a5d205ec3cdc9",
      "parents": [
        "94dcf29a11b3d20a28790598d701f98484a969da"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Mar 22 16:30:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:01 2011 -0700"
      },
      "message": "oom: suppress nodes that are not allowed from meminfo on oom kill\n\nThe oom killer is extremely verbose for machines with a large number of\ncpus and/or nodes.  This verbosity can often be harmful if it causes other\nimportant messages to be scrolled from the kernel log and incurs a\nsignicant time delay, specifically for kernels with CONFIG_NODES_SHIFT \u003e\n8.\n\nThis patch causes only memory information to be displayed for nodes that\nare allowed by current\u0027s cpuset when dumping the VM state.  Information\nfor all other nodes is irrelevant to the oom condition; we don\u0027t care if\nthere\u0027s an abundance of memory elsewhere if we can\u0027t access it.\n\nThis only affects the behavior of dumping memory information when an oom\nis triggered.  Other dumps, such as for sysrq+m, still display the\nunfiltered form when using the existing show_mem() interface.\n\nAdditionally, the per-cpu pageset statistics are extremely verbose in oom\nkiller output, so it is now suppressed.  This removes\n\n\tnodes_weight(current-\u003emems_allowed) * (1 + nr_cpus)\n\nlines from the oom killer output.\n\nCallers may use __show_mem(SHOW_MEM_FILTER_NODES) to filter disallowed\nnodes.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ec0afc9311adcfb10b90e547c23250f63939f990",
      "tree": "2093d2668898a8a03f30acbfd5568e65b8c086b9",
      "parents": [
        "804f18536984939622ddca60ab6b25743e0ec68d",
        "776e58ea3d3735f85678155398241d2513afa67a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 17 18:40:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 17 18:40:35 2011 -0700"
      },
      "message": "Merge branch \u0027kvm-updates/2.6.39\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm\n\n* \u0027kvm-updates/2.6.39\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm: (55 commits)\n  KVM: unbreak userspace that does not sets tss address\n  KVM: MMU: cleanup pte write path\n  KVM: MMU: introduce a common function to get no-dirty-logged slot\n  KVM: fix rcu usage in init_rmode_* functions\n  KVM: fix kvmclock regression due to missing clock update\n  KVM: emulator: Fix permission checking in io permission bitmap\n  KVM: emulator: Fix io permission checking for 64bit guest\n  KVM: SVM: Load %gs earlier if CONFIG_X86_32_LAZY_GS\u003dn\n  KVM: x86: Remove useless regs_page pointer from kvm_lapic\n  KVM: improve comment on rcu use in irqfd_deassign\n  KVM: MMU: remove unused macros\n  KVM: MMU: cleanup page alloc and free\n  KVM: MMU: do not record gfn in kvm_mmu_pte_write\n  KVM: MMU: move mmu pages calculated out of mmu lock\n  KVM: MMU: set spte accessed bit properly\n  KVM: MMU: fix kvm_mmu_slot_remove_write_access dropping intermediate W bits\n  KVM: Start lock documentation\n  KVM: better readability of efer_reserved_bits\n  KVM: Clear async page fault hash after switching to real mode\n  KVM: VMX: Initialize vm86 TSS only once.\n  ...\n"
    },
    {
      "commit": "ef2b4b95a63a1d23958dcb99eb2c6898eddc87d0",
      "tree": "0a22745dba03926768552aa3006b166995e5342d",
      "parents": [
        "7b7adc4a016a1decb806eb71ecab98721fa7f146"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Fri Mar 18 00:16:35 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 17 16:31:13 2011 -0700"
      },
      "message": "mm: PageBuddy and mapcount robustness\n\nChange the _mapcount value indicating PageBuddy from -2 to -128 for\nmore robusteness against page_mapcount() undeflows.\n\nUse reset_page_mapcount instead of __ClearPageBuddy in bad_page to\nignore the previous retval of PageBuddy().\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReported-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f58c9df78c0360f0eb3852b9cc3a61e689bc2dd1",
      "tree": "378a97ad8e857d73ae6762312c7bcb1cf5efd4bc",
      "parents": [
        "fafc3dbaac6447ab8f78d2f7f32a521b24fc6b36"
      ],
      "author": {
        "name": "Huang Ying",
        "email": "ying.huang@intel.com",
        "time": "Sun Jan 30 11:15:49 2011 +0800"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Thu Mar 17 13:08:27 2011 -0300"
      },
      "message": "mm: remove is_hwpoison_address\n\nUnused.\n\nSigned-off-by: Huang Ying \u003cying.huang@intel.com\u003e\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\n"
    },
    {
      "commit": "69ebb83e13e514222b0ae4f8bd813a17679ed876",
      "tree": "62ccc7ee1e840d0a6cc01a9fc1c44a5f4e6f1edd",
      "parents": [
        "0014bd990e69063b0fb78940b35439d7980ce3ee"
      ],
      "author": {
        "name": "Huang Ying",
        "email": "ying.huang@intel.com",
        "time": "Sun Jan 30 11:15:48 2011 +0800"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Thu Mar 17 13:08:27 2011 -0300"
      },
      "message": "mm: make __get_user_pages return -EHWPOISON for HWPOISON page optionally\n\nMake __get_user_pages return -EHWPOISON for HWPOISON page only if\nFOLL_HWPOISON is specified.  With this patch, the interested callers\ncan distinguish HWPOISON pages from general FAULT pages, while other\ncallers will still get -EFAULT for all these pages, so the user space\ninterface need not to be changed.\n\nThis feature is needed by KVM, where UCR MCE should be relayed to\nguest for HWPOISON page, while instruction emulation and MMIO will be\ntried for general FAULT page.\n\nThe idea comes from Andrew Morton.\n\nSigned-off-by: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    },
    {
      "commit": "0014bd990e69063b0fb78940b35439d7980ce3ee",
      "tree": "56d4576cc07954eb304abaf602aba44a6aa2a4f1",
      "parents": [
        "91c9c3eda4f3066980d13a6907ef84f3a99364bd"
      ],
      "author": {
        "name": "Huang Ying",
        "email": "ying.huang@intel.com",
        "time": "Sun Jan 30 11:15:47 2011 +0800"
      },
      "committer": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Thu Mar 17 13:08:27 2011 -0300"
      },
      "message": "mm: export __get_user_pages\n\nIn most cases, get_user_pages and get_user_pages_fast should be used\nto pin user pages in memory.  But sometimes, some special flags except\nFOLL_GET, FOLL_WRITE and FOLL_FORCE are needed, for example in\nfollowing patch, KVM needs FOLL_HWPOISON.  To support these users,\n__get_user_pages is exported directly.\n\nThere are some symbol name conflicts in infiniband driver, fixed them too.\n\nSigned-off-by: Huang Ying \u003cying.huang@intel.com\u003e\nCC: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCC: Michel Lespinasse \u003cwalken@google.com\u003e\nCC: Roland Dreier \u003croland@kernel.org\u003e\nCC: Ralph Campbell \u003cinfinipath@qlogic.com\u003e\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\n"
    },
    {
      "commit": "8bc1f91e1f0e977fb95b11d8fa686f5091888110",
      "tree": "e7c6369b20e5e37176b91a93a8ea621df8c9d893",
      "parents": [
        "e782ab421bbba1912c87934bd0e8998630736418"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Thu Feb 24 14:43:06 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 24 14:43:06 2011 +0100"
      },
      "message": "bootmem: Move __alloc_memory_core_early() to nobootmem.c\n\nNow that bootmem.c and nobootmem.c are separate, there\u0027s no reason to\ndefine __alloc_memory_core_early(), which is used only by nobootmem,\ninside #ifdef in page_alloc.c.  Move it to nobootmem.c and make it\nstatic.\n\nThis patch doesn\u0027t introduce any behavior change.\n\n-tj: Updated commit description.\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "3dece370ecc7c6152b3fdd21c6de28179f6e643d",
      "tree": "e63f721412c1ef469108ae7e688cebcf39d83cad",
      "parents": [
        "db9fd8486bfe895b00b3603685c086a3c8210ffe"
      ],
      "author": {
        "name": "Michal Simek",
        "email": "monstr@monstr.eu",
        "time": "Fri Jan 21 08:49:56 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 21 08:40:30 2011 -0800"
      },
      "message": "mm: System without MMU do not need pte_mkwrite\n\nThe patch \"thp: export maybe_mkwrite\" (commit 14fd403f2146) breaks\nsystems without MMU.\n\nError log:\n\n    CC      arch/microblaze/mm/init.o\n  In file included from include/linux/mman.h:14,\n                   from arch/microblaze/mm/consistent.c:24:\n  include/linux/mm.h: In function \u0027maybe_mkwrite\u0027:\n  include/linux/mm.h:482: error: implicit declaration of function \u0027pte_mkwrite\u0027\n  include/linux/mm.h:482: error: incompatible types in assignment\n\nSigned-off-by: Michal Simek \u003cmonstr@monstr.eu\u003e\nCC: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCC: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCC: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a664b2d8555c659127bf8fe049a58449d394a707",
      "tree": "14771f4ab93a9dda98174f21e0361a77e2aebfa6",
      "parents": [
        "1ddd6db43a08cba56c7ee920800980862086f1c3"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:17 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:47 2011 -0800"
      },
      "message": "thp: madvise(MADV_NOHUGEPAGE)\n\nAdd madvise MADV_NOHUGEPAGE to mark regions that are not important to be\nhugepage backed.  Return -EINVAL if the vma is not of an anonymous type,\nor the feature isn\u0027t built into the kernel.  Never silently return\nsuccess.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "37c2ac7872a9387542616f658d20ac25f5bdb32e",
      "tree": "d115915db4a61e261012bf0f9c4cf14630243d71",
      "parents": [
        "91600e9e592e48736e630851c83da2ad6bf0e91f"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:16 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:47 2011 -0800"
      },
      "message": "thp: compound_trans_order\n\nRead compound_trans_order safe. Noop for CONFIG_TRANSPARENT_HUGEPAGE\u003dn.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f2d6bfe9ff0acec30b713614260e78b03d20e909",
      "tree": "835dd9f4167513d94ae542cf92347ea98bff5ddc",
      "parents": [
        "5f24ce5fd34c3ca1b3d10d30da754732da64d5c0"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Thu Jan 13 15:47:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:44 2011 -0800"
      },
      "message": "thp: add x86 32bit support\n\nAdd support for transparent hugepages to x86 32bit.\n\nShare the same VM_ bitflag for VM_MAPPED_COPY.  mm/nommu.c will never\nsupport transparent hugepages.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.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": "5f24ce5fd34c3ca1b3d10d30da754732da64d5c0",
      "tree": "c82d27461f2adda210e77808b7dd04eaec017f2f",
      "parents": [
        "21ae5b01750f14140809508a478a4413792e0261"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:00 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:43 2011 -0800"
      },
      "message": "thp: remove PG_buddy\n\nPG_buddy can be converted to _mapcount \u003d\u003d -2.  So the PG_compound_lock can\nbe added to page-\u003eflags without overflowing (because of the sparse section\nbits increasing) with CONFIG_X86_PAE\u003dy and CONFIG_X86_PAT\u003dy.  This also\nhas to move the memory hotplug code from _mapcount to lru.next to avoid\nany risk of clashes.  We can\u0027t use lru.next for PG_buddy removal, but\nmemory hotplug can use lru.next even more easily than the mapcount\ninstead.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "500d65d471018d9a13b0d51b7e141ed2a3555c1d",
      "tree": "046dc2337f87a1a365fde126fab7f4ac9ae82793",
      "parents": [
        "0af4e98b6b095c74588af04872f83d333c958c32"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:55 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:42 2011 -0800"
      },
      "message": "thp: pmd_trans_huge migrate bugcheck\n\nNo pmd_trans_huge should ever materialize in migration ptes areas, because\nwe split the hugepage before migration ptes are instantiated.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-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": "71e3aac0724ffe8918992d76acfe3aad7d8724a5",
      "tree": "4ff96e1fc3e53bc9d25b859bf7e5bdbab8f1b25a",
      "parents": [
        "5c3240d92e29ae7bfb9cb58a9b37e80ab40894ff"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:52 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:42 2011 -0800"
      },
      "message": "thp: transparent hugepage core\n\nLately I\u0027ve been working to make KVM use hugepages transparently without\nthe usual restrictions of hugetlbfs.  Some of the restrictions I\u0027d like to\nsee removed:\n\n1) hugepages have to be swappable or the guest physical memory remains\n   locked in RAM and can\u0027t be paged out to swap\n\n2) if a hugepage allocation fails, regular pages should be allocated\n   instead and mixed in the same vma without any failure and without\n   userland noticing\n\n3) if some task quits and more hugepages become available in the\n   buddy, guest physical memory backed by regular pages should be\n   relocated on hugepages automatically in regions under\n   madvise(MADV_HUGEPAGE) (ideally event driven by waking up the\n   kernel deamon if the order\u003dHPAGE_PMD_SHIFT-PAGE_SHIFT list becomes\n   not null)\n\n4) avoidance of reservation and maximization of use of hugepages whenever\n   possible. Reservation (needed to avoid runtime fatal faliures) may be ok for\n   1 machine with 1 database with 1 database cache with 1 database cache size\n   known at boot time. It\u0027s definitely not feasible with a virtualization\n   hypervisor usage like RHEV-H that runs an unknown number of virtual machines\n   with an unknown size of each virtual machine with an unknown amount of\n   pagecache that could be potentially useful in the host for guest not using\n   O_DIRECT (aka cache\u003doff).\n\nhugepages in the virtualization hypervisor (and also in the guest!) are\nmuch more important than in a regular host not using virtualization,\nbecasue with NPT/EPT they decrease the tlb-miss cacheline accesses from 24\nto 19 in case only the hypervisor uses transparent hugepages, and they\ndecrease the tlb-miss cacheline accesses from 19 to 15 in case both the\nlinux hypervisor and the linux guest both uses this patch (though the\nguest will limit the addition speedup to anonymous regions only for\nnow...).  Even more important is that the tlb miss handler is much slower\non a NPT/EPT guest than for a regular shadow paging or no-virtualization\nscenario.  So maximizing the amount of virtual memory cached by the TLB\npays off significantly more with NPT/EPT than without (even if there would\nbe no significant speedup in the tlb-miss runtime).\n\nThe first (and more tedious) part of this work requires allowing the VM to\nhandle anonymous hugepages mixed with regular pages transparently on\nregular anonymous vmas.  This is what this patch tries to achieve in the\nleast intrusive possible way.  We want hugepages and hugetlb to be used in\na way so that all applications can benefit without changes (as usual we\nleverage the KVM virtualization design: by improving the Linux VM at\nlarge, KVM gets the performance boost too).\n\nThe most important design choice is: always fallback to 4k allocation if\nthe hugepage allocation fails!  This is the _very_ opposite of some large\npagecache patches that failed with -EIO back then if a 64k (or similar)\nallocation failed...\n\nSecond important decision (to reduce the impact of the feature on the\nexisting pagetable handling code) is that at any time we can split an\nhugepage into 512 regular pages and it has to be done with an operation\nthat can\u0027t fail.  This way the reliability of the swapping isn\u0027t decreased\n(no need to allocate memory when we are short on memory to swap) and it\u0027s\ntrivial to plug a split_huge_page* one-liner where needed without\npolluting the VM.  Over time we can teach mprotect, mremap and friends to\nhandle pmd_trans_huge natively without calling split_huge_page*.  The fact\nit can\u0027t fail isn\u0027t just for swap: if split_huge_page would return -ENOMEM\n(instead of the current void) we\u0027d need to rollback the mprotect from the\nmiddle of it (ideally including undoing the split_vma) which would be a\nbig change and in the very wrong direction (it\u0027d likely be simpler not to\ncall split_huge_page at all and to teach mprotect and friends to handle\nhugepages instead of rolling them back from the middle).  In short the\nvery value of split_huge_page is that it can\u0027t fail.\n\nThe collapsing and madvise(MADV_HUGEPAGE) part will remain separated and\nincremental and it\u0027ll just be an \"harmless\" addition later if this initial\npart is agreed upon.  It also should be noted that locking-wise replacing\nregular pages with hugepages is going to be very easy if compared to what\nI\u0027m doing below in split_huge_page, as it will only happen when\npage_count(page) matches page_mapcount(page) if we can take the PG_lock\nand mmap_sem in write mode.  collapse_huge_page will be a \"best effort\"\nthat (unlike split_huge_page) can fail at the minimal sign of trouble and\nwe can try again later.  collapse_huge_page will be similar to how KSM\nworks and the madvise(MADV_HUGEPAGE) will work similar to\nmadvise(MADV_MERGEABLE).\n\nThe default I like is that transparent hugepages are used at page fault\ntime.  This can be changed with\n/sys/kernel/mm/transparent_hugepage/enabled.  The control knob can be set\nto three values \"always\", \"madvise\", \"never\" which mean respectively that\nhugepages are always used, or only inside madvise(MADV_HUGEPAGE) regions,\nor never used.  /sys/kernel/mm/transparent_hugepage/defrag instead\ncontrols if the hugepage allocation should defrag memory aggressively\n\"always\", only inside \"madvise\" regions, or \"never\".\n\nThe pmd_trans_splitting/pmd_trans_huge locking is very solid.  The\nput_page (from get_user_page users that can\u0027t use mmu notifier like\nO_DIRECT) that runs against a __split_huge_page_refcount instead was a\npain to serialize in a way that would result always in a coherent page\ncount for both tail and head.  I think my locking solution with a\ncompound_lock taken only after the page_first is valid and is still a\nPageHead should be safe but it surely needs review from SMP race point of\nview.  In short there is no current existing way to serialize the O_DIRECT\nfinal put_page against split_huge_page_refcount so I had to invent a new\none (O_DIRECT loses knowledge on the mapping status by the time gup_fast\nreturns so...).  And I didn\u0027t want to impact all gup/gup_fast users for\nnow, maybe if we change the gup interface substantially we can avoid this\nlocking, I admit I didn\u0027t think too much about it because changing the gup\nunpinning interface would be invasive.\n\nIf we ignored O_DIRECT we could stick to the existing compound refcounting\ncode, by simply adding a get_user_pages_fast_flags(foll_flags) where KVM\n(and any other mmu notifier user) would call it without FOLL_GET (and if\nFOLL_GET isn\u0027t set we\u0027d just BUG_ON if nobody registered itself in the\ncurrent task mmu notifier list yet).  But O_DIRECT is fundamental for\ndecent performance of virtualized I/O on fast storage so we can\u0027t avoid it\nto solve the race of put_page against split_huge_page_refcount to achieve\na complete hugepage feature for KVM.\n\nSwap and oom works fine (well just like with regular pages ;).  MMU\nnotifier is handled transparently too, with the exception of the young bit\non the pmd, that didn\u0027t have a range check but I think KVM will be fine\nbecause the whole point of hugepages is that EPT/NPT will also use a huge\npmd when they notice gup returns pages with PageCompound set, so they\nwon\u0027t care of a range and there\u0027s just the pmd young bit to check in that\ncase.\n\nNOTE: in some cases if the L2 cache is small, this may slowdown and waste\nmemory during COWs because 4M of memory are accessed in a single fault\ninstead of 8k (the payoff is that after COW the program can run faster).\nSo we might want to switch the copy_huge_page (and clear_huge_page too) to\nnot temporal stores.  I also extensively researched ways to avoid this\ncache trashing with a full prefault logic that would cow in 8k/16k/32k/64k\nup to 1M (I can send those patches that fully implemented prefault) but I\nconcluded they\u0027re not worth it and they add an huge additional complexity\nand they remove all tlb benefits until the full hugepage has been faulted\nin, to save a little bit of memory and some cache during app startup, but\nthey still don\u0027t improve substantially the cache-trashing during startup\nif the prefault happens in \u003e4k chunks.  One reason is that those 4k pte\nentries copied are still mapped on a perfectly cache-colored hugepage, so\nthe trashing is the worst one can generate in those copies (cow of 4k page\ncopies aren\u0027t so well colored so they trashes less, but again this results\nin software running faster after the page fault).  Those prefault patches\nallowed things like a pte where post-cow pages were local 4k regular anon\npages and the not-yet-cowed pte entries were pointing in the middle of\nsome hugepage mapped read-only.  If it doesn\u0027t payoff substantially with\ntodays hardware it will payoff even less in the future with larger l2\ncaches, and the prefault logic would blot the VM a lot.  If one is\nemebdded transparent_hugepage can be disabled during boot with sysfs or\nwith the boot commandline parameter transparent_hugepage\u003d0 (or\ntransparent_hugepage\u003d2 to restrict hugepages inside madvise regions) that\nwill ensure not a single hugepage is allocated at boot time.  It is simple\nenough to just disable transparent hugepage globally and let transparent\nhugepages be allocated selectively by applications in the MADV_HUGEPAGE\nregion (both at page fault time, and if enabled with the\ncollapse_huge_page too through the kernel daemon).\n\nThis patch supports only hugepages mapped in the pmd, archs that have\nsmaller hugepages will not fit in this patch alone.  Also some archs like\npower have certain tlb limits that prevents mixing different page size in\nthe same regions so they will not fit in this framework that requires\n\"graceful fallback\" to basic PAGE_SIZE in case of physical memory\nfragmentation.  hugetlbfs remains a perfect fit for those because its\nsoftware limits happen to match the hardware limits.  hugetlbfs also\nremains a perfect fit for hugepage sizes like 1GByte that cannot be hoped\nto be found not fragmented after a certain system uptime and that would be\nvery expensive to defragment with relocation, so requiring reservation.\nhugetlbfs is the \"reservation way\", the point of transparent hugepages is\nnot to have any reservation at all and maximizing the use of cache and\nhugepages at all times automatically.\n\nSome performance result:\n\nvmx andrea # LD_PRELOAD\u003d/usr/lib64/libhugetlbfs.so HUGETLB_MORECORE\u003dyes HUGETLB_PATH\u003d/mnt/huge/ ./largep\nages3\nmemset page fault 1566023\nmemset tlb miss 453854\nmemset second tlb miss 453321\nrandom access tlb miss 41635\nrandom access second tlb miss 41658\nvmx andrea # LD_PRELOAD\u003d/usr/lib64/libhugetlbfs.so HUGETLB_MORECORE\u003dyes HUGETLB_PATH\u003d/mnt/huge/ ./largepages3\nmemset page fault 1566471\nmemset tlb miss 453375\nmemset second tlb miss 453320\nrandom access tlb miss 41636\nrandom access second tlb miss 41637\nvmx andrea # ./largepages3\nmemset page fault 1566642\nmemset tlb miss 453417\nmemset second tlb miss 453313\nrandom access tlb miss 41630\nrandom access second tlb miss 41647\nvmx andrea # ./largepages3\nmemset page fault 1566872\nmemset tlb miss 453418\nmemset second tlb miss 453315\nrandom access tlb miss 41618\nrandom access second tlb miss 41659\nvmx andrea # echo 0 \u003e /proc/sys/vm/transparent_hugepage\nvmx andrea # ./largepages3\nmemset page fault 2182476\nmemset tlb miss 460305\nmemset second tlb miss 460179\nrandom access tlb miss 44483\nrandom access second tlb miss 44186\nvmx andrea # ./largepages3\nmemset page fault 2182791\nmemset tlb miss 460742\nmemset second tlb miss 459962\nrandom access tlb miss 43981\nrandom access second tlb miss 43988\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cstring.h\u003e\n#include \u003csys/time.h\u003e\n\n#define SIZE (3UL*1024*1024*1024)\n\nint main()\n{\n\tchar *p \u003d malloc(SIZE), *p2;\n\tstruct timeval before, after;\n\n\tgettimeofday(\u0026before, NULL);\n\tmemset(p, 0, SIZE);\n\tgettimeofday(\u0026after, NULL);\n\tprintf(\"memset page fault %Lu\\n\",\n\t       (after.tv_sec-before.tv_sec)*1000000UL +\n\t       after.tv_usec-before.tv_usec);\n\n\tgettimeofday(\u0026before, NULL);\n\tmemset(p, 0, SIZE);\n\tgettimeofday(\u0026after, NULL);\n\tprintf(\"memset tlb miss %Lu\\n\",\n\t       (after.tv_sec-before.tv_sec)*1000000UL +\n\t       after.tv_usec-before.tv_usec);\n\n\tgettimeofday(\u0026before, NULL);\n\tmemset(p, 0, SIZE);\n\tgettimeofday(\u0026after, NULL);\n\tprintf(\"memset second tlb miss %Lu\\n\",\n\t       (after.tv_sec-before.tv_sec)*1000000UL +\n\t       after.tv_usec-before.tv_usec);\n\n\tgettimeofday(\u0026before, NULL);\n\tfor (p2 \u003d p; p2 \u003c p+SIZE; p2 +\u003d 4096)\n\t\t*p2 \u003d 0;\n\tgettimeofday(\u0026after, NULL);\n\tprintf(\"random access tlb miss %Lu\\n\",\n\t       (after.tv_sec-before.tv_sec)*1000000UL +\n\t       after.tv_usec-before.tv_usec);\n\n\tgettimeofday(\u0026before, NULL);\n\tfor (p2 \u003d p; p2 \u003c p+SIZE; p2 +\u003d 4096)\n\t\t*p2 \u003d 0;\n\tgettimeofday(\u0026after, NULL);\n\tprintf(\"random access second tlb miss %Lu\\n\",\n\t       (after.tv_sec-before.tv_sec)*1000000UL +\n\t       after.tv_usec-before.tv_usec);\n\n\treturn 0;\n}\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "47ad8475c000141eacb3ecda5e5ce4b43a9cd04d",
      "tree": "78c29aaf2ae9340e314a25ea08e9724471cf4414",
      "parents": [
        "3f04f62f90d46a82dd73027c5fd7a15daed5c33d"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:41 2011 -0800"
      },
      "message": "thp: clear_copy_huge_page\n\nMove the copy/clear_huge_page functions to common code to share between\nhugetlb.c and huge_memory.c.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8ac1f8320a0073f28cf9e0491af4cd98f504f92a",
      "tree": "4dad891c302587fdc7b099b18e05d7dbc5526c64",
      "parents": [
        "64cc6ae001d70bc59e5f854e6b5678f59110df16"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:43 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:40 2011 -0800"
      },
      "message": "thp: pte alloc trans splitting\n\npte alloc routines must wait for split_huge_page if the pmd is not present\nand not null (i.e.  pmd_trans_splitting).  The additional branches are\noptimized away at compile time by pmd_trans_splitting if the config option\nis off.  However we must pass the vma down in order to know the anon_vma\nlock to wait for.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "14fd403f2146f740942d78af4e0ee59396ad8eab",
      "tree": "c87734f6c6639684208d36548aa3687c6f460e23",
      "parents": [
        "2609ae6d10af0531e826335bd1445d1ace17c847"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:37 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: export maybe_mkwrite\n\nhuge_memory.c needs it too when it fallbacks in copying hugepages into\nregular fragmented pages if hugepage allocation fails during COW.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9180706344487700b40da9eca5dedd3d11cb33b4",
      "tree": "eb0347efe7e40adc78a271752c7382aa67875d6a",
      "parents": [
        "e9da73d67729b58bba256123e2b4651e0d8a01ac"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:32 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: alter compound get_page/put_page\n\nAlter compound get_page/put_page to keep references on subpages too, in\norder to allow __split_huge_page_refcount to split an hugepage even while\nsubpages have been pinned by one of the get_user_pages() variants.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "e9da73d67729b58bba256123e2b4651e0d8a01ac"
}
