)]}'
{
  "log": [
    {
      "commit": "db16d5ec1f87f17511599bc77857dd1662b5a22f",
      "tree": "e9bfa9addc71f08f60c98874aa695daec4ac6537",
      "parents": [
        "744ed1442757767ffede5008bb13e0805085902e"
      ],
      "author": {
        "name": "Greg Thelen",
        "email": "gthelen@google.com",
        "time": "Thu Jan 13 15:47:35 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:50 2011 -0800"
      },
      "message": "memcg: add page_cgroup flags for dirty page tracking\n\nThis patchset provides the ability for each cgroup to have independent\ndirty page limits.\n\nLimiting dirty memory is like fixing the max amount of dirty (hard to\nreclaim) page cache used by a cgroup.  So, in case of multiple cgroup\nwriters, they will not be able to consume more than their designated share\nof dirty pages and will be forced to perform write-out if they cross that\nlimit.\n\nThe patches are based on a series proposed by Andrea Righi in Mar 2010.\n\nOverview:\n\n- Add page_cgroup flags to record when pages are dirty, in writeback, or nfs\n  unstable.\n\n- Extend mem_cgroup to record the total number of pages in each of the\n  interesting dirty states (dirty, writeback, unstable_nfs).\n\n- Add dirty parameters similar to the system-wide  /proc/sys/vm/dirty_*\n  limits to mem_cgroup.  The mem_cgroup dirty parameters are accessible\n  via cgroupfs control files.\n\n- Consider both system and per-memcg dirty limits in page writeback when\n  deciding to queue background writeback or block for foreground writeback.\n\nKnown shortcomings:\n\n- When a cgroup dirty limit is exceeded, then bdi writeback is employed to\n  writeback dirty inodes.  Bdi writeback considers inodes from any cgroup, not\n  just inodes contributing dirty pages to the cgroup exceeding its limit.\n\n- When memory.use_hierarchy is set, then dirty limits are disabled.  This is a\n  implementation detail.  An enhanced implementation is needed to check the\n  chain of parents to ensure that no dirty limit is exceeded.\n\nPerformance data:\n- A page fault microbenchmark workload was used to measure performance, which\n  can be called in read or write mode:\n        f \u003d open(foo. $cpu)\n        truncate(f, 4096)\n        alarm(60)\n        while (1) {\n                p \u003d mmap(f, 4096)\n                if (write)\n\t\t\t*p \u003d 1\n\t\telse\n\t\t\tx \u003d *p\n                munmap(p)\n        }\n\n- The workload was called for several points in the patch series in different\n  modes:\n  - s_read is a single threaded reader\n  - s_write is a single threaded writer\n  - p_read is a 16 thread reader, each operating on a different file\n  - p_write is a 16 thread writer, each operating on a different file\n\n- Measurements were collected on a 16 core non-numa system using \"perf stat\n  --repeat 3\".  The -a option was used for parallel (p_*) runs.\n\n- All numbers are page fault rate (M/sec).  Higher is better.\n\n- To compare the performance of a kernel without non-memcg compare the first and\n  last rows, neither has memcg configured.  The first row does not include any\n  of these memcg patches.\n\n- To compare the performance of using memcg dirty limits, compare the baseline\n  (2nd row titled \"w/ memcg\") with the the code and memcg enabled (2nd to last\n  row titled \"all patches\").\n\n                           root_cgroup                    child_cgroup\n                 s_read s_write p_read p_write   s_read s_write p_read p_write\nmmotm w/o memcg   0.428  0.390   0.429  0.388\nmmotm w/ memcg    0.411  0.378   0.391  0.362     0.412  0.377   0.385  0.363\nall patches       0.384  0.360   0.370  0.348     0.381  0.363   0.368  0.347\nall patches       0.431  0.402   0.427  0.395\n  w/o memcg\n\nThis patch:\n\nAdd additional flags to page_cgroup to track dirty pages within a\nmem_cgroup.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrea Righi \u003carighi@develer.com\u003e\nSigned-off-by: Greg Thelen \u003cgthelen@google.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29c1f677d424e8c5683a837fc4f03fc9f19201d7",
      "tree": "97f257ab279cc000e02a1a58fa0869fb405f26cd",
      "parents": [
        "22e5c47ee238abe636655c3862ed28d6eb084ad4"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:47:21 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:48 2011 -0800"
      },
      "message": "mm: migration: use rcu_dereference_protected when dereferencing the radix tree slot during file page migration\n\nmigrate_pages() -\u003e unmap_and_move() only calls rcu_read_lock() for\nanonymous pages, as introduced by git commit\n989f89c57e6361e7d16fbd9572b5da7d313b073d (\"fix rcu_read_lock() in page\nmigraton\").  The point of the RCU protection there is part of getting a\nstable reference to anon_vma and is only held for anon pages as file pages\nare locked which is sufficient protection against freeing.\n\nHowever, while a file page\u0027s mapping is being migrated, the radix tree is\ndouble checked to ensure it is the expected page.  This uses\nradix_tree_deref_slot() -\u003e rcu_dereference() without the RCU lock held\ntriggering the following warning.\n\n[  173.674290] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[  173.676016] [ INFO: suspicious rcu_dereference_check() usage. ]\n[  173.676016] ---------------------------------------------------\n[  173.676016] include/linux/radix-tree.h:145 invoked rcu_dereference_check() without protection!\n[  173.676016]\n[  173.676016] other info that might help us debug this:\n[  173.676016]\n[  173.676016]\n[  173.676016] rcu_scheduler_active \u003d 1, debug_locks \u003d 0\n[  173.676016] 1 lock held by hugeadm/2899:\n[  173.676016]  #0:  (\u0026(\u0026inode-\u003ei_data.tree_lock)-\u003erlock){..-.-.}, at: [\u003cc10e3d2b\u003e] migrate_page_move_mapping+0x40/0x1ab\n[  173.676016]\n[  173.676016] stack backtrace:\n[  173.676016] Pid: 2899, comm: hugeadm Not tainted 2.6.37-rc5-autobuild\n[  173.676016] Call Trace:\n[  173.676016]  [\u003cc128cc01\u003e] ? printk+0x14/0x1b\n[  173.676016]  [\u003cc1063502\u003e] lockdep_rcu_dereference+0x7d/0x86\n[  173.676016]  [\u003cc10e3db5\u003e] migrate_page_move_mapping+0xca/0x1ab\n[  173.676016]  [\u003cc10e41ad\u003e] migrate_page+0x23/0x39\n[  173.676016]  [\u003cc10e491b\u003e] buffer_migrate_page+0x22/0x107\n[  173.676016]  [\u003cc10e48f9\u003e] ? buffer_migrate_page+0x0/0x107\n[  173.676016]  [\u003cc10e425d\u003e] move_to_new_page+0x9a/0x1ae\n[  173.676016]  [\u003cc10e47e6\u003e] migrate_pages+0x1e7/0x2fa\n\nThis patch introduces radix_tree_deref_slot_protected() which calls\nrcu_dereference_protected().  Users of it must pass in the\nmapping-\u003etree_lock that is protecting this dereference.  Holding the tree\nlock protects against parallel updaters of the radix tree meaning that\nrcu_dereference_protected is allowable.\n\n[akpm@linux-foundation.org: remove unneeded casts]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Milton Miller \u003cmiltonm@bga.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.37.early]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "22e5c47ee238abe636655c3862ed28d6eb084ad4",
      "tree": "4a4e7d330cbef6c99a8914de482eb0e8daba2485",
      "parents": [
        "29ad768cfc08611a4c1070d0f13f82eeea2bac7b"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:48 2011 -0800"
      },
      "message": "thp: add compound_trans_head() helper\n\nCleanup some code with common compound_trans_head helper.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.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": "60ab3244ec85c44276c585a2a20d3750402e1cf4",
      "tree": "e69e866b370243fc58a6fc721e5347a265e8fd4f",
      "parents": [
        "a664b2d8555c659127bf8fe049a58449d394a707"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:18 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:47 2011 -0800"
      },
      "message": "thp: khugepaged: make khugepaged aware about madvise\n\nMADV_HUGEPAGE and MADV_NOHUGEPAGE were fully effective only if run after\nmmap and before touching the memory.  While this is enough for most\nusages, it\u0027s little effort to make madvise more dynamic at runtime on an\nexisting mapping by making khugepaged aware about madvise.\n\nMADV_HUGEPAGE: register in khugepaged immediately without waiting a page\nfault (that may not ever happen if all pages are already mapped and the\n\"enabled\" knob was set to madvise during the initial page faults).\n\nMADV_NOHUGEPAGE: skip vmas marked VM_NOHUGEPAGE in khugepaged to stop\ncollapsing pages where not needed.\n\n[akpm@linux-foundation.org: tweak comment]\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@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": "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": "2c888cfbc1b45508a44763d85ba2e8ac43faff5f",
      "tree": "9a7f2214e5d6a01d5724ae63d4d50cddeb2293ff",
      "parents": [
        "97562cd243298acf573620c764a1037bd545c9bc"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Thu Jan 13 15:47:13 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:46 2011 -0800"
      },
      "message": "thp: fix anon memory statistics with transparent hugepages\n\nCount each transparent hugepage as HPAGE_PMD_NR pages in the LRU\nstatistics, so the Active(anon) and Inactive(anon) statistics in\n/proc/meminfo are correct.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a03b051ed87e72b959f32a86054e1142ac4cf55",
      "tree": "31f0e8efb86d48b0292f8a7ea4bd9cf7c930a0ab",
      "parents": [
        "878aee7d6b5504e01b9caffce080e792b6b8d090"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:11 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:46 2011 -0800"
      },
      "message": "thp: use compaction in kswapd for GFP_ATOMIC order \u003e 0\n\nThis takes advantage of memory compaction to properly generate pages of\norder \u003e 0 if regular page reclaim fails and priority level becomes more\nsevere and we don\u0027t reach the proper watermarks.\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": "8ee53820edfd1f3b6554c593f337148dd3d7fc91",
      "tree": "ca69957e928cd3efa1b47f92dcfb00591702684c",
      "parents": [
        "4b7167b9ff9b7f3f528cbc4c7d02ebd275b9b10c"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:10 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:46 2011 -0800"
      },
      "message": "thp: mmu_notifier_test_young\n\nFor GRU and EPT, we need gup-fast to set referenced bit too (this is why\nit\u0027s correct to return 0 when shadow_access_mask is zero, it requires\ngup-fast to set the referenced bit).  qemu-kvm access already sets the\nyoung bit in the pte if it isn\u0027t zero-copy, if it\u0027s zero copy or a shadow\npaging EPT minor fault we relay on gup-fast to signal the page is in\nuse...\n\nWe also need to check the young bits on the secondary pagetables for NPT\nand not nested shadow mmu as the data may never get accessed again by the\nprimary pte.\n\nWithout this closer accuracy, we\u0027d have to remove the heuristic that\navoids collapsing hugepages in hugepage virtual regions that have not even\na single subpage in use.\n\n-\u003etest_young is full backwards compatible with GRU and other usages that\ndon\u0027t have young bits in pagetables set by the hardware and that should\nnuke the secondary mmu mappings when -\u003eclear_flush_young runs just like\nEPT does.\n\nRemoving the heuristic that checks the young bit in\nkhugepaged/collapse_huge_page completely isn\u0027t so bad either probably but\nI thought it was worth it and this makes it reliable.\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": "94fcc585fb85ad7b059c70872489b50044d401f3",
      "tree": "67efce3803149bec77df1f50a06f384deae02ba6",
      "parents": [
        "bc835011afbea3957217ee716093d791fb2fe44f"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:08 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:45 2011 -0800"
      },
      "message": "thp: avoid breaking huge pmd invariants in case of vma_adjust failures\n\nAn huge pmd can only be mapped if the corresponding 2M virtual range is\nfully contained in the vma.  At times the VM calls split_vma twice, if the\nfirst split_vma succeeds and the second fail, the first split_vma remains\nin effect and it\u0027s not rolled back.  For split_vma or vma_adjust to fail\nan allocation failure is needed so it\u0027s a very unlikely event (the out of\nmemory killer would normally fire before any allocation failure is visible\nto kernel and userland and if an out of memory condition happens it\u0027s\nunlikely to happen exactly here).  Nevertheless it\u0027s safer to ensure that\nno huge pmd can be left around if the vma is adjusted in a way that can\u0027t\nfit hugepages anymore at the new vm_start/vm_end address.\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": "0bbbc0b33d141f78a0d9218a54a47f50621220d3",
      "tree": "3ef3363c189ac536926119731eb86dcf989f4adb",
      "parents": [
        "d39d33c332c611094f84cee39715866f4cbf79e2"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:47:05 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:45 2011 -0800"
      },
      "message": "thp: add numa awareness to hugepage allocations\n\nIt\u0027s mostly a matter of replacing alloc_pages with alloc_pages_vma after\nintroducing alloc_pages_vma.  khugepaged needs special handling as the\nallocation has to happen inside collapse_huge_page where the vma is known\nand an error has to be returned to the outer loop to sleep\nalloc_sleep_millisecs in case of failure.  But it retains the more\nefficient logic of handling allocation failures in khugepaged in case of\nCONFIG_NUMA\u003dn.\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": "cd7548ab360c462118568eebb8c6da3bc303b02e",
      "tree": "44d145e6139c8753659ee773ae35810dc3d92d0b",
      "parents": [
        "b36f5b0710e9e3b92484de32920fddcb17278664"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Thu Jan 13 15:47:04 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:44 2011 -0800"
      },
      "message": "thp: mprotect: transparent huge page support\n\nNatively handle huge pmds when changing page tables on behalf of\nmprotect().\n\nI left out update_mmu_cache() because we do not need it on x86 anyway but\nmore importantly the interface works on ptes, not pmds.\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": "0ca1634d4143c3579273ca53b993df19f5c98e92",
      "tree": "d566a582357a9e1528d1783566bfda4375c7e566",
      "parents": [
        "f2d6bfe9ff0acec30b713614260e78b03d20e909"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Thu Jan 13 15:47:02 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:44 2011 -0800"
      },
      "message": "thp: mincore transparent hugepage support\n\nHandle transparent huge page pmd entries natively instead of splitting\nthem into subpages.\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": "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": "ba76149f47d8c939efa0acc07a191237af900471",
      "tree": "162990f51dd24984f114cba14fc7169a3b54f0f1",
      "parents": [
        "79134171df238171daa4c024a42b77b401ccb00b"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:58 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:43 2011 -0800"
      },
      "message": "thp: khugepaged\n\nAdd khugepaged to relocate fragmented pages into hugepages if new\nhugepages become available.  (this is indipendent of the defrag logic that\nwill have to make new hugepages available)\n\nThe fundamental reason why khugepaged is unavoidable, is that some memory\ncan be fragmented and not everything can be relocated.  So when a virtual\nmachine quits and releases gigabytes of hugepages, we want to use those\nfreely available hugepages to create huge-pmd in the other virtual\nmachines that may be running on fragmented memory, to maximize the CPU\nefficiency at all times.  The scan is slow, it takes nearly zero cpu time,\nexcept when it copies data (in which case it means we definitely want to\npay for that cpu time) so it seems a good tradeoff.\n\nIn addition to the hugepages being released by other process releasing\nmemory, we have the strong suspicion that the performance impact of\npotentially defragmenting hugepages during or before each page fault could\nlead to more performance inconsistency than allocating small pages at\nfirst and having them collapsed into large pages later...  if they prove\nthemselfs to be long lived mappings (khugepaged scan is slow so short\nlived mappings have low probability to run into khugepaged if compared to\nlong lived mappings).\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": "79134171df238171daa4c024a42b77b401ccb00b",
      "tree": "af7872d5851e371d09b9fe7eb80f4809713c79fb",
      "parents": [
        "b9bbfbe30ae088cc88a4b2ba7732baeebd1a0162"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:58 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:43 2011 -0800"
      },
      "message": "thp: transparent hugepage vmstat\n\nAdd hugepage stat information to /proc/vmstat and /proc/meminfo.\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": "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": "0af4e98b6b095c74588af04872f83d333c958c32",
      "tree": "56b1965482470219a8cf11b7e7c875ae91bff46e",
      "parents": [
        "f66055ab6fb9731dbfce320c5202ef4441b5d77f"
      ],
      "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: madvise(MADV_HUGEPAGE)\n\nAdd madvise MADV_HUGEPAGE to mark regions that are 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\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": "32dba98e085f8b2b4345887df9abf5e0e93bfc12",
      "tree": "6789196797350911a1c370ce909bfde2556ccfc4",
      "parents": [
        "936a5fe6e6148c0b3ea0d792b903847d9b9931a1"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:49 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:41 2011 -0800"
      },
      "message": "thp: _GFP_NO_KSWAPD\n\nTransparent hugepage allocations must be allowed not to invoke kswapd or\nany other kind of indirect reclaim (especially when the defrag sysfs is\ncontrol disabled).  It\u0027s unacceptable to swap out anonymous pages\n(potentially anonymous transparent hugepages) in order to create new\ntransparent hugepages.  This is true for the MADV_HUGEPAGE areas too\n(swapping out a kvm virtual machine and so having it suffer an unbearable\nslowdown, so another one with guest physical memory marked MADV_HUGEPAGE\ncan run 30% faster if it is running memory intensive workloads, makes no\nsense).  If a transparent hugepage allocation fails the slowdown is minor\nand there is total fallback, so kswapd should never be asked to swapout\nmemory to allow the high order allocation to succeed.\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": "936a5fe6e6148c0b3ea0d792b903847d9b9931a1",
      "tree": "f0326a5877a89251ff2cb727d5e832e911ed1d18",
      "parents": [
        "47ad8475c000141eacb3ecda5e5ce4b43a9cd04d"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:48 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:41 2011 -0800"
      },
      "message": "thp: kvm mmu transparent hugepage support\n\nThis should work for both hugetlbfs and transparent hugepages.\n\n[akpm@linux-foundation.org: bring forward PageTransCompound() addition for bisectability]\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.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": "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": "e7a00c45f29c0155007aa150bf231a70fa470365",
      "tree": "3225a79905dede614ed44e98776cdc6285bbd28a",
      "parents": [
        "4e6af67e970a2ac287739a4c526c857b5bda27ec"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:45 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:41 2011 -0800"
      },
      "message": "thp: add pmd_huge_pte to mm_struct\n\nThis increase the size of the mm struct a bit but it is needed to\npreallocate one pte for each hugepage so that split_huge_page will not\nrequire a fail path.  Guarantee of success is a fundamental property of\nsplit_huge_page to avoid decrasing swapping reliability and to avoid\nadding -ENOMEM fail paths that would otherwise force the hugepage-unaware\nVM code to learn rolling back in the middle of its pte mangling operations\n(if something we need it to learn handling pmd_trans_huge natively rather\nbeing capable of rollback).  When split_huge_page runs a pte is needed to\nsucceed the split, to map the newly splitted regular pages with a regular\npte.  This way all existing VM code remains backwards compatible by just\nadding a split_huge_page* one liner.  The memory waste of those\npreallocated ptes is negligible and so it is worth it.\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": "4e6af67e970a2ac287739a4c526c857b5bda27ec",
      "tree": "2de1bcb20fb3ff136d6b65a651d06a572bfd677d",
      "parents": [
        "91a4ee2670e0ee2b0630a0eb24fb9a87ea3acd0a"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:44 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:41 2011 -0800"
      },
      "message": "thp: clear page compound\n\nsplit_huge_page must transform a compound page to a regular page and needs\nClearPageCompound.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "91a4ee2670e0ee2b0630a0eb24fb9a87ea3acd0a",
      "tree": "28b3fa3535295544928329290c365eecc5a770d2",
      "parents": [
        "8ac1f8320a0073f28cf9e0491af4cd98f504f92a"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:44 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:41 2011 -0800"
      },
      "message": "thp: add pmd mmu_notifier helpers\n\nAdd mmu notifier helpers to handle pmd huge operations.\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": "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"
    },
    {
      "commit": "e9da73d67729b58bba256123e2b4651e0d8a01ac",
      "tree": "5e7f8c4d394d625f7832cbd04a8d55f9f0cd0d95",
      "parents": [
        "a826e422420b461a6247137c292ff83c4800354a"
      ],
      "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:38 2011 -0800"
      },
      "message": "thp: compound_lock\n\nAdd a new compound_lock() needed to serialize put_page against\n__split_huge_page_refcount().\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": "9950474883e027e6e728cbcff25f7f2bf0c96530",
      "tree": "ecfdd3e68a25f1ef7822428c44f8375efbe9bc0c",
      "parents": [
        "c585a2678d83ba8fb02fa6b197de0ac7d67377f1"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:46:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:37 2011 -0800"
      },
      "message": "mm: kswapd: stop high-order balancing when any suitable zone is balanced\n\nSimon Kirby reported the following problem\n\n   We\u0027re seeing cases on a number of servers where cache never fully\n   grows to use all available memory.  Sometimes we see servers with 4 GB\n   of memory that never seem to have less than 1.5 GB free, even with a\n   constantly-active VM.  In some cases, these servers also swap out while\n   this happens, even though they are constantly reading the working set\n   into memory.  We have been seeing this happening for a long time; I\n   don\u0027t think it\u0027s anything recent, and it still happens on 2.6.36.\n\nAfter some debugging work by Simon, Dave Hansen and others, the prevaling\ntheory became that kswapd is reclaiming order-3 pages requested by SLUB\ntoo aggressive about it.\n\nThere are two apparent problems here.  On the target machine, there is a\nsmall Normal zone in comparison to DMA32.  As kswapd tries to balance all\nzones, it would continually try reclaiming for Normal even though DMA32\nwas balanced enough for callers.  The second problem is that\nsleeping_prematurely() does not use the same logic as balance_pgdat() when\ndeciding whether to sleep or not.  This keeps kswapd artifically awake.\n\nA number of tests were run and the figures from previous postings will\nlook very different for a few reasons.  One, the old figures were forcing\nmy network card to use GFP_ATOMIC in attempt to replicate Simon\u0027s problem.\n Second, I previous specified slub_min_order\u003d3 again in an attempt to\nreproduce Simon\u0027s problem.  In this posting, I\u0027m depending on Simon to say\nwhether his problem is fixed or not and these figures are to show the\nimpact to the ordinary cases.  Finally, the \"vmscan\" figures are taken\nfrom /proc/vmstat instead of the tracepoints.  There is less information\nbut recording is less disruptive.\n\nThe first test of relevance was postmark with a process running in the\nbackground reading a large amount of anonymous memory in blocks.  The\nobjective was to vaguely simulate what was happening on Simon\u0027s machine\nand it\u0027s memory intensive enough to have kswapd awake.\n\nPOSTMARK\n                                            traceonly          kanyzone\nTransactions per second:              156.00 ( 0.00%)   153.00 (-1.96%)\nData megabytes read per second:        21.51 ( 0.00%)    21.52 ( 0.05%)\nData megabytes written per second:     29.28 ( 0.00%)    29.11 (-0.58%)\nFiles created alone per second:       250.00 ( 0.00%)   416.00 (39.90%)\nFiles create/transact per second:      79.00 ( 0.00%)    76.00 (-3.95%)\nFiles deleted alone per second:       520.00 ( 0.00%)   420.00 (-23.81%)\nFiles delete/transact per second:      79.00 ( 0.00%)    76.00 (-3.95%)\n\nMMTests Statistics: duration\nUser/Sys Time Running Test (seconds)         16.58      17.4\nTotal Elapsed Time (seconds)                218.48    222.47\n\nVMstat Reclaim Statistics: vmscan\nDirect reclaims                                  0          4\nDirect reclaim pages scanned                     0        203\nDirect reclaim pages reclaimed                   0        184\nKswapd pages scanned                        326631     322018\nKswapd pages reclaimed                      312632     309784\nKswapd low wmark quickly                         1          4\nKswapd high wmark quickly                      122        475\nKswapd skip congestion_wait                      1          0\nPages activated                             700040     705317\nPages deactivated                           212113     203922\nPages written                                 9875       6363\n\nTotal pages scanned                         326631    322221\nTotal pages reclaimed                       312632    309968\n%age total pages scanned/reclaimed          95.71%    96.20%\n%age total pages scanned/written             3.02%     1.97%\n\nproc vmstat: Faults\nMajor Faults                                   300       254\nMinor Faults                                645183    660284\nPage ins                                    493588    486704\nPage outs                                  4960088   4986704\nSwap ins                                      1230       661\nSwap outs                                     9869      6355\n\nPerformance is mildly affected because kswapd is no longer doing as much\nwork and the background memory consumer process is getting in the way.\nNote that kswapd scanned and reclaimed fewer pages as it\u0027s less aggressive\nand overall fewer pages were scanned and reclaimed.  Swap in/out is\nparticularly reduced again reflecting kswapd throwing out fewer pages.\n\nThe slight performance impact is unfortunate here but it looks like a\ndirect result of kswapd being less aggressive.  As the bug report is about\ntoo many pages being freed by kswapd, it may have to be accepted for now.\n\nThe second test is a streaming IO benchmark that was previously used by\nJohannes to show regressions in page reclaim.\n\nMICRO\n\t\t\t\t\t traceonly  kanyzone\nUser/Sys Time Running Test (seconds)         29.29     28.87\nTotal Elapsed Time (seconds)                492.18    488.79\n\nVMstat Reclaim Statistics: vmscan\nDirect reclaims                               2128       1460\nDirect reclaim pages scanned               2284822    1496067\nDirect reclaim pages reclaimed              148919     110937\nKswapd pages scanned                      15450014   16202876\nKswapd pages reclaimed                     8503697    8537897\nKswapd low wmark quickly                      3100       3397\nKswapd high wmark quickly                     1860       7243\nKswapd skip congestion_wait                    708        801\nPages activated                               9635       9573\nPages deactivated                             1432       1271\nPages written                                  223       1130\n\nTotal pages scanned                       17734836  17698943\nTotal pages reclaimed                      8652616   8648834\n%age total pages scanned/reclaimed          48.79%    48.87%\n%age total pages scanned/written             0.00%     0.01%\n\nproc vmstat: Faults\nMajor Faults                                   165       221\nMinor Faults                               9655785   9656506\nPage ins                                      3880      7228\nPage outs                                 37692940  37480076\nSwap ins                                         0        69\nSwap outs                                       19        15\n\nAgain fewer pages are scanned and reclaimed as expected and this time the\ntest completed faster.  Note that kswapd is hitting its watermarks faster\n(low and high wmark quickly) which I expect is due to kswapd reclaiming\nfewer pages.\n\nI also ran fs-mark, iozone and sysbench but there is nothing interesting\nto report in the figures.  Performance is not significantly changed and\nthe reclaim statistics look reasonable.\n\nTgis patch:\n\nWhen the allocator enters its slow path, kswapd is woken up to balance the\nnode.  It continues working until all zones within the node are balanced.\nFor order-0 allocations, this makes perfect sense but for higher orders it\ncan have unintended side-effects.  If the zone sizes are imbalanced,\nkswapd may reclaim heavily within a smaller zone discarding an excessive\nnumber of pages.  The user-visible behaviour is that kswapd is awake and\nreclaiming even though plenty of pages are free from a suitable zone.\n\nThis patch alters the \"balance\" logic for high-order reclaim allowing\nkswapd to stop if any suitable zone becomes balanced to reduce the number\nof pages it reclaims from other zones.  kswapd still tries to ensure that\norder-0 watermarks for all zones are met before sleeping.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Simon Kirby \u003csim@hostway.ca\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: 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": "e20e87795834f2f14cb53baf657b91d9c39f92c8",
      "tree": "0ec2c10b0ed4cb572c73153b56c017db536bc056",
      "parents": [
        "088e54658f559a13c2b988086512d76fe9e8f846"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jan 13 15:46:17 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:36 2011 -0800"
      },
      "message": "mm: remove unlikely() from page_mapping()\n\npage_mapping() has a unlikely that the mapping has PAGE_MAPPING_ANON set.\nBut running the annotated branch profiler on a normal desktop system doing\nvairous tasks (xchat, evolution, firefox, distcc), it is not really that\nunlikely that the mapping here will have the PAGE_MAPPING_ANON flag set:\n\n correct incorrect  %        Function                  File              Line\n ------- ---------  -        --------                  ----              ----\n35935762 1270265395  97 page_mapping                   mm.h                 659\n1306198001   143659   0 page_mapping                   mm.h                 657\n203131478   121586   0 page_mapping                   mm.h                 657\n 5415491     1116   0 page_mapping                   mm.h                 657\n74899487     1116   0 page_mapping                   mm.h                 657\n203132845      224   0 page_mapping                   mm.h                 659\n 5415464       27   0 page_mapping                   mm.h                 659\n   13552        0   0 page_mapping                   mm.h                 657\n   13552        0   0 page_mapping                   mm.h                 659\n  242630        0   0 page_mapping                   mm.h                 657\n  242630        0   0 page_mapping                   mm.h                 659\n74899487        0   0 page_mapping                   mm.h                 659\n\nThe page_mapping() is a static inline, which is why it shows up multiple\ntimes.\n\nThe unlikely in page_mapping() was correct a total of 1909540379 times and\nincorrect 1270533123 times, with a 39% being incorrect.  With this much of\nan error, it\u0027s best to simply remove the unlikely and have the compiler\nand branch prediction figure this out.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "088e54658f559a13c2b988086512d76fe9e8f846",
      "tree": "35a5e0f82186dfa740751ec33f2fcdd90e347b0b",
      "parents": [
        "ddf9c6d472825ceda66b3adff0f6437dbcd37f71"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jan 13 15:46:16 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:36 2011 -0800"
      },
      "message": "mm: remove likely() from mapping_unevictable()\n\nThe mapping_unevictable() has a likely() around the mapping parameter.\nThis mapping parameter comes from page_mapping() which has an unlikely()\nthat the page will be set as PAGE_MAPPING_ANON, and if so, it will return\nNULL.  One would think that this unlikely() means that the mapping\nreturned by page_mapping() would not be NULL, but where page_mapping() is\nused just above mapping_unevictable(), that unlikely() is incorrect most\nof the time.  This means that the \"likely(mapping)\" in\nmapping_unevictable() is incorrect most of the time.\n\nRunning the annotated branch profiler on my main box which runs firefox,\nevolution, xchat and is part of my distcc farm, I had this:\n\n correct incorrect  %        Function                  File              Line\n ------- ---------  -        --------                  ----              ----\n12872836 1269443893  98 mapping_unevictable            pagemap.h            51\n35935762 1270265395  97 page_mapping                   mm.h                 659\n1306198001   143659   0 page_mapping                   mm.h                 657\n203131478   121586   0 page_mapping                   mm.h                 657\n 5415491     1116   0 page_mapping                   mm.h                 657\n74899487     1116   0 page_mapping                   mm.h                 657\n203132845      224   0 page_mapping                   mm.h                 659\n 5415464       27   0 page_mapping                   mm.h                 659\n   13552        0   0 page_mapping                   mm.h                 657\n   13552        0   0 page_mapping                   mm.h                 659\n  242630        0   0 page_mapping                   mm.h                 657\n  242630        0   0 page_mapping                   mm.h                 659\n74899487        0   0 page_mapping                   mm.h                 659\n\nThe page_mapping() is a static inline, which is why it shows up multiple\ntimes.  The mapping_unevictable() is also a static inline but seems to be\nused only once in my setup.\n\nThe unlikely in page_mapping() was correct a total of 1909540379 times and\nincorrect 1270533123 times, with a 39% being incorrect.  Perhaps this is\nenough to remove the unlikely from page_mapping() as well.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "110d74a921f4d272b47ef6104fcf937df808f4c8",
      "tree": "a2f1705e049f06e1cf8cbaf7d6b3261f0b46b6ab",
      "parents": [
        "fed067da46ad3b9acedaf794a5f05d0bc153280b"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Thu Jan 13 15:46:11 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:36 2011 -0800"
      },
      "message": "mm: add FOLL_MLOCK follow_page flag.\n\nMove the code to mlock pages from __mlock_vma_pages_range() to\nfollow_page().\n\nThis allows __mlock_vma_pages_range() to not have to break down work into\n16-page batches.\n\nAn additional motivation for doing this within the present patch series is\nthat it\u0027ll make it easier for a later chagne to drop mmap_sem when\nblocking on disk (we\u0027d like to be able to resume at the page that was read\nfrom disk instead of at the start of a 16-page batch).\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "212260aa07135b327752dc02625c68cf4ce04caf",
      "tree": "7ea25dddf5f69e91ec4b3d22f940e6c9604c7f93",
      "parents": [
        "dabb16f639820267b3850d804571c70bd93d4e07"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Thu Jan 13 15:46:06 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:35 2011 -0800"
      },
      "message": "mm: clear PageError bit in msync \u0026 fsync\n\nTemporary IO failures, eg.  due to loss of both multipath paths, can\npermanently leave the PageError bit set on a page, resulting in msync or\nfsync returning -EIO over and over again, even if IO is now getting to the\ndisk correctly.\n\nWe already clear the AS_ENOSPC and AS_IO bits in mapping-\u003eflags in the\nfilemap_fdatawait_range function.  Also clearing the PageError bit on the\npage allows subsequent msync or fsync calls on this file to return without\nan error, if the subsequent IO succeeds.\n\nUnfortunately data written out in the msync or fsync call that returned\n-EIO can still get lost, because the page dirty bit appears to not get\nrestored on IO error.  However, the alternative could be potentially all\nof memory filling up with uncleanable dirty pages, hanging the system, so\nthere is no nice choice here...\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Valerie Aurora \u003cvaurora@redhat.com\u003e\nAcked-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dabb16f639820267b3850d804571c70bd93d4e07",
      "tree": "7da59e6133cd2f820389574ac9206c56e046f5d4",
      "parents": [
        "d0a21265dfb5fa8ae54e90d0fb6d1c215b10a28a"
      ],
      "author": {
        "name": "Mandeep Singh Baines",
        "email": "msb@chromium.org",
        "time": "Thu Jan 13 15:46:05 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:35 2011 -0800"
      },
      "message": "oom: allow a non-CAP_SYS_RESOURCE proces to oom_score_adj down\n\nWe\u0027d like to be able to oom_score_adj a process up/down as it\nenters/leaves the foreground.  Currently, it is not possible to oom_adj\ndown without CAP_SYS_RESOURCE.  This patch allows a task to decrease its\noom_score_adj back to the value that a CAP_SYS_RESOURCE thread set it to\nor its inherited value at fork.  Assuming the thread that has forked it\nhas oom_score_adj of 0, each process could decrease it back from 0 upon\nactivation unless a CAP_SYS_RESOURCE thread elevated it to something\nhigher.\n\nAlternative considered:\n\n* a setuid binary\n* a daemon with CAP_SYS_RESOURCE\n\nSince you don\u0027t wan\u0027t all processes to be able to reduce their oom_adj, a\nsetuid or daemon implementation would be complex.  The alternatives also\nhave much higher overhead.\n\nThis patch updated from original patch based on feedback from David\nRientjes.\n\nSigned-off-by: Mandeep Singh Baines \u003cmsb@chromium.org\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0a21265dfb5fa8ae54e90d0fb6d1c215b10a28a",
      "tree": "a3bf2c96ad8e180f32a52e208667a40bb972275b",
      "parents": [
        "ec3f64fc9c196a304c4b7db3e1ff56d640628509"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Jan 13 15:46:02 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:34 2011 -0800"
      },
      "message": "mm: unify module_alloc code for vmalloc\n\nFour architectures (arm, mips, sparc, x86) use __vmalloc_area() for\nmodule_init().  Much of the code is duplicated and can be generalized in a\nglobally accessible function, __vmalloc_node_range().\n\n__vmalloc_node() now calls into __vmalloc_node_range() with a range of\n[VMALLOC_START, VMALLOC_END) for functionally equivalent behavior.\n\nEach architecture may then use __vmalloc_node_range() directly to remove\nthe duplication of code.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Russell King \u003clinux@arm.linux.org.uk\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ec3f64fc9c196a304c4b7db3e1ff56d640628509",
      "tree": "43de86d9fbb6543b99e1f450b1a3c15a3f151fa0",
      "parents": [
        "e5a5623b28198aa91ea71ee5d3846757fc76bc87"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Jan 13 15:46:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:34 2011 -0800"
      },
      "message": "mm: remove gfp mask from pcpu_get_vm_areas\n\npcpu_get_vm_areas() only uses GFP_KERNEL allocations, so remove the gfp_t\nformal and use the mask internally.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e5a5623b28198aa91ea71ee5d3846757fc76bc87",
      "tree": "6fad408973a428a0ca2bdffd0c30a7c5af400ec9",
      "parents": [
        "f3a310bc4e5ce7e55e1c8e25c31e63af017f3e50"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Jan 13 15:46:00 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:34 2011 -0800"
      },
      "message": "mm: remove unused get_vm_area_node\n\nget_vm_area_node() is unused in the kernel and can thus be removed.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f0f24967b0349798803260b2e4bf347cffa1990",
      "tree": "80448367dd2403f02e74f90671e1f050aea41292",
      "parents": [
        "77f1fe6b08b13a87391549c8a820ddc817b6f50e"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:58 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:34 2011 -0800"
      },
      "message": "mm: migration: cleanup migrate_pages API by matching types for offlining and sync\n\nWith the introduction of the boolean sync parameter, the API looks a\nlittle inconsistent as offlining is still an int.  Convert offlining to a\nbool for the sake of being tidy.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "77f1fe6b08b13a87391549c8a820ddc817b6f50e",
      "tree": "720865bd0994da3787b6f37d33b2ee4c26a2de6c",
      "parents": [
        "3e7d344970673c5334cf7b5bb27c8c0942b06126"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:57 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:34 2011 -0800"
      },
      "message": "mm: migration: allow migration to operate asynchronously and avoid synchronous compaction in the faster path\n\nMigration synchronously waits for writeback if the initial passes fails.\nCallers of memory compaction do not necessarily want this behaviour if the\ncaller is latency sensitive or expects that synchronous migration is not\ngoing to have a significantly better success rate.\n\nThis patch adds a sync parameter to migrate_pages() allowing the caller to\nindicate if wait_on_page_writeback() is allowed within migration or not.\nFor reclaim/compaction, try_to_compact_pages() is first called\nasynchronously, direct reclaim runs and then try_to_compact_pages() is\ncalled synchronously as there is a greater expectation that it\u0027ll succeed.\n\n[akpm@linux-foundation.org: build/merge fix]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e7d344970673c5334cf7b5bb27c8c0942b06126",
      "tree": "832ecb4da5fd27efa5a503df5b96bfdee2a52ffd",
      "parents": [
        "ee64fc9354e515a79c7232cfde65c88ec627308b"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:33 2011 -0800"
      },
      "message": "mm: vmscan: reclaim order-0 and use compaction instead of lumpy reclaim\n\nLumpy reclaim is disruptive.  It reclaims a large number of pages and\nignores the age of the pages it reclaims.  This can incur significant\nstalls and potentially increase the number of major faults.\n\nCompaction has reached the point where it is considered reasonably stable\n(meaning it has passed a lot of testing) and is a potential candidate for\ndisplacing lumpy reclaim.  This patch introduces an alternative to lumpy\nreclaim whe compaction is available called reclaim/compaction.  The basic\noperation is very simple - instead of selecting a contiguous range of\npages to reclaim, a number of order-0 pages are reclaimed and then\ncompaction is later by either kswapd (compact_zone_order()) or direct\ncompaction (__alloc_pages_direct_compact()).\n\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: use conventional task_struct naming]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b44129b30652c8771db2265939bb8b463724043d",
      "tree": "d5b669ff4faea020b03e894706f49d5d1ae56907",
      "parents": [
        "88f5acf88ae6a9778f6d25d0d5d7ec2d57764a97"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:43 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:31 2011 -0800"
      },
      "message": "mm: vmstat: use a single setter function and callback for adjusting percpu thresholds\n\nreduce_pgdat_percpu_threshold() and restore_pgdat_percpu_threshold() exist\nto adjust the per-cpu vmstat thresholds while kswapd is awake to avoid\nerrors due to counter drift.  The functions duplicate some code so this\npatch replaces them with a single set_pgdat_percpu_threshold() that takes\na callback function to calculate the desired threshold as a parameter.\n\n[akpm@linux-foundation.org: readability tweak]\n[kosaki.motohiro@jp.fujitsu.com: set_pgdat_percpu_threshold(): don\u0027t use for_each_online_cpu]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "88f5acf88ae6a9778f6d25d0d5d7ec2d57764a97",
      "tree": "6f39beef8cf918eb2ca9f64ae1bcd1ea79ca487a",
      "parents": [
        "43bb40c9e3aa51a3b038c9df2c9afb4d4685614d"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:41 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:31 2011 -0800"
      },
      "message": "mm: page allocator: adjust the per-cpu counter threshold when memory is low\n\nCommit aa45484 (\"calculate a better estimate of NR_FREE_PAGES when memory\nis low\") noted that watermarks were based on the vmstat NR_FREE_PAGES.  To\navoid synchronization overhead, these counters are maintained on a per-cpu\nbasis and drained both periodically and when a threshold is above a\nthreshold.  On large CPU systems, the difference between the estimate and\nreal value of NR_FREE_PAGES can be very high.  The system can get into a\ncase where pages are allocated far below the min watermark potentially\ncausing livelock issues.  The commit solved the problem by taking a better\nreading of NR_FREE_PAGES when memory was low.\n\nUnfortately, as reported by Shaohua Li this accurate reading can consume a\nlarge amount of CPU time on systems with many sockets due to cache line\nbouncing.  This patch takes a different approach.  For large machines\nwhere counter drift might be unsafe and while kswapd is awake, the per-cpu\nthresholds for the target pgdat are reduced to limit the level of drift to\nwhat should be a safe level.  This incurs a performance penalty in heavy\nmemory pressure by a factor that depends on the workload and the machine\nbut the machine should function correctly without accidentally exhausting\nall memory on a node.  There is an additional cost when kswapd wakes and\nsleeps but the event is not expected to be frequent - in Shaohua\u0027s test\ncase, there was one recorded sleep and wake event at least.\n\nTo ensure that kswapd wakes up, a safe version of zone_watermark_ok() is\nintroduced that takes a more accurate reading of NR_FREE_PAGES when called\nfrom wakeup_kswapd, when deciding whether it is really safe to go back to\nsleep in sleeping_prematurely() and when deciding if a zone is really\nbalanced or not in balance_pgdat().  We are still using an expensive\nfunction but limiting how often it is called.\n\nWhen the test case is reproduced, the time spent in the watermark\nfunctions is reduced.  The following report is on the percentage of time\nspent cumulatively spent in the functions zone_nr_free_pages(),\nzone_watermark_ok(), __zone_watermark_ok(), zone_watermark_ok_safe(),\nzone_page_state_snapshot(), zone_page_state().\n\nvanilla                      11.6615%\ndisable-threshold            0.2584%\n\nDavid said:\n\n: We had to pull aa454840 \"mm: page allocator: calculate a better estimate\n: of NR_FREE_PAGES when memory is low and kswapd is awake\" from 2.6.36\n: internally because tests showed that it would cause the machine to stall\n: as the result of heavy kswapd activity.  I merged it back with this fix as\n: it is pending in the -mm tree and it solves the issue we were seeing, so I\n: definitely think this should be pushed to -stable (and I would seriously\n: consider it for 2.6.37 inclusion even at this late date).\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReported-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nTested-by: Nicolas Bareil \u003cnico@chdir.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.37.1, 2.6.36.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "43bb40c9e3aa51a3b038c9df2c9afb4d4685614d",
      "tree": "3b7d37ef585d4a94d7d56f62f02418b0b0d056c1",
      "parents": [
        "5dfbd1d734ef5415bc47b034df7433ba21e40e7b"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Thu Jan 13 15:45:40 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:31 2011 -0800"
      },
      "message": "sched: remove long deprecated CLONE_STOPPED flag\n\nThis warning was added in commit bdff746a3915 (\"clone: prepare to recycle\nCLONE_STOPPED\") three years ago.  2.6.26 came and went.  As far as I know,\nno-one is actually using CLONE_STOPPED.\n\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c9ae009b298753a3baf71298d676a68b5a10c8f",
      "tree": "95a7e4ca54fe8e96c95cedd4e8d6450659015212",
      "parents": [
        "558bbb2fc75fd9676e07e347c021865e326c56db"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jan 13 15:45:38 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:31 2011 -0800"
      },
      "message": "irq: use per_cpu kstat_irqs\n\nUse modern per_cpu API to increment {soft|hard}irq counters, and use\nper_cpu allocation for (struct irq_desc)-\u003ekstats_irq instead of an array.\n\nThis gives better SMP/NUMA locality and saves few instructions per irq.\n\nWith small nr_cpuids values (8 for example), kstats_irq was a small array\n(less than L1_CACHE_BYTES), potentially source of false sharing.\n\nIn the !CONFIG_SPARSE_IRQ case, remove the huge, NUMA/cache unfriendly\nkstat_irqs_all[NR_IRQS][NR_CPUS] array.\n\nNote: we still populate kstats_irq for all possible irqs in\nearly_irq_init().  We probably could use on-demand allocations.  (Code\nincluded in alloc_descs()).  Problem is not all IRQS are used with a prior\nalloc_descs() call.\n\nkstat_irqs_this_cpu() is not used anymore, remove it.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f6bcfd94c0a97c11ce9197ade93a08bc8af6e057",
      "tree": "83d867565b4f2a7627b3288f9e000eaf2b217be9",
      "parents": [
        "509e4aef44eb10e4aef1f81c3c3ff1214671503b",
        "9d09e663d5502c46f2d9481c04c1087e1c2da698"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:47 2011 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm: (32 commits)\n  dm: raid456 basic support\n  dm: per target unplug callback support\n  dm: introduce target callbacks and congestion callback\n  dm mpath: delay activate_path retry on SCSI_DH_RETRY\n  dm: remove superfluous irq disablement in dm_request_fn\n  dm log: use PTR_ERR value instead of ENOMEM\n  dm snapshot: avoid storing private suspended state\n  dm snapshot: persistent make metadata_wq multithreaded\n  dm: use non reentrant workqueues if equivalent\n  dm: convert workqueues to alloc_ordered\n  dm stripe: switch from local workqueue to system_wq\n  dm: dont use flush_scheduled_work\n  dm snapshot: remove unused dm_snapshot queued_bios_work\n  dm ioctl: suppress needless warning messages\n  dm crypt: add loop aes iv generator\n  dm crypt: add multi key capability\n  dm crypt: add post iv call to iv generator\n  dm crypt: use io thread for reads only if mempool exhausted\n  dm crypt: scale to multiple cpus\n  dm crypt: simplify compatible table output\n  ...\n"
    },
    {
      "commit": "d8a3515e2a9523f8ed56d1f4537d16338bda2bc2",
      "tree": "d51bd1b4f0b3c13bedde97ba79e014882be634a9",
      "parents": [
        "6254b32b5791e47ba1c679d023f26985fa34755a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:26:46 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:26:46 2011 -0800"
      },
      "message": "Revert \"gpiolib: annotate gpio-intialization with __must_check\"\n\nThis reverts commit 0fdae42d361bbb431ca0ab0efed5126a94821177, which\nwasn\u0027t really supposed to go in, and causes lots of annoying warnings.\n\nQuoth Andrew:\n  \"Complete brainfart - I meant to drop that patch ages ago.\"\n\nQuoth Greg:\n  \"Ick, yeah, that patch isn\u0027t ok to go in as-is, all of the callers\n   need to be fixed up first, which is what I thought we had agreed on...\"\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "99d03c141b40914b67d63c9d23b8da4386422ed7",
      "tree": "d9c2d4da01f749325fac949d96e35aedea05cfc4",
      "parents": [
        "9d357b0787bb3c91835d5e658c3bda178f9ca419"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jan 13 20:00:02 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:02 2011 +0000"
      },
      "message": "dm: per target unplug callback support\n\nAdd per-target unplug callback support.\n\nCc: linux-raid@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9d357b0787bb3c91835d5e658c3bda178f9ca419",
      "tree": "48f2c3adc8ae06918ef0523f073291990407fa28",
      "parents": [
        "4e2d19e46b507018c6ed15f6c081d8f887ae229c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jan 13 20:00:01 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:01 2011 +0000"
      },
      "message": "dm: introduce target callbacks and congestion callback\n\nDM currently implements congestion checking by checking on congestion\nin each component device.  For raid456 we need to also check if the\nstripe cache is congested.\n\nAdd per-target congestion checker callback support.\n\nExtending the target_callbacks structure with additional callback\nfunctions allows for establishing multiple callbacks per-target (a\ncallback is also needed for unplug).\n\nCc: linux-raid@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9c4376de98719d2768dd919553843de34bb094a6",
      "tree": "c20b10e9018bb51803c535a38a04ee8b12b6d98a",
      "parents": [
        "4d4d66ab5322fa9b0f51842a76139387a40e1ce9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:58 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:58 2011 +0000"
      },
      "message": "dm: use non reentrant workqueues if equivalent\n\nkmirrord_wq, kcopyd_work and md-\u003ewq are created per dm instance and\nserve only a single work item from the dm instance, so non-reentrant\nworkqueues would provide the same ordering guarantees as ordered ones\nwhile allowing CPU affinity and use of the workqueues for other\npurposes.  Switch them to non-reentrant workqueues.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "86a54a4802df10d23ccd655e2083e812fe990243",
      "tree": "168ccb5f1824e16fb55ac64e2d4754775aeaa958",
      "parents": [
        "085ae0651b2791f3a430ddb76da92925b9952e13"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Jan 13 19:59:52 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:52 2011 +0000"
      },
      "message": "dm log userspace: add version number to comms\n\nThis patch adds a \u0027version\u0027 field to the \u0027dm_ulog_request\u0027\nstructure.\n\nThe \u0027version\u0027 field is taken from a portion of the unused\n\u0027padding\u0027 field in the \u0027dm_ulog_request\u0027 structure.  This\nwas done to avoid changing the size of the structure and\npossibly disrupting backwards compatibility.\n\nThe version number will help notify user-space daemons\nwhen a change has been made to the kernel/userspace\nlog API.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "84c89557a302e18414a011cc52b1abd034860743",
      "tree": "6b6ca2c400b7a6e09da46b051c177317316f0b93",
      "parents": [
        "d9bf0b508ddfe19883b982b29a03c02ccbf53806"
      ],
      "author": {
        "name": "Peter Jones",
        "email": "pjones@redhat.com",
        "time": "Thu Jan 13 19:59:47 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:47 2011 +0000"
      },
      "message": "dm ioctl: allow rename to fill empty uuid\n\nAllow the uuid of a mapped device to be set after device creation.\nPreviously the uuid (which is optional) could only be set by\nDM_DEV_CREATE.  If no uuid was supplied it could not be set later.\n\nSometimes it\u0027s necessary to create the device before the uuid is known,\nand in such cases the uuid must be filled in after the creation.\n\nThis patch extends DM_DEV_RENAME to accept a uuid accompanied by\na new flag DM_UUID_FLAG.  This can only be done once and if no\nuuid was previously supplied.  It cannot be used to change an\nexisting uuid.\n\nDM_VERSION_MINOR is also bumped to 19 to indicate this interface\nextension is available.\n\nSigned-off-by: Peter Jones \u003cpjones@redhat.com\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "275220f0fcff1adf28a717076e00f575edf05fda",
      "tree": "d249bccc80c64443dab211639050c4fb14332648",
      "parents": [
        "fe3c560b8a22cb28e54fe8950abef38e88d75831",
        "81c5e2ae33c4b19e53966b427e33646bf6811830"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block: (43 commits)\n  block: ensure that completion error gets properly traced\n  blktrace: add missing probe argument to block_bio_complete\n  block cfq: don\u0027t use atomic_t for cfq_group\n  block cfq: don\u0027t use atomic_t for cfq_queue\n  block: trace event block fix unassigned field\n  block: add internal hd part table references\n  block: fix accounting bug on cross partition merges\n  kref: add kref_test_and_get\n  bio-integrity: mark kintegrityd_wq highpri and CPU intensive\n  block: make kblockd_workqueue smarter\n  Revert \"sd: implement sd_check_events()\"\n  block: Clean up exit_io_context() source code.\n  Fix compile warnings due to missing removal of a \u0027ret\u0027 variable\n  fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n  block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n  cfq-iosched: don\u0027t check cfqg in choose_service_tree()\n  fs/splice: Pull buf-\u003eops-\u003econfirm() from splice_from_pipe actors\n  cdrom: export cdrom_check_events()\n  sd: implement sd_check_events()\n  sr: implement sr_check_events()\n  ...\n"
    },
    {
      "commit": "86f6f9b64a730844f1438cbedfacd6fb0170a7f7",
      "tree": "cd80f8610b444ae3bd2ebfc136c2c3299a52bd9b",
      "parents": [
        "d33a6291c1c577ff2272edab7416a0f7308e1cef",
        "8b6f08eaef16dfcfebc32fa9a017bf70336ad9ec"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:39:38 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:39:38 2011 -0800"
      },
      "message": "Merge branch \u0027sh-latest\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6\n\n* \u0027sh-latest\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (31 commits)\n  sh: Add support for AP-SH4AD-0A board.\n  sh: Add support for AP-SH4A-3A board.\n  sh: Add a new mach type for alpha project boards.\n  serial: sh-sci: build fixes.\n  sh: sh7372 SH4AL-DSP probe support\n  sh: sh7366 Enable SDIO IRQs\n  sh: sh7343 Enable SDIO IRQs\n  sh: mach-ecovec24: enable runtime PM for SDHI\n  sh: sh7723 / ap325rxa enable SDIO IRQs\n  sh: sh7722 Enable SDIO IRQs\n  sh: sh7724 Enable SDIO IRQs\n  sh: Fix up legacy PTEA space attribute mapping.\n  sh: Stub out legacy PCC pgprot encoding for X2 TLBs.\n  sh: constify prefetch pointers.\n  sh: Add a machvec callback for early memblock reservations.\n  sh: update sh7757lcr_defconfig\n  sh: add PVR probing for SH7757 3rd cut\n  sh: Use device_initcall() instead of __initcall()\n  sh: intc - convert board specific landisk code\n  sh: Move init_landisk_IRQ to header file\n  ...\n"
    },
    {
      "commit": "66dc918d42eaaa9afe42a47d07526765162017a9",
      "tree": "947411841773dfb076f1aa78bc5be868bc4281a6",
      "parents": [
        "b2034d474b7e1e8578bd5c2977024b51693269d9",
        "6db9a0f326d3144d790d9479309df480a8f562e4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:32:54 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:32:54 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: (348 commits)\n  ALSA: hda - Fix NULL-derefence with a single mic in STAC auto-mic detection\n  ALSA: hda - Add missing NID 0x19 fixup for Sony VAIO\n  ALSA: hda - Fix ALC275 enable hardware EQ for SONY VAIO\n  ALSA: oxygen: fix Xonar DG input\n  ALSA: hda - Fix EAPD on Lenovo NB ALC269 to low\n  ALSA: hda - Fix missing EAPD for Acer 4930G\n  ALSA: hda: Disable 4/6 channels on some NVIDIA GPUs.\n  ALSA: hda - Add static_hdmi_pcm option to HDMI codec parser\n  ALSA: hda - Don\u0027t refer ELD when unplugged\n  ASoC: tpa6130a2: Fix compiler warning\n  ASoC: tlv320dac33: Add DAPM selection for LOM invert\n  ASoC: DMIC codec: Adding a generic DMIC codec\n  ALSA: snd-usb-us122l: Fix missing NULL checks\n  ALSA: snd-usb-us122l: Fix MIDI output\n  ASoC: soc-cache: Fix invalid memory access during snd_soc_lzo_cache_sync()\n  ASoC: Fix section mismatch in wm8995.c\n  ALSA: oxygen: add S/PDIF source selection for Claro cards\n  ALSA: oxygen: fix CD/MIDI for X-Meridian (2G)\n  ASoC: fix migor audio build\n  ALSA: include delay.h for msleep in Xonar DG support\n  ...\n"
    },
    {
      "commit": "b2034d474b7e1e8578bd5c2977024b51693269d9",
      "tree": "e43969bf7c2ba89884c2580f56978826f1014520",
      "parents": [
        "27d189c02ba25851973c8582e419c0bded9f7e5b",
        "924241575a85249b9d410e38f5b2fcad9035e45c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:27:28 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:27:28 2011 -0800"
      },
      "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: (41 commits)\n  fs: add documentation on fallocate hole punching\n  Gfs2: fail if we try to use hole punch\n  Btrfs: fail if we try to use hole punch\n  Ext4: fail if we try to use hole punch\n  Ocfs2: handle hole punching via fallocate properly\n  XFS: handle hole punching via fallocate properly\n  fs: add hole punching to fallocate\n  vfs: pass struct file to do_truncate on O_TRUNC opens (try #2)\n  fix signedness mess in rw_verify_area() on 64bit architectures\n  fs: fix kernel-doc for dcache::prepend_path\n  fs: fix kernel-doc for dcache::d_validate\n  sanitize ecryptfs -\u003emount()\n  switch afs\n  move internal-only parts of ncpfs headers to fs/ncpfs\n  switch ncpfs\n  switch 9p\n  pass default dentry_operations to mount_pseudo()\n  switch hostfs\n  switch affs\n  switch configfs\n  ...\n"
    },
    {
      "commit": "27d189c02ba25851973c8582e419c0bded9f7e5b",
      "tree": "be142d664bc4e3cec7ab2878a243343f46e897ee",
      "parents": [
        "a1703154200c390ab03c10224c586e815d3e31e8",
        "55db8387a5e8d07407f0b7c6b2526417a2bc6243"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:25:58 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:25:58 2011 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (46 commits)\n  hwrng: via_rng - Fix memory scribbling on some CPUs\n  crypto: padlock - Move padlock.h into include/crypto\n  hwrng: via_rng - Fix asm constraints\n  crypto: n2 - use __devexit not __exit in n2_unregister_algs\n  crypto: mark crypto workqueues CPU_INTENSIVE\n  crypto: mv_cesa - dont return PTR_ERR() of wrong pointer\n  crypto: ripemd - Set module author and update email address\n  crypto: omap-sham - backlog handling fix\n  crypto: gf128mul - Remove experimental tag\n  crypto: af_alg - fix af_alg memory_allocated data type\n  crypto: aesni-intel - Fixed build with binutils 2.16\n  crypto: af_alg - Make sure sk_security is initialized on accept()ed sockets\n  net: Add missing lockdep class names for af_alg\n  include: Install linux/if_alg.h for user-space crypto API\n  crypto: omap-aes - checkpatch --file warning fixes\n  crypto: omap-aes - initialize aes module once per request\n  crypto: omap-aes - unnecessary code removed\n  crypto: omap-aes - error handling implementation improved\n  crypto: omap-aes - redundant locking is removed\n  crypto: omap-aes - DMA initialization fixes for OMAP off mode\n  ...\n"
    },
    {
      "commit": "a1703154200c390ab03c10224c586e815d3e31e8",
      "tree": "df90865eed3cfdf7af8664b5453a90e09d17480a",
      "parents": [
        "67b5ad9a63caa2ce56ddd2b22b802dae00d72c13",
        "766fc43973b16f9becb6b7402b3e052dbb84adee"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:25:24 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:25:24 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  rbd: fix cleanup when trying to mount inexistent image\n  net/ceph: make ceph_msgr_wq non-reentrant\n  ceph: fsc-\u003e*_wq\u0027s aren\u0027t used in memory reclaim path\n  ceph: Always free allocated memory in osdmap_decode()\n  ceph: Makefile: Remove unnessary code\n  ceph: associate requests with opening sessions\n  ceph: drop redundant r_mds field\n  ceph: implement DIRLAYOUTHASH feature to get dir layout from MDS\n  ceph: add dir_layout to inode\n"
    },
    {
      "commit": "1896a1346a80b2dac1f63a338f1e2ee0b6484646",
      "tree": "825b59dd33886398f541488d2b5eb65cbd353bdb",
      "parents": [
        "e691d24e9c5007486bef59c589c2a2d784e0c30b",
        "fa63bd4aa53aecc38956cbdd50f8ff9ed0d6d5ba"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:24:07 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:24:07 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6: (45 commits)\n  regulator: missing index in PTR_ERR() in isl6271a_probe()\n  regulator: Assign return value of mc13xxx_reg_rmw to ret\n  regulator: Add initial per-regulator debugfs support\n  regulator: Make regulator_has_full_constraints a bool\n  regulator: Clean up logging a bit\n  regulator: Optimise out noop voltage changes\n  regulator: Add API to re-apply voltage to hardware\n  regulator: Staticise non-exported functions in mc13892\n  regulator: Only notify voltage changes when they succeed\n  regulator: Provide a selector based set_voltage_sel() operation\n  regulator: Factor out voltage set operation into a separate function\n  regulator: Convert WM8994 to use get_voltage_sel()\n  regulator: Convert WM835x to use get_voltage_sel()\n  regulator: Allow modular build of mc13xxx-core\n  regulator: support PMIC mc13892\n  make mc13783 regulator code generic\n  Change the register name definitions for mc13783\n  mach-ux500: Updated and connected ab8500 regulator board configuration\n  regulators: Removed macros for initialization of ab8500 regulators\n  regulators: Added verbose debug messages to ab8500 regulators\n  ...\n"
    },
    {
      "commit": "55065bc52795faae549abfb912aacc622dd63876",
      "tree": "63683547e41ed459a2a8747eeafb5e969633d54f",
      "parents": [
        "008d23e4852d78bb2618f2035f8b2110b6a6b968",
        "e5c301428294cb8925667c9ee39f817c4ab1c2c9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:14:24 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:14:24 2011 -0800"
      },
      "message": "Merge branch \u0027kvm-updates/2.6.38\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm\n\n* \u0027kvm-updates/2.6.38\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm: (142 commits)\n  KVM: Initialize fpu state in preemptible context\n  KVM: VMX: when entering real mode align segment base to 16 bytes\n  KVM: MMU: handle \u0027map_writable\u0027 in set_spte() function\n  KVM: MMU: audit: allow audit more guests at the same time\n  KVM: Fetch guest cr3 from hardware on demand\n  KVM: Replace reads of vcpu-\u003earch.cr3 by an accessor\n  KVM: MMU: only write protect mappings at pagetable level\n  KVM: VMX: Correct asm constraint in vmcs_load()/vmcs_clear()\n  KVM: MMU: Initialize base_role for tdp mmus\n  KVM: VMX: Optimize atomic EFER load\n  KVM: VMX: Add definitions for more vm entry/exit control bits\n  KVM: SVM: copy instruction bytes from VMCB\n  KVM: SVM: implement enhanced INVLPG intercept\n  KVM: SVM: enhance mov DR intercept handler\n  KVM: SVM: enhance MOV CR intercept handler\n  KVM: SVM: add new SVM feature bit names\n  KVM: cleanup emulate_instruction\n  KVM: move complete_insn_gp() into x86.c\n  KVM: x86: fix CR8 handling\n  KVM guest: Fix kvm clock initialization when it\u0027s configured out\n  ...\n"
    },
    {
      "commit": "008d23e4852d78bb2618f2035f8b2110b6a6b968",
      "tree": "81c88f744f6f3fc84132527c1ddc0b4da410c5e2",
      "parents": [
        "8f685fbda43deccd130d192c9fcef1444649eaca",
        "bfc672dcf323877228682aff79dff8ecd9f30ff8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)\n  Documentation/trace/events.txt: Remove obsolete sched_signal_send.\n  writeback: fix global_dirty_limits comment runtime -\u003e real-time\n  ppc: fix comment typo singal -\u003e signal\n  drivers: fix comment typo diable -\u003e disable.\n  m68k: fix comment typo diable -\u003e disable.\n  wireless: comment typo fix diable -\u003e disable.\n  media: comment typo fix diable -\u003e disable.\n  remove doc for obsolete dynamic-printk kernel-parameter\n  remove extraneous \u0027is\u0027 from Documentation/iostats.txt\n  Fix spelling milisec -\u003e ms in snd_ps3 module parameter description\n  Fix spelling mistakes in comments\n  Revert conflicting V4L changes\n  i7core_edac: fix typos in comments\n  mm/rmap.c: fix comment\n  sound, ca0106: Fix assignment to \u0027channel\u0027.\n  hrtimer: fix a typo in comment\n  init/Kconfig: fix typo\n  anon_inodes: fix wrong function name in comment\n  fix comment typos concerning \"consistent\"\n  poll: fix a typo in comment\n  ...\n\nFix up trivial conflicts in:\n - drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c)\n - fs/ext4/ext4.h\n\nAlso fix missed \u0027diabled\u0027 typo in drivers/net/bnx2x/bnx2x.h while at it.\n"
    },
    {
      "commit": "8f685fbda43deccd130d192c9fcef1444649eaca",
      "tree": "976ed00423d03bdcaf11569a0c5c72ecb1c5c6c8",
      "parents": [
        "d24450e2075b9ceeef8ad942e6391bc73eae6933",
        "2d93666e70662cfcf1927e1a858685f5b38d5d65"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 09:58:38 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 09:58:38 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:\n  HID: hid-multitouch: minor fixes based on additional review\n  HID: Switch turbox/mosart touchscreen to hid-mosart\n  HID: add Add Cando touch screen 10.1-inch product id\n  HID: hid-mulitouch: add support for the \u0027Sensing Win7-TwoFinger\u0027\n  HID: hid-multitouch: add support for Cypress TrueTouch panels\n  HID: hid-multitouch: support for PixCir-based panels\n  HID: set HID_MAX_FIELD at 128\n  HID: add feature_mapping callback\n"
    },
    {
      "commit": "d24450e2075b9ceeef8ad942e6391bc73eae6933",
      "tree": "f8966325219aa28089f9d3dc944433c5658168ab",
      "parents": [
        "5cb2fad28fd8f95e911bed8c9342435a5b8e67de",
        "01c728a246a1072fe9664b91179a47937182b0a0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 09:58:14 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 09:58:14 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:\n  Input: add SW_ROTATE_LOCK switch type\n  Input: fix force feedback capability query example\n  Input: wacom_w8001 - add single-touch support\n  Input: add Austria Microsystem AS5011 joystick driver\n  Input: remove aaed2000 keyboard driver\n  Input: i8042 - introduce \u0027notimeout\u0027 blacklist for Dell Vostro V13\n  Input: cy8ctmg110_ts - Convert to dev_pm_ops\n  Input: migor_ts - convert to dev_pm_ops\n  Input: mcs5000_ts - convert to dev_pm_ops\n  Input: eeti_ts - convert to dev_pm_ops\n  Input: ad7879 - convert I2C to dev_pm_ops\n"
    },
    {
      "commit": "5cb2fad28fd8f95e911bed8c9342435a5b8e67de",
      "tree": "e0f63d8ebea4283c48ed2052811b3821344b322f",
      "parents": [
        "1da914e0648ace34e1c3738d9584e8b2cd6fe64a"
      ],
      "author": {
        "name": "Lasse Collin",
        "email": "lasse.collin@tukaani.org",
        "time": "Wed Jan 12 17:01:26 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:25 2011 -0800"
      },
      "message": "decompressors: remove unused constant from inflate.h\n\nSigned-off-by: Lasse Collin \u003classe.collin@tukaani.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ebe12439ba7fc62e1d6ecb569b7287771716ca1",
      "tree": "65945a63ad1474489d80c8ca1fb1c1c8091fb7a2",
      "parents": [
        "24fa0402a9b6a537e87e38341e78b7da86486846"
      ],
      "author": {
        "name": "Lasse Collin",
        "email": "lasse.collin@tukaani.org",
        "time": "Wed Jan 12 17:01:23 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:25 2011 -0800"
      },
      "message": "decompressors: add boot-time XZ support\n\nThis implements the API defined in \u003clinux/decompress/generic.h\u003e which is\nused for kernel, initramfs, and initrd decompression.  This patch together\nwith the first patch is enough for XZ-compressed initramfs and initrd;\nXZ-compressed kernel will need arch-specific changes.\n\nThe buffering requirements described in decompress_unxz.c are stricter\nthan with gzip, so the relevant changes should be done to the\narch-specific code when adding support for XZ-compressed kernel.\nSimilarly, the heap size in arch-specific pre-boot code may need to be\nincreased (30 KiB is enough).\n\nThe XZ decompressor needs memmove(), memeq() (memcmp() \u003d\u003d 0), and\nmemzero() (memset(ptr, 0, size)), which aren\u0027t available in all\narch-specific pre-boot environments.  I\u0027m including simple versions in\ndecompress_unxz.c, but a cleaner solution would naturally be nicer.\n\nSigned-off-by: Lasse Collin \u003classe.collin@tukaani.org\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Alain Knaff \u003calain@knaff.lu\u003e\nCc: Albin Tonnerre \u003calbin.tonnerre@free-electrons.com\u003e\nCc: Phillip Lougher \u003cphillip@lougher.demon.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": "24fa0402a9b6a537e87e38341e78b7da86486846",
      "tree": "06adb32802cf8a3491dff1f4e5cad464c676040a",
      "parents": [
        "fb7fa589fd3ecc212fabd7867a4ecc3b175260c1"
      ],
      "author": {
        "name": "Lasse Collin",
        "email": "lasse.collin@tukaani.org",
        "time": "Wed Jan 12 17:01:22 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:24 2011 -0800"
      },
      "message": "decompressors: add XZ decompressor module\n\nIn userspace, the .lzma format has become mostly a legacy file format that\ngot superseded by the .xz format.  Similarly, LZMA Utils was superseded by\nXZ Utils.\n\nThese patches add support for XZ decompression into the kernel.  Most of\nthe code is as is from XZ Embedded \u003chttp://tukaani.org/xz/embedded.html\u003e.\nIt was written for the Linux kernel but is usable in other projects too.\n\nAdvantages of XZ over the current LZMA code in the kernel:\n  - Nice API that can be used by other kernel modules; it\u0027s\n    not limited to kernel, initramfs, and initrd decompression.\n  - Integrity check support (CRC32)\n  - BCJ filters improve compression of executable code on\n    certain architectures. These together with LZMA2 can\n    produce a few percent smaller kernel or Squashfs images\n    than plain LZMA without making the decompression slower.\n\nThis patch: Add the main decompression code (xz_dec), testing module\n(xz_dec_test), wrapper script (xz_wrap.sh) for the xz command line tool,\nand documentation.  The xz_dec module is enough to have a usable XZ\ndecompressor e.g.  for Squashfs.\n\nSigned-off-by: Lasse Collin \u003classe.collin@tukaani.org\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Alain Knaff \u003calain@knaff.lu\u003e\nCc: Albin Tonnerre \u003calbin.tonnerre@free-electrons.com\u003e\nCc: Phillip Lougher \u003cphillip@lougher.demon.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": "2b6b5caa6d05579bd1501006e34feec1b2aef8c4",
      "tree": "9345fc087fab818c36bf348a563ba1f83c350bda",
      "parents": [
        "93685ad247ef65b7d6f90ffe97b44f5cfeaf40d3"
      ],
      "author": {
        "name": "Lasse Collin",
        "email": "lasse.collin@tukaani.org",
        "time": "Wed Jan 12 17:01:15 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:23 2011 -0800"
      },
      "message": "Decompressors: include \u003clinux/slab.h\u003e in \u003clinux/decompress/mm.h\u003e\n\nCurrently users of mm.h need to include \u003clinux/slab.h\u003e to use the macros\nmalloc() and free() provided by mm.h.  This fixes it.\n\nSigned-off-by: Lasse Collin \u003classe.collin@tukaani.org\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Alain Knaff \u003calain@knaff.lu\u003e\nCc: Albin Tonnerre \u003calbin.tonnerre@free-electrons.com\u003e\nCc: Phillip Lougher \u003cphillip@lougher.demon.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": "93685ad247ef65b7d6f90ffe97b44f5cfeaf40d3",
      "tree": "979868b5a03a7e73c792e222646a1876b3dc0216",
      "parents": [
        "6b01ed64c19b52121a717274d271d9915f8d3e94"
      ],
      "author": {
        "name": "Lasse Collin",
        "email": "lasse.collin@tukaani.org",
        "time": "Wed Jan 12 17:01:14 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:23 2011 -0800"
      },
      "message": "Decompressors: get rid of set_error_fn() macro\n\nset_error_fn() has become a useless complication after c1e7c3ae59\n(\"bzip2/lzma/gzip: pre-boot malloc doesn\u0027t return NULL on failure\") fixed\nthe use of error() in malloc().  Only decompress_unlzma.c had some use for\nit and that was easy to change too.\n\nThis also gets rid of the static function pointer \"error\", which\nshould have been marked as __initdata.\n\nSigned-off-by: Lasse Collin \u003classe.collin@tukaani.org\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Alain Knaff \u003calain@knaff.lu\u003e\nCc: Albin Tonnerre \u003calbin.tonnerre@free-electrons.com\u003e\nCc: Phillip Lougher \u003cphillip@lougher.demon.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": "8d0a1decb4a07bcb8ef5c4d7f693eafdebc2c41b",
      "tree": "ad3daa7fe81fca7269fbfda9adb2ac37114aa4b9",
      "parents": [
        "264b795fbd055f57b445eb3d58cfc51d6b10b22e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@gentoo.org",
        "time": "Wed Jan 12 17:01:12 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:23 2011 -0800"
      },
      "message": "romfs: have romfs_fs.h pull in necessary headers\n\nThis header uses things like __be32, so pull in linux/types.h.\n\nFurther, it uses BLOCK_SIZE, so pull in linux/fs.h.\n\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "beeae05138baf615a0284fc4a9022c33271ee37c",
      "tree": "322ec7c9ba15b5c543e2ad6eb0a2b34f7bace6ce",
      "parents": [
        "d3486f8b9eebcaa15ba8b72b63217e317f4f8635"
      ],
      "author": {
        "name": "Alexander Shishkin",
        "email": "virtuoso@slind.org",
        "time": "Wed Jan 12 17:01:09 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:22 2011 -0800"
      },
      "message": "cramfs: hide function prototypes behind __KERNEL__ macro\n\nCurrently, 3 kernel function prototypes are present in a header\nfile exported to userland. This patch fixes it.\n\nSigned-off-by: Alexander Shishkin \u003cvirtuoso@slind.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8930c8aa740b12ad69f44a35137bcc39bfa3dc41",
      "tree": "aa6cac8a6219112a3f6ab2fb12a341974e509811",
      "parents": [
        "68860b96ebac0d56961cf80b94f65dab55e39069"
      ],
      "author": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Wed Jan 12 17:01:03 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:21 2011 -0800"
      },
      "message": "memstick: add support for JMicron JMB 385 and 390 controllers\n\nSigned-off-by: Aries Lee \u003carieslee@jmicron.com\u003e\nSigned-off-by: Takashi Iwai \u003ctiwai@suse.de\u003e\nCc: Alex Dubov \u003coakad@yahoo.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "717c033669ed3ceaee8df57d4562fafcc1a6267a",
      "tree": "892e922c08b5f5eee8fbe7c8e0fdc774db660c67",
      "parents": [
        "e2c18e49a0d4f822ffc29fb4958943beb1ff08b7"
      ],
      "author": {
        "name": "Alexander Gordeev",
        "email": "lasaine@lvk.cs.msu.su",
        "time": "Wed Jan 12 17:00:58 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:21 2011 -0800"
      },
      "message": "pps: add kernel consumer support\n\nAdd an optional feature of PPSAPI, kernel consumer support, which uses the\nadded hardpps() function.\n\nSigned-off-by: Alexander Gordeev \u003clasaine@lvk.cs.msu.su\u003e\nAcked-by: Rodolfo Giometti \u003cgiometti@linux.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e2c18e49a0d4f822ffc29fb4958943beb1ff08b7",
      "tree": "227dbb544277f7908fa1666ce21a15e6b2282ccb",
      "parents": [
        "025b40abe715d638e60516a657d354e8560c1a85"
      ],
      "author": {
        "name": "Alexander Gordeev",
        "email": "lasaine@lvk.cs.msu.su",
        "time": "Wed Jan 12 17:00:57 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:21 2011 -0800"
      },
      "message": "pps: capture MONOTONIC_RAW timestamps as well\n\nMONOTONIC_RAW clock timestamps are ideally suited for frequency\ncalculation and also fit well into the original NTP hardpps design.  Now\nphase and frequency can be adjusted separately: the former based on\nREALTIME clock and the latter based on MONOTONIC_RAW clock.\n\nA new function getnstime_raw_and_real is added to timekeeping subsystem to\ncapture both timestamps at the same time and atomically.\n\nSigned-off-by: Alexander Gordeev \u003clasaine@lvk.cs.msu.su\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Rodolfo Giometti \u003cgiometti@enneenne.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "025b40abe715d638e60516a657d354e8560c1a85",
      "tree": "9320d3993c65c4eb56d3ab30337d590eb8c892fd",
      "parents": [
        "12f9b1f9c11700893a7b453705d95b260d78f268"
      ],
      "author": {
        "name": "Alexander Gordeev",
        "email": "lasaine@lvk.cs.msu.su",
        "time": "Wed Jan 12 17:00:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:20 2011 -0800"
      },
      "message": "ntp: add hardpps implementation\n\nThis commit adds hardpps() implementation based upon the original one from\nthe NTPv4 reference kernel code from David Mills.  However, it is highly\noptimized towards very fast syncronization and maximum stickness to PPS\nsignal.  The typical error is less then a microsecond.\n\nTo make it sync faster I had to throw away exponential phase filter so\nthat the full phase offset is corrected immediately.  Then I also had to\nthrow away median phase filter because it gives a bigger error itself if\nused without exponential filter.\n\nMaybe we will find an appropriate filtering scheme in the future but it\u0027s\nnot necessary if the signal quality is ok.\n\nSigned-off-by: Alexander Gordeev \u003clasaine@lvk.cs.msu.su\u003e\nAcked-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Rodolfo Giometti \u003cgiometti@enneenne.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "12f9b1f9c11700893a7b453705d95b260d78f268",
      "tree": "49cd6a357b37d5f1e4ff02ec08192de381cc8509",
      "parents": [
        "818b9eefe742cc29c6456e163e2c035cfb431e51"
      ],
      "author": {
        "name": "Alexander Gordeev",
        "email": "lasaine@lvk.cs.msu.su",
        "time": "Wed Jan 12 17:00:55 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:20 2011 -0800"
      },
      "message": "pps: timestamp is always passed to dcd_change()\n\nRemove the code that gatheres timestamp in pps_tty_dcd_change() in case\npassed ts parameter is NULL because it never happens in the current code.\nFix comments as well.\n\nSigned-off-by: Alexander Gordeev \u003clasaine@lvk.cs.msu.su\u003e\nAcked-by: Rodolfo Giometti \u003cgiometti@linux.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5e196d34a776420278e4117b4742cd9d3f2350ed",
      "tree": "86187af6a600876506261758a00c7c42e6037283",
      "parents": [
        "6f4229b51106cbc859e9d8209b22c8a2ec749e64"
      ],
      "author": {
        "name": "Alexander Gordeev",
        "email": "lasaine@lvk.cs.msu.su",
        "time": "Wed Jan 12 17:00:51 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:19 2011 -0800"
      },
      "message": "pps: access pps device by direct pointer\n\nUsing device index as a pointer needs some unnecessary work to be done\nevery time the pointer is needed (in irq handler for example).  Using a\ndirect pointer is much more easy (and safe as well).\n\nSigned-off-by: Alexander Gordeev \u003clasaine@lvk.cs.msu.su\u003e\nAcked-by: Rodolfo Giometti \u003cgiometti@linux.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6f4229b51106cbc859e9d8209b22c8a2ec749e64",
      "tree": "346e08800b0f45330e99c9fae0255c73f1666835",
      "parents": [
        "3003d55b59aa98aeaff2773df69732b27c0cbf6a"
      ],
      "author": {
        "name": "Alexander Gordeev",
        "email": "lasaine@lvk.cs.msu.su",
        "time": "Wed Jan 12 17:00:50 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:19 2011 -0800"
      },
      "message": "pps: unify timestamp gathering\n\nAdd a helper function to gather timestamps.  This way clients don\u0027t have\nto duplicate it.\n\nSigned-off-by: Alexander Gordeev \u003clasaine@lvk.cs.msu.su\u003e\nAcked-by: Rodolfo Giometti \u003cgiometti@linux.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3003d55b59aa98aeaff2773df69732b27c0cbf6a",
      "tree": "d7fbadca22907cb90b9e94b283bf8abe6d508c73",
      "parents": [
        "86d921f9ec06bc3fd357a77877d37a604d5674c3"
      ],
      "author": {
        "name": "Alexander Gordeev",
        "email": "lasaine@lvk.cs.msu.su",
        "time": "Wed Jan 12 17:00:50 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:19 2011 -0800"
      },
      "message": "pps: fix race in PPS_FETCH handler\n\nThere was a race in PPS_FETCH ioctl handler when several processes want to\nobtain PPS data simultaneously using sleeping PPS_FETCH.  They all sleep\nmost of the time in the system call.\n\nWith the old approach when the first process waiting on the pps queue is\nwaken up it makes new system call right away and zeroes pps-\u003ego.  So other\nprocesses continue to sleep.  This is a clear race condition because of\nthe global \u0027go\u0027 variable.\n\nWith the new approach pps-\u003elast_ev holds some value increasing at each PPS\nevent.  PPS_FETCH ioctl handler saves current value to the local variable\nat the very beginning so it can safely check that there is a new event by\njust comparing both variables.\n\nSigned-off-by: Alexander Gordeev \u003clasaine@lvk.cs.msu.su\u003e\nAcked-by: Rodolfo Giometti \u003cgiometti@linux.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a21a3cc0be92e70474cc2ab06cb074f6a7c3f09",
      "tree": "2a220ba224b023b3f8a8c376184b9385cfcafcee",
      "parents": [
        "9ab020cf07e457a8b425bf5af17e704f90f86d8b"
      ],
      "author": {
        "name": "Alexander Gordeev",
        "email": "lasaine@lvk.cs.msu.su",
        "time": "Wed Jan 12 17:00:49 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:19 2011 -0800"
      },
      "message": "pps: trivial fixes\n\nHere are some very trivial fixes combined:\n\n- add macro definitions to protect header file from including several times\n\n- remove declaration for an unexistent array\n\n- fix typos\n\nSigned-off-by: Alexander Gordeev \u003clasaine@lvk.cs.msu.su\u003e\nAcked-by: Rodolfo Giometti \u003cgiometti@linux.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0329326e85aaa30fb8d427828c718d565c287385",
      "tree": "ab6d9c1e9c6a56ebca273b9d36d76a4a3eb60b23",
      "parents": [
        "6164281ab7a4d3bd42588d6b25984e960a2e032f"
      ],
      "author": {
        "name": "Matti J. Aaltonen",
        "email": "matti.j.aaltonen@nokia.com",
        "time": "Wed Jan 12 17:00:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:19 2011 -0800"
      },
      "message": "NFC: Driver for NXP Semiconductors PN544 NFC chip.\n\nCreates a new \"Near Field Communication\" subsystem in drivers/nfc.\nhttp://en.wikipedia.org/wiki/Near_Field_Communication is useful ;)\n\nThis is a driver for the pn544 NFC device. The driver transfers\nETSI messages between the device and the user space.\n\nSigned-off-by: Matti J. Aaltonen \u003cmatti.j.aaltonen@nokia.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6164281ab7a4d3bd42588d6b25984e960a2e032f",
      "tree": "ea4bf309efed7ec922431c6e5b5d659919eaf2ae",
      "parents": [
        "e020e742e5dbd8c44d31706995dc13ddc732e274"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Wed Jan 12 17:00:46 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:18 2011 -0800"
      },
      "message": "user_ns: improve the user_ns on-the-slab packaging\n\nCurrently on 64-bit arch the user_namespace is 2096 and when being\nkmalloc-ed it resides on a 4k slab wasting 2003 bytes.\n\nIf we allocate a separate cache for it and reduce the hash size from 128\nto 64 chains the packaging becomes *much* better - the struct is 1072\nbytes and the hole between is 98 bytes.\n\n[akpm@linux-foundation.org: s/__initcall/module_init/]\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Serge E. Hallyn \u003cserge@hallyn.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e9d4d84847b5b05c8a049b681f15906a91e0f78",
      "tree": "7dc30dbd970d2559c99779bfa4ef0e30b71d3860",
      "parents": [
        "558bda65775d740a97efae2b67f1d53da7a7b9a2"
      ],
      "author": {
        "name": "Alexandre Bounine",
        "email": "alexandre.bounine@idt.com",
        "time": "Wed Jan 12 17:00:43 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:18 2011 -0800"
      },
      "message": "rapidio: add new idt sRIO switches\n\nAdd new sRIO switch device IDs and enable a basic support for them.\n\nSigned-off-by: Alexandre Bounine \u003calexandre.bounine@idt.com\u003e\nCc: Kumar Gala \u003cgalak@kernel.crashing.org\u003e\nCc: Matt Porter \u003cmporter@kernel.crashing.org\u003e\nCc: Li Yang \u003cleoli@freescale.com\u003e\nCc: Thomas Moll \u003cthomas.moll@sysgo.com\u003e\nCc: Micha Nelissen \u003cmicha@neli.hopto.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e6536927e64a2511864f2141d3e5b198b3f25ba6",
      "tree": "5fafa02d6542e9ba215fd6606590b3fc34095359",
      "parents": [
        "ded05782719d0f7e79af98be7cf88c7e23a90435"
      ],
      "author": {
        "name": "Alexandre Bounine",
        "email": "alexandre.bounine@idt.com",
        "time": "Wed Jan 12 17:00:40 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:18 2011 -0800"
      },
      "message": "rapidio: add definitions of Component Tag fields\n\nAdd definition of the unique device identifier field in the component tag.\n RIO_CTAG_UDEVID does not take all 32 bits of the component tag value to\nallow future extensions to the component tag use.\n\nSelected size of the RIO_CTAG_UDEVID field (17 bits) is sufficient to\naccommodate maximum number of endpoints in large RIO network (16-bit id)\nplus switches.\n\nSigned-off-by: Alexandre Bounine \u003calexandre.bounine@idt.com\u003e\nCc: Kumar Gala \u003cgalak@kernel.crashing.org\u003e\nCc: Matt Porter \u003cmporter@kernel.crashing.org\u003e\nCc: Li Yang \u003cleoli@freescale.com\u003e\nCc: Thomas Moll \u003cthomas.moll@sysgo.com\u003e\nCc: Micha Nelissen \u003cmicha@neli.hopto.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ded05782719d0f7e79af98be7cf88c7e23a90435",
      "tree": "5f3fd7ed0d7f9903748b41edefcd3294de81bd5b",
      "parents": [
        "a93192a5d245a262dc52fa426de5b20467308a77"
      ],
      "author": {
        "name": "Alexandre Bounine",
        "email": "alexandre.bounine@idt.com",
        "time": "Wed Jan 12 17:00:39 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:17 2011 -0800"
      },
      "message": "rapidio: integrate rio_switch into rio_dev\n\nConvert RIO switches device structures (rio_dev + rio_switch) into a\nsingle allocation unit.\n\nThis change is based on the fact that RIO switches are using common RIO\ndevice objects anyway.  Allocating RIO switch objects as RIO devices with\nadded space for switch information simplifies handling of RIO switch\ndevices.\n\nSigned-off-by: Alexandre Bounine \u003calexandre.bounine@idt.com\u003e\nCc: Kumar Gala \u003cgalak@kernel.crashing.org\u003e\nCc: Matt Porter \u003cmporter@kernel.crashing.org\u003e\nCc: Li Yang \u003cleoli@freescale.com\u003e\nCc: Thomas Moll \u003cthomas.moll@sysgo.com\u003e\nCc: Micha Nelissen \u003cmicha@neli.hopto.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a93192a5d245a262dc52fa426de5b20467308a77",
      "tree": "f3231240286ef3d204375e047f6b2e1a8efbbcd2",
      "parents": [
        "e6d7202b66d99bf514c8e901db68386b1fcd6d56"
      ],
      "author": {
        "name": "Alexandre Bounine",
        "email": "alexandre.bounine@idt.com",
        "time": "Wed Jan 12 17:00:38 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:17 2011 -0800"
      },
      "message": "rapidio: use common destid storage for endpoints and switches\n\nChange code to use one storage location common for switches and endpoints.\nThis eliminates unnecessary device type checks during basic access\noperations.  Logic that assigns destid to RIO devices stays unchanged - as\nbefore, switches use an associated destid because they do not have their\nown.\n\nSigned-off-by: Alexandre Bounine \u003calexandre.bounine@idt.com\u003e\nCc: Kumar Gala \u003cgalak@kernel.crashing.org\u003e\nCc: Matt Porter \u003cmporter@kernel.crashing.org\u003e\nCc: Li Yang \u003cleoli@freescale.com\u003e\nCc: Thomas Moll \u003cthomas.moll@sysgo.com\u003e\nCc: Micha Nelissen \u003cmicha@neli.hopto.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e6d7202b66d99bf514c8e901db68386b1fcd6d56",
      "tree": "2e01041b3173c2d1ce511643c04466c9e1f066db",
      "parents": [
        "ceff1a770933e2ca2bf995b453dade4ec47a9878"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Jan 12 17:00:37 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:17 2011 -0800"
      },
      "message": "fs/char_dev.c: remove unused cdev_index()\n\nCommit 66fa12c571d3 (\"ieee1394: remove the old IEEE 1394 driver stack\")\neliminated the only user of cdev_index().  So it can be removed too.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5f829e405ec4e96f711165a4a7b55c271d4363e2",
      "tree": "366c02d4d085a486546b1e071efdd51f161b2267",
      "parents": [
        "0fdae42d361bbb431ca0ab0efed5126a94821177"
      ],
      "author": {
        "name": "Wolfram Sang",
        "email": "w.sang@pengutronix.de",
        "time": "Wed Jan 12 17:00:24 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:15 2011 -0800"
      },
      "message": "gpiolib: add missing functions to generic fallback\n\nSigned-off-by: Wolfram Sang \u003cw.sang@pengutronix.de\u003e\nCc: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: Greg KH \u003cgregkh@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0fdae42d361bbb431ca0ab0efed5126a94821177",
      "tree": "958a045aca3e40ca487dac67597496a7ed885115",
      "parents": [
        "49a367937fe4250144e24440e5a11ae4344202b1"
      ],
      "author": {
        "name": "Wolfram Sang",
        "email": "w.sang@pengutronix.de",
        "time": "Wed Jan 12 17:00:23 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:14 2011 -0800"
      },
      "message": "gpiolib: annotate gpio-intialization with __must_check\n\nBecause GPIOs can have crucial functions especially in embedded systems,\nwe are better safe than sorry regarding their configuration.  For\ngpio_request, the documentation is simply enforced: \u003cquote\u003e\"The return\nvalue of gpio_request() must be checked.\"\u003c/quote\u003e For gpio_direction_* and\ngpio_request_*, we now act accordingly.\n\nSigned-off-by: Wolfram Sang \u003cw.sang@pengutronix.de\u003e\nCc: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: Greg KH \u003cgregkh@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7637c9259f7b6dd841471ccf1120d484b7364f99",
      "tree": "1284edad0917aafa6b9fab7e2f98f460b671d2dc",
      "parents": [
        "1b912c1bca5c162e611384fe7d39c916e081701a"
      ],
      "author": {
        "name": "Andres Salomon",
        "email": "dilinger@queued.net",
        "time": "Wed Jan 12 17:00:11 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:13 2011 -0800"
      },
      "message": "drivers/staging/olpc_dcon: convert to new cs5535 gpio API\n\nDrop the old geode_gpio crud, as well as the raw outl() calls; instead,\nuse the Linux GPIO API where possible, and the cs5535_gpio API in other\nplaces.\n\nNote that we don\u0027t actually clean up the driver properly yet (once loaded,\nit always remains loaded).  That\u0027ll come later..\n\nThis patch is necessary for building the driver.\n\nSigned-off-by: Andres Salomon \u003cdilinger@queued.net\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b912c1bca5c162e611384fe7d39c916e081701a",
      "tree": "ae3a1c48954cec0a7f9d0b16207e9bfe6c4d22e6",
      "parents": [
        "5f003feba2a8761d2ee7b367df5a0fe6b729dc8f"
      ],
      "author": {
        "name": "Andres Salomon",
        "email": "dilinger@queued.net",
        "time": "Wed Jan 12 17:00:10 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:13 2011 -0800"
      },
      "message": "drivers/gpio/cs5535-gpio.c: add some additional cs5535-specific GPIO functionality\n\nThis adds (well, re-adds actually) handling for events/IRQs through cs5535\nGPIOs.  In the wild and wooly world of CS5535, setup_event() is for\nassigning an IRQ to a GPIO filter/event pair, and set_irq() sets up the\npair to trigger IRQs.\n\nThese should really only be used in highly platform-specific drivers (such\nas OLPC\u0027s DCON driver).  Sadly, because set_irq() uses MSRs, this causes\nthe driver to become X86-specific.\n\nSigned-off-by: Andres Salomon \u003cdilinger@queued.net\u003e\nSigned-off-by: Daniel Drake \u003cdsd@laptop.org\u003e\nCc: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f670d0ecda73b7438eec9ed108680bc5f5362ad8",
      "tree": "02b355fa1925c392a4dac7aeaa0958b5272881c2",
      "parents": [
        "52bd19f7691b2ea6433aef0ef94c08c57efd7e79"
      ],
      "author": {
        "name": "Mikael Pettersson",
        "email": "mikpe@it.uu.se",
        "time": "Wed Jan 12 17:00:02 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:12 2011 -0800"
      },
      "message": "binfmt_elf: cleanups\n\nThis cleans up a few bits in binfmt_elf.c and binfmts.h:\n\n- the hasvdso field in struct linux_binfmt is unused, so remove it and\n  the only initialization of it\n\n- the elf_map CPP symbol is not defined anywhere in the kernel, so\n  remove an unnecessary #ifndef elf_map\n\n- reduce excessive indentation in elf_format\u0027s initializer\n\n- add missing spaces, remove extraneous spaces\n\nNo functional changes, but tested on x86 (32 and 64 bit), powerpc (32 and\n64 bit), sparc64, arm, and alpha.\n\nSigned-off-by: Mikael Pettersson \u003cmikpe@it.uu.se\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "52bd19f7691b2ea6433aef0ef94c08c57efd7e79",
      "tree": "daaa39ee774fb4fe56ca61247eb930ed4f6e1ef1",
      "parents": [
        "65329bf46bf9ddc37845c9a6823a8e8022d305b9"
      ],
      "author": {
        "name": "Robin Holt",
        "email": "holt@sgi.com",
        "time": "Wed Jan 12 17:00:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:12 2011 -0800"
      },
      "message": "epoll: convert max_user_watches to long\n\nOn a 16TB machine, max_user_watches has an integer overflow.  Convert it\nto use a long and handle the associated fallout.\n\nSigned-off-by: Robin Holt \u003cholt@sgi.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.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": "a3f938bf6f5746d39e013d03ba13118a393fee96",
      "tree": "37084efbd18680d616fbd3c9624061dd22a1bc96",
      "parents": [
        "6ec42a56e258462cda510421aecc2680d3642e21"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Jan 12 16:59:48 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:10 2011 -0800"
      },
      "message": "include/linux/printk.h: use tab not spaces for indent\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ec42a56e258462cda510421aecc2680d3642e21",
      "tree": "da167589365065ce7ec323a0d557f65737645771",
      "parents": [
        "ac83ed687837a44c6e46fb16411fb0d299fffd80"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Jan 12 16:59:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:10 2011 -0800"
      },
      "message": "include/linux/printk.h: organize printk_ratelimited macros\n\n- Use no_printk for !CONFIG_PRINTK printk_ratelimited.\n\n- Whitespace cleanup.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac83ed687837a44c6e46fb16411fb0d299fffd80",
      "tree": "04abc4db3153056b2c478209bfb8a4c7701d6a5b",
      "parents": [
        "16cb839f13324978bd58082e69de81a711802b11"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Jan 12 16:59:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:10 2011 -0800"
      },
      "message": "include/linux/printk.h lib/hexdump.c: neatening and add CONFIG_PRINTK guard\n\n- Move prototypes and align arguments.\n\n- Add CONFIG_PRINTK guard for print_hex functions\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "16cb839f13324978bd58082e69de81a711802b11",
      "tree": "eb59fdf9deea125a432c50d7cb8f7f733bd58681",
      "parents": [
        "5264f2f75d8678f3e9683042a4639baa5884bda9"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Jan 12 16:59:46 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:09 2011 -0800"
      },
      "message": "include/linux/printk.h: add pr_\u003clevel\u003e_once macros\n\n- Move printk_once definitions and add an #ifdef CONFIG_PRINTK\n\n- Add pr_\u003clevel\u003e_once so printks can use pr_fmt\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5264f2f75d8678f3e9683042a4639baa5884bda9",
      "tree": "1c50abbe3179ece00cbb14623d7724602fa17f8c",
      "parents": [
        "7d1e91aeb317c3c747369d8594fc1b742c265a07"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Jan 12 16:59:45 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:09 2011 -0800"
      },
      "message": "include/linux/printk.h: use and neaten no_printk\n\n- Move no_printk above first CONFIG_PRINTK block so it can be used by\n  printk_once.\n\n- Convert statement expression if (0) printk macros to no_printk.\n\n- Convert printk_once(x...) to more normally used (fmt, ...) fmt,\n  ##__VA_ARGS__.\n\n- Standardize __attribute__ use.\n\n- Expand single line inline functions.\n\n- Remove space before pointer.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7d1e91aeb317c3c747369d8594fc1b742c265a07",
      "tree": "0a51a1b9effa50417091ee4d16c3b1a9589654c1",
      "parents": [
        "a9747cc3addf81e56ea9b8a4374fbdb9d1737eae"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Jan 12 16:59:45 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:09 2011 -0800"
      },
      "message": "include/linux/printk.h: use space after #define\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a9747cc3addf81e56ea9b8a4374fbdb9d1737eae",
      "tree": "fe163341b5c80ea2f597095c609eec959ee3e728",
      "parents": [
        "fb842b00c5eab66ec361b31550aa8a922745ce9e"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Jan 12 16:59:43 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:09 2011 -0800"
      },
      "message": "include/linux/printk.h: move console functions and variables together\n\nThere are many uses of printk_once(KERN_\u003clevel\u003e, so add pr_\u003clevel\u003e_once\nmacros to avoid printk_once(KERN_\u003clevel\u003e pr_fmt(fmt).\n\nAdd an #ifdef CONFIG_PRINTK for print_hex_dump and static inline void\nfunctions for the #else cases to reduce embedded code size.  Neaten and\norganize the rest of the code.\n\nThis patch:\n\nMove console functions and variables together.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "455cd5ab305c90ffc422dd2e0fb634730942b257"
}
