)]}'
{
  "log": [
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "5beb49305251e5669852ed541e8e2f2f7696c53e",
      "tree": "46457450a22f23938b24904aeba5d4ada2f53b20",
      "parents": [
        "648bcc771145172a14bc35eeb849ed08f6aa4f1e"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Fri Mar 05 13:42:07 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:26 2010 -0800"
      },
      "message": "mm: change anon_vma linking to fix multi-process server scalability issue\n\nThe old anon_vma code can lead to scalability issues with heavily forking\nworkloads.  Specifically, each anon_vma will be shared between the parent\nprocess and all its child processes.\n\nIn a workload with 1000 child processes and a VMA with 1000 anonymous\npages per process that get COWed, this leads to a system with a million\nanonymous pages in the same anon_vma, each of which is mapped in just one\nof the 1000 processes.  However, the current rmap code needs to walk them\nall, leading to O(N) scanning complexity for each page.\n\nThis can result in systems where one CPU is walking the page tables of\n1000 processes in page_referenced_one, while all other CPUs are stuck on\nthe anon_vma lock.  This leads to catastrophic failure for a benchmark\nlike AIM7, where the total number of processes can reach in the tens of\nthousands.  Real workloads are still a factor 10 less process intensive\nthan AIM7, but they are catching up.\n\nThis patch changes the way anon_vmas and VMAs are linked, which allows us\nto associate multiple anon_vmas with a VMA.  At fork time, each child\nprocess gets its own anon_vmas, in which its COWed pages will be\ninstantiated.  The parents\u0027 anon_vma is also linked to the VMA, because\nnon-COWed pages could be present in any of the children.\n\nThis reduces rmap scanning complexity to O(1) for the pages of the 1000\nchild processes, with O(N) complexity for at most 1/N pages in the system.\n This reduces the average scanning cost in heavily forking workloads from\nO(N) to 2.\n\nThe only real complexity in this patch stems from the fact that linking a\nVMA to anon_vmas now involves memory allocations.  This means vma_adjust\ncan fail, if it needs to attach a VMA to anon_vma structures.  This in\nturn means error handling needs to be added to the calling functions.\n\nA second source of complexity is that, because there can be multiple\nanon_vmas, the anon_vma linking in vma_adjust can no longer be done under\n\"the\" anon_vma lock.  To prevent the rmap code from walking up an\nincomplete VMA, this patch introduces the VM_LOCK_RMAP VMA flag.  This bit\nflag uses the same slot as the NOMMU VM_MAPPED_COPY, with an ifdef in mm.h\nto make sure it is impossible to compile a kernel that needs both symbolic\nvalues for the same bitflag.\n\nSome test results:\n\nWithout the anon_vma changes, when AIM7 hits around 9.7k users (on a test\nbox with 16GB RAM and not quite enough IO), the system ends up running\n\u003e99% in system time, with every CPU on the same anon_vma lock in the\npageout code.\n\nWith these changes, AIM7 hits the cross-over point around 29.7k users.\nThis happens with ~99% IO wait time, there never seems to be any spike in\nsystem time.  The anon_vma lock contention appears to be resolved.\n\n[akpm@linux-foundation.org: cleanups]\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "27df5068e24f2f88de98e95eb6e8dbc9800bf80e",
      "tree": "a93ae4838cc5a1b6c866005bd79777895d0ba7de",
      "parents": [
        "dd59f6c76b265ed2ff18b497d6105a9511b1feb1"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Mon Dec 21 19:56:42 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Mon Dec 21 19:56:42 2009 +0100"
      },
      "message": "HWPOISON: Add PROC_FS dependency to hwpoison injector v2\n\nThe injector filter requires stable_page_flags() which is supplied\nby procfs. So make it dependent on that.\n\nAlso add ifdefs around the filter code in memory-failure.c so that\nwhen the filter is disabled due to missing dependencies the whole\ncode still builds.\n\nReported-by: Ingo Molnar\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "f2c03debdfb387fa2e35cac6382779072b8b9209",
      "tree": "b43b03515fb32025ba81f0933a233f7c93c32470",
      "parents": [
        "12686d153abff397fa0927c620d5a3de84910b72"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:01 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:01 2009 +0100"
      },
      "message": "HWPOISON: Remove stray phrase in a comment\n\nBetter to have complete sentences.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "12686d153abff397fa0927c620d5a3de84910b72",
      "tree": "3a6f19e38e99cded5067452693083ac76c63733f",
      "parents": [
        "0d57eb8dfcb92e3dd928d792f4ed2b2fec680bb7"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:01 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:01 2009 +0100"
      },
      "message": "HWPOISON: Try to allocate migration page on the same node\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "facb6011f3993947283fa15d039dacb4ad140230",
      "tree": "c317e401fa7c867e1652879627163331f43085ef",
      "parents": [
        "2326c467df4ff814dc07cf1bdaa1e6e0a9c9f21c"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "message": "HWPOISON: Add soft page offline support\n\nThis is a simpler, gentler variant of memory_failure() for soft page\nofflining controlled from user space.  It doesn\u0027t kill anything, just\ntries to invalidate and if that doesn\u0027t work migrate the\npage away.\n\nThis is useful for predictive failure analysis, where a page has\na high rate of corrected errors, but hasn\u0027t gone bad yet. Instead\nit can be offlined early and avoided.\n\nThe offlining is controlled from sysfs, including a new generic\nentry point for hard page offlining for symmetry too.\n\nWe use the page isolate facility to prevent re-allocation\nrace. Normally this is only used by memory hotplug. To avoid\nraces with memory allocation I am using lock_system_sleep().\nThis avoids the situation where memory hotplug is about\nto isolate a page range and then hwpoison undoes that work.\nThis is a big hammer currently, but the simplest solution\ncurrently.\n\nWhen the page is not free or LRU we try to free pages\nfrom slab and other caches. The slab freeing is currently\nquite dumb and does not try to focus on the specific slab\ncache which might own the page. This could be potentially\nimproved later.\n\nThanks to Fengguang Wu and Haicheng Li for some fixes.\n\n[Added fix from Andrew Morton to adapt to new migrate_pages prototype]\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "2326c467df4ff814dc07cf1bdaa1e6e0a9c9f21c",
      "tree": "7876b43b70a001a8f2d426b77ac6b85d378c7a76",
      "parents": [
        "0474a60ec704324577782b1057d05b574388d552"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "message": "HWPOISON: Undefine short-hand macros after use to avoid namespace conflict\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "0474a60ec704324577782b1057d05b574388d552",
      "tree": "75c574fe9a64332aeed6c636bf6bd9e6485d1603",
      "parents": [
        "fe194d3e100dea323d7b2de96d3b44d0c067ba7a"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:20:00 2009 +0100"
      },
      "message": "HWPOISON: Use new shake_page in memory_failure\n\nshake_page handles more types of page caches than\nthe much simpler lru_add_drain_all:\n\n- slab (quite inefficiently for now)\n- any other caches with a shrinker callback\n- per cpu page allocator pages\n- per CPU LRU\n\nUse this call to try to turn pages into free or LRU pages.\nThen handle the case of the page becoming free after drain everything.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "1bfe5febe34d2be2120803c10720e179186357c9",
      "tree": "d4d8b1dacc375a1004ab1ed508333bc33e46d9a9",
      "parents": [
        "4fd466eb46a6a917c317a87fb94bfc7252a0f7ed"
      ],
      "author": {
        "name": "Haicheng Li",
        "email": "haicheng.li@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "message": "HWPOISON: add an interface to switch off/on all the page filters\n\nIn some use cases, user doesn\u0027t need extra filtering. E.g. user program\ncan inject errors through madvise syscall to its own pages, however it\nmight not know what the page state exactly is or which inode the page\nbelongs to.\n\nSo introduce an one-off interface \"corrupt-filter-enable\".\n\nEcho 0 to switch off page filters, and echo 1 to switch on the filters.\n[AK: changed default to 0]\n\nSigned-off-by: Haicheng Li \u003chaicheng.li@linux.intel.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "4fd466eb46a6a917c317a87fb94bfc7252a0f7ed",
      "tree": "003b28724241a22a41dc9ae067f30beadbf76e6a",
      "parents": [
        "d324236b3333e87c8825b35f2104184734020d35"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "message": "HWPOISON: add memory cgroup filter\n\nThe hwpoison test suite need to inject hwpoison to a collection of\nselected task pages, and must not touch pages not owned by them and\nthus kill important system processes such as init. (But it\u0027s OK to\nmis-hwpoison free/unowned pages as well as shared clean pages.\nMis-hwpoison of shared dirty pages will kill all tasks, so the test\nsuite will target all or non of such tasks in the first place.)\n\nThe memory cgroup serves this purpose well. We can put the target\nprocesses under the control of a memory cgroup, and tell the hwpoison\ninjection code to only kill pages associated with some active memory\ncgroup.\n\nThe prerequisite for doing hwpoison stress tests with mem_cgroup is,\nthe mem_cgroup code tracks task pages _accurately_ (unless page is\nlocked).  Which we believe is/should be true.\n\nThe benefits are simplification of hwpoison injector code. Also the\nmem_cgroup code will automatically be tested by hwpoison test cases.\n\nThe alternative interfaces pin-pfn/unpin-pfn can also delegate the\n(process and page flags) filtering functions reliably to user space.\nHowever prototype implementation shows that this scheme adds more\ncomplexity than we wanted.\n\nExample test case:\n\n\tmkdir /cgroup/hwpoison\n\n\tusemem -m 100 -s 1000 \u0026\n\techo `jobs -p` \u003e /cgroup/hwpoison/tasks\n\n\tmemcg_ino\u003d$(ls -id /cgroup/hwpoison | cut -f1 -d\u0027 \u0027)\n\techo $memcg_ino \u003e /debug/hwpoison/corrupt-filter-memcg\n\n\tpage-types -p `pidof init`   --hwpoison  # shall do nothing\n\tpage-types -p `pidof usemem` --hwpoison  # poison its pages\n\n[AK: Fix documentation]\n[Add fix for problem noticed by Li Zefan \u003clizf@cn.fujitsu.com\u003e;\ndentry in the css could be NULL]\n\nCC: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCC: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCC: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCC: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCC: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCC: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCC: Paul Menage \u003cmenage@google.com\u003e\nCC: Nick Piggin \u003cnpiggin@suse.de\u003e\nCC: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "478c5ffc0b50527bd2390f2daa46cc16276b8413",
      "tree": "f58f5be9760fd0e81567611cf6e9f9bc77d1d3cd",
      "parents": [
        "1a9b5b7fe0c5dad8a635288882d36785dea742f9"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "message": "HWPOISON: add page flags filter\n\nWhen specified, only poison pages if ((page_flags \u0026 mask) \u003d\u003d value).\n\n-       corrupt-filter-flags-mask\n-       corrupt-filter-flags-value\n\nThis allows stress testing of many kinds of pages.\n\nStrictly speaking, the buddy pages requires taking zone lock, to avoid\nsetting PG_hwpoison on a \"was buddy but now allocated to someone\" page.\nHowever we can just do nothing because we set PG_locked in the beginning,\nthis prevents the page allocator from allocating it to someone. (It will\nBUG() on the unexpected PG_locked, which is fine for hwpoison testing.)\n\n[AK: Add select PROC_PAGE_MONITOR to satisfy dependency]\n\nCC: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "7c116f2b0dbac4a1dd051c7a5e8cef37701cafd4",
      "tree": "ac7f1e56551df46bc79e400a182a57f4eae5ddaf",
      "parents": [
        "138ce286eb6ee6d39ca4fb50516e93adaf6b605f"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "message": "HWPOISON: add fs/device filters\n\nFilesystem data/metadata present the most tricky-to-isolate pages.\nIt requires careful code review and stress testing to get them right.\n\nThe fs/device filter helps to target the stress tests to some specific\nfilesystem pages. The filter condition is block device\u0027s major/minor\nnumbers:\n        - corrupt-filter-dev-major\n        - corrupt-filter-dev-minor\nWhen specified (non -1), only page cache pages that belong to that\ndevice will be poisoned.\n\nThe filters are checked reliably on the locked and refcounted page.\n\nHaicheng: clear PG_hwpoison and drop bad page count if filter not OK\nAK: Add documentation\n\nCC: Haicheng Li \u003chaicheng.li@intel.com\u003e\nCC: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "138ce286eb6ee6d39ca4fb50516e93adaf6b605f",
      "tree": "a3dc707a8daa6d28e1b1b0d8315dcc5c5339ed59",
      "parents": [
        "d95ea51e3a7e9ee051d19f1dd283ca61d1aa5ec6"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: return 0 to indicate success reliably\n\nReturn 0 to indicate success, when\n- action result is RECOVERED or DELAYED\n- no extra page reference\n\nNote that dirty swapcache pages are kept in swapcache, so can have one\nmore reference count.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "d95ea51e3a7e9ee051d19f1dd283ca61d1aa5ec6",
      "tree": "c7bbafb931c9023dfaf1db8e4882a7154dc88ba0",
      "parents": [
        "847ce401df392b0704369fd3f75df614ac1414b4"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: make semantics of IGNORED/DELAYED clear\n\nChange semantics for\n- IGNORED: not handled; it may well be _unsafe_\n- DELAYED: to be handled later; it is _safe_\n\nWith this change,\n- IGNORED/FAILED mean (maybe) Error\n- DELAYED/RECOVERED mean Success\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "847ce401df392b0704369fd3f75df614ac1414b4",
      "tree": "7c5021386dedea0d12f8a05b00c5267c4d28e426",
      "parents": [
        "8d22ba1b74aa9420b6032d856446564fb21f8090"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: Add unpoisoning support\n\nThe unpoisoning interface is useful for stress testing tools to\nreclaim poisoned pages (to prevent OOM)\n\nThere is no hardware level unpoisioning, so this\ncannot be used for real memory errors, only for software injected errors.\n\nNote that it may leak pages silently - those who have been removed from\nLRU cache, but not isolated from page cache/swap cache at hwpoison time.\nEspecially the stress test of dirty swap cache pages shall reboot system\nbefore exhausting memory.\n\nAK: Fix comments, add documentation, add printks, rename symbol\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "8d22ba1b74aa9420b6032d856446564fb21f8090",
      "tree": "6c2e2d27e81d784faa0481500f1cecc613ff1167",
      "parents": [
        "95d01fc664b9476e0d18e3d745bb209a42a33588"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: detect free buddy pages explicitly\n\nMost free pages in the buddy system have no PG_buddy set.\nIntroduce is_free_buddy_page() for detecting them reliably.\n\nCC: Nick Piggin \u003cnpiggin@suse.de\u003e\nCC: Mel Gorman \u003cmel@linux.vnet.ibm.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "95d01fc664b9476e0d18e3d745bb209a42a33588",
      "tree": "0b6a46b0f2e13fb169e64ebf0b270a52c666e7f6",
      "parents": [
        "dc2a1cbf7d862e9d0abea1d1b4c8712dfbb5a398"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: remove the free buddy page handler\n\nThe buddy page has already be handled in the very beginning.\nSo remove redundant code.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "dc2a1cbf7d862e9d0abea1d1b4c8712dfbb5a398",
      "tree": "7a0c08509e1bff29d5a0a2ba7f414878f024352b",
      "parents": [
        "71f72525dfaaec012e23089c73331654ea7b12d3"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: introduce delete_from_lru_cache()\n\nIntroduce delete_from_lru_cache() to\n- clear PG_active, PG_unevictable to avoid complains at unpoison time\n- move the isolate_lru_page() call back to the handlers instead of the\n  entrance of __memory_failure(), this is more hwpoison filter friendly\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "db0480b3a61bd6ad86ead3b8bbad094ab0996932",
      "tree": "31b3d85181201234694a19d05590d7c5084f89ed",
      "parents": [
        "1668bfd5be9d8a52536c4865000fbbe065a3613b"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: comment the possible set_page_dirty() race\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "1668bfd5be9d8a52536c4865000fbbe065a3613b",
      "tree": "85f060960de6e27f6933d56fcfd194b25ddbc460",
      "parents": [
        "82ba011b9041dd31c15e4f63797b08aa0a288e61"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:58 2009 +0100"
      },
      "message": "HWPOISON: abort on failed unmap\n\nDon\u0027t try to isolate a still mapped page. Otherwise we will hit the\nBUG_ON(page_mapped(page)) in __remove_from_page_cache().\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "82ba011b9041dd31c15e4f63797b08aa0a288e61",
      "tree": "7fd48d31ab507007c37f89a9dc41256b8585d8db",
      "parents": [
        "bd1ce5f91f545730df4af492f774d9d32f5da3cb"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "message": "HWPOISON: Turn ref argument into flags argument\n\nNow that \"ref\" is just a boolean turn it into\na flags argument. First step is only a single flag\nthat makes the code\u0027s intention more clear, but more\nmay follow.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "bd1ce5f91f545730df4af492f774d9d32f5da3cb",
      "tree": "7d25f35cda1f37e30fd21bb2375f2693837d5ec5",
      "parents": [
        "a7560fc80f33cab33176ee78f146df22b28e3338"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "message": "HWPOISON: avoid grabbing the page count multiple times during madvise injection\n\nIf page is double referenced in madvise_hwpoison() and __memory_failure(),\nremove_mapping() will fail because it expects page_count\u003d2. Fix it by\nnot grabbing extra page count in __memory_failure().\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "a7560fc80f33cab33176ee78f146df22b28e3338",
      "tree": "1301b08559615aa5e7db0b11f03c98f3848c8142",
      "parents": [
        "9b9a29ecd75e310f75a9243e1c3538ad34598fcb"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "message": "HWPOISON: return ENXIO on invalid page number\n\nUse a different errno than the usual EIO for invalid page numbers.\nThis is mainly for better reporting for the injector.\n\nThis also avoids calling action_result() with invalid pfn.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "9b9a29ecd75e310f75a9243e1c3538ad34598fcb",
      "tree": "170f130a050f28af8bc944a23409a8591ba6d7fe",
      "parents": [
        "0e9052eb98a9986ec0669d030604f7a68f6df638"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "message": "HWPOISON: remove the anonymous entry\n\n(PG_swapbacked \u0026\u0026 !PG_lru) pages should not happen.\nBetter to treat them as unknown pages.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "588f9ce6ca61ecb4663ee6ef2f75d2d96c73151e",
      "tree": "4f68c55642c51312bdf6e49818b9889ec37a1ac3",
      "parents": [
        "7bc98b97ed5dfe710025414de771baa674998892"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:57 2009 +0100"
      },
      "message": "HWPOISON: Be more aggressive at freeing non LRU caches\n\nshake_page handles more types of page caches than lru_drain_all()\n\n- per cpu page allocator pages\n- per CPU LRU\n\nStops early when the page became free.\n\nUsed in followon patches.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "af8e3354b4bbd1ee5a3a55d11a5e1fe37e77f0ba",
      "tree": "8dc0ece80878d00409d4662c5fd1e28cd7fbbdd8",
      "parents": [
        "53f79acb6ecb648afd63e0f13deba167f1a934df"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:58:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:17 2009 -0800"
      },
      "message": "mm: CONFIG_MMU for PG_mlocked\n\nRemove three degrees of obfuscation, left over from when we had\nCONFIG_UNEVICTABLE_LRU.  MLOCK_PAGES is CONFIG_HAVE_MLOCKED_PAGE_BIT is\nCONFIG_HAVE_MLOCK is CONFIG_MMU.  rmap.o (and memory-failure.o) are only\nbuilt when CONFIG_MMU, so don\u0027t need such conditions at all.\n\nSomehow, I feel no compulsion to remove the CONFIG_HAVE_MLOCK* lines from\n169 defconfigs: leave those to evolve in due course.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af901ca181d92aac3a7dc265144a9081a86d8f39",
      "tree": "380054af22521144fbe1364c3bcd55ad24c9bde4",
      "parents": [
        "972b94ffb90ea6d20c589d9a47215df103388ddd"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Nov 14 13:09:05 2009 -0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 15:39:55 2009 +0100"
      },
      "message": "tree-wide: fix assorted typos all over the place\n\nThat is \"success\", \"unknown\", \"through\", \"performance\", \"[re|un]mapping\"\n, \"access\", \"default\", \"reasonable\", \"[con]currently\", \"temperature\"\n, \"channel\", \"[un]used\", \"application\", \"example\",\"hierarchy\", \"therefore\"\n, \"[over|under]flow\", \"contiguous\", \"threshold\", \"enough\" and others.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "7456b0405d8fc063c49628f969cdb23be060fc80",
      "tree": "b1216354d6940b800128b224e2d801ed9232fa02",
      "parents": [
        "65a64464349883891e21e74af16c05d6e1eeb4e9"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon Oct 19 08:15:01 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Mon Oct 19 08:15:01 2009 +0200"
      },
      "message": "HWPOISON: fix invalid page count in printk output\n\nThe madvise injector already holds a reference when passing in a page\nto the memory-failure code. The code corrects for this additional reference\nfor its checks, but the final printk output didn\u0027t. Fix that.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "01e00f880ca700376e1845cf7a2524ebe68e47d6",
      "tree": "6e15c363298dd01dd44d5c96afd9ef36078a1247",
      "parents": [
        "4779cb31c0ee3b355116745edca3f3e5fe865553"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Tue Oct 13 15:02:11 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Mon Oct 19 07:29:20 2009 +0200"
      },
      "message": "HWPOISON: fix oops on ksm pages\n\nMemory failure on a KSM page currently oopses on its NULL anon_vma in\npage_lock_anon_vma(): that may not be much worse than the consequence\nof ignoring it, but it is better to be consistent with how ZERO_PAGE\nand hugetlb pages and other awkward cases are treated.  Just skip it.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "e43c3afb367112a5b357f9adfac7817255129c88",
      "tree": "b85f21b23ab3a3c38a37cb192bd9a845e964c501",
      "parents": [
        "f58ee00f1547ceb17b610ecfce2aa9097f1f9737"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Sep 29 13:16:20 2009 +0800"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Mon Oct 19 07:28:24 2009 +0200"
      },
      "message": "HWPOISON: return early on non-LRU pages\n\nRight now we have some trouble with non atomic access\nto page flags when locking the page. To plug this hole\nfor now, limit error recovery to LRU pages for now.\n\nThis could be better fixed by defining a suitable protocol,\nbut let\u0027s go this simple way for now\n\nThis avoids unnecessary races with __set_page_locked() and\n__SetPageSlab*() and maybe more non-atomic page flag operations.\n\nThis loses isolated pages which are currently in page reclaim, but these\nare relatively limited compared to the total memory.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n[AK: new description, bug fixes, cleanups]\n"
    },
    {
      "commit": "6a46079cf57a7f7758e8b926980a4f852f89b34d",
      "tree": "efd72e830201370d6273bd436dda5a3c4cd6ed9b",
      "parents": [
        "4db96cf077aa938b11fe7ac79ecc9b29ec00fbab"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Sep 16 11:50:15 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:15 2009 +0200"
      },
      "message": "HWPOISON: The high level memory error handler in the VM v7\n\nAdd the high level memory handler that poisons pages\nthat got corrupted by hardware (typically by a two bit flip in a DIMM\nor a cache) on the Linux level. The goal is to prevent everyone\nfrom accessing these pages in the future.\n\nThis done at the VM level by marking a page hwpoisoned\nand doing the appropriate action based on the type of page\nit is.\n\nThe code that does this is portable and lives in mm/memory-failure.c\n\nTo quote the overview comment:\n\nHigh level machine check handler. Handles pages reported by the\nhardware as being corrupted usually due to a 2bit ECC memory or cache\nfailure.\n\nThis focuses on pages detected as corrupted in the background.\nWhen the current CPU tries to consume corruption the currently\nrunning process can just be killed directly instead. This implies\nthat if the error cannot be handled for some reason it\u0027s safe to\njust ignore it because no corruption has been consumed yet. Instead\nwhen that happens another machine check will happen.\n\nHandles page cache pages in various states. The tricky part\nhere is that we can access any page asynchronous to other VM\nusers, because memory failures could happen anytime and anywhere,\npossibly violating some of their assumptions. This is why this code\nhas to be extremely careful. Generally it tries to use normal locking\nrules, as in get the standard locks, even if that means the\nerror handling takes potentially a long time.\n\nSome of the operations here are somewhat inefficient and have non\nlinear algorithmic complexity, because the data structures have not\nbeen optimized for this case. This is in particular the case\nfor the mapping from a vma to a process. Since this case is expected\nto be rare we hope we can get away with this.\n\nThere are in principle two strategies to kill processes on poison:\n- just unmap the data and wait for an actual reference before\nkilling\n- kill as soon as corruption is detected.\nBoth have advantages and disadvantages and should be used\nin different situations. Right now both are implemented and can\nbe switched with a new sysctl vm.memory_failure_early_kill\nThe default is early kill.\n\nThe patch does some rmap data structure walking on its own to collect\nprocesses to kill. This is unusual because normally all rmap data structure\nknowledge is in rmap.c only. I put it here for now to keep\neverything together and rmap knowledge has been seeping out anyways\n\nIncludes contributions from Johannes Weiner, Chris Mason, Fengguang Wu,\nNick Piggin (who did a lot of great work) and others.\n\nCc: npiggin@suse.de\nCc: riel@redhat.com\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\n"
    }
  ]
}
