)]}'
{
  "log": [
    {
      "commit": "42172d751b4596b8ca4346a1c251b5f1c661ab0c",
      "tree": "f9149aee9349c43bd8e253b407acae920e041d00",
      "parents": [
        "c2448278e3be3a43fe0343e138444742af1e99ae"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri May 23 13:04:18 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:07 2008 -0700"
      },
      "message": "mm: allow pfnmap -\u003efault()s\n\nTake out an assertion to allow -\u003efault handlers to service PFNMAP regions.\nThis is required to reimplement .nopfn handlers with .fault handlers and\nsubsequently remove nopfn.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "362a61ad61199e19a61b8e432015e2586b288f5b",
      "tree": "b766e454928eea0db1ec6e301340c27ef5f5244f",
      "parents": [
        "73f10281ea96d7e8b4fc1c5d755a7c8eb484155b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed May 14 06:37:36 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 10:05:18 2008 -0700"
      },
      "message": "fix SMP data race in pagetable setup vs walking\n\nThere is a possible data race in the page table walking code. After the split\nptlock patches, it actually seems to have been introduced to the core code, but\neven before that I think it would have impacted some architectures (powerpc\nand sparc64, at least, walk the page tables without taking locks eg. see\nfind_linux_pte()).\n\nThe race is as follows:\nThe pte page is allocated, zeroed, and its struct page gets its spinlock\ninitialized. The mm-wide ptl is then taken, and then the pte page is inserted\ninto the pagetables.\n\nAt this point, the spinlock is not guaranteed to have ordered the previous\nstores to initialize the pte page with the subsequent store to put it in the\npage tables. So another Linux page table walker might be walking down (without\nany locks, because we have split-leaf-ptls), and find that new pte we\u0027ve\ninserted. It might try to take the spinlock before the store from the other\nCPU initializes it. And subsequently it might read a pte_t out before stores\nfrom the other CPU have cleared the memory.\n\nThere are also similar races in higher levels of the page tables. They\nobviously don\u0027t involve the spinlock, but could see uninitialized memory.\n\nArch code and hardware pagetable walkers that walk the pagetables without\nlocks could see similar uninitialized memory problems, regardless of whether\nsplit ptes are enabled or not.\n\nI prefer to put the barriers in core code, because that\u0027s where the higher\nlevel logic happens, but the page table accessors are per-arch, and open-coding\nthem everywhere I don\u0027t think is an option. I\u0027ll put the read-side barriers\nin alpha arch code for now (other architectures perform data-dependent loads\nin order).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aeed5fce37196e09b4dac3a1c00d8b7122e040ce",
      "tree": "d16a8f824ad06ac5dea6052f1986165a0d7fc865",
      "parents": [
        "bb78be8397d3b0900af3d717672218ee3ea07985"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue May 06 20:49:23 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 06 13:08:58 2008 -0700"
      },
      "message": "x86: fix PAE pmd_bad bootup warning\n\nFix warning from pmd_bad() at bootup on a HIGHMEM64G HIGHPTE x86_32.\n\nThat came from 9fc34113f6880b215cbea4e7017fc818700384c2 x86: debug pmd_bad();\nbut we understand now that the typecasting was wrong for PAE in the previous\nversion: pagetable pages above 4GB looked bad and stopped Arjan from booting.\n\nAnd revert that cded932b75ab0a5f9181ee3da34a0a488d1a14fd x86: fix pmd_bad\nand pud_bad to support huge pages.  It was the wrong way round: we shouldn\u0027t\nweaken every pmd_bad and pud_bad check to let huge pages slip through - in\npart they check that we _don\u0027t_ have a huge page where it\u0027s not expected.\n\nPut the x86 pmd_bad() and pud_bad() definitions back to what they have long\nbeen: they can be improved (x86_32 should use PTE_MASK, to stop PAE thinking\njunk in the upper word is good; and x86_64 should follow x86_32\u0027s stricter\ncomparison, to stop thinking any subset of required bits is good); but that\nshould be a later patch.\n\nFix Hans\u0027 good observation that follow_page() will never find pmd_huge()\nbecause that would have already failed the pmd_bad test: test pmd_huge in\nbetween the pmd_none and pmd_bad tests.  Tighten x86\u0027s pmd_huge() check?\nNo, once it\u0027s a hugepage entry, it can get quite far from a good pmd: for\nexample, PROT_NONE leaves it with only ACCESSED of the KERN_PGTABLE bits.\n\nHowever... though follow_page() contains this and another test for huge\npages, so it\u0027s nice to keep it working on them, where does it actually get\ncalled on a huge page?  get_user_pages() checks is_vm_hugetlb_page(vma) to\nto call alternative hugetlb processing, as does unmap_vmas() and others.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nEarlier-version-tested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Jeff Chua \u003cjeff.chua.linux@gmail.com\u003e\nCc: Hans Rosenfeld \u003chans.rosenfeld@amd.com\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "423bad600443c590f34ed7ce357591f76f48f137",
      "tree": "79487f811bf1097f2592c4d20f688d1b1ec41e25",
      "parents": [
        "7e675137a8e1a4d45822746456dd389b65745bf6"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Apr 28 02:13:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:23 2008 -0700"
      },
      "message": "mm: add vm_insert_mixed\n\nvm_insert_mixed will insert either a raw pfn or a refcounted struct page into\nthe page tables, depending on whether vm_normal_page() will return the page or\nnot.  With the introduction of the new pte bit, this is now a too tricky for\ndrivers to be doing themselves.\n\nfilemap_xip uses this in a subsequent patch.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jared Hulbert \u003cjaredeh@gmail.com\u003e\nCc: Carsten Otte \u003ccotte@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7e675137a8e1a4d45822746456dd389b65745bf6",
      "tree": "5df01d23ea1b6b212d18f2136ff82913fcbe7718",
      "parents": [
        "b379d790197cdf8a95fb67507d75a24ac0a1678d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Apr 28 02:13:00 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:23 2008 -0700"
      },
      "message": "mm: introduce pte_special pte bit\n\ns390 for one, cannot implement VM_MIXEDMAP with pfn_valid, due to their memory\nmodel (which is more dynamic than most).  Instead, they had proposed to\nimplement it with an additional path through vm_normal_page(), using a bit in\nthe pte to determine whether or not the page should be refcounted:\n\nvm_normal_page()\n{\n\t...\n        if (unlikely(vma-\u003evm_flags \u0026 (VM_PFNMAP|VM_MIXEDMAP))) {\n                if (vma-\u003evm_flags \u0026 VM_MIXEDMAP) {\n#ifdef s390\n\t\t\tif (!mixedmap_refcount_pte(pte))\n\t\t\t\treturn NULL;\n#else\n                        if (!pfn_valid(pfn))\n                                return NULL;\n#endif\n                        goto out;\n                }\n\t...\n}\n\nThis is fine, however if we are allowed to use a bit in the pte to determine\nrefcountedness, we can use that to _completely_ replace all the vma based\nschemes.  So instead of adding more cases to the already complex vma-based\nscheme, we can have a clearly seperate and simple pte-based scheme (and get\nslightly better code generation in the process):\n\nvm_normal_page()\n{\n#ifdef s390\n\tif (!mixedmap_refcount_pte(pte))\n\t\treturn NULL;\n\treturn pte_page(pte);\n#else\n\t...\n#endif\n}\n\nAnd finally, we may rather make this concept usable by any architecture rather\nthan making it s390 only, so implement a new type of pte state for this.\nUnfortunately the old vma based code must stay, because some architectures may\nnot be able to spare pte bits.  This makes vm_normal_page a little bit more\nugly than we would like, but the 2 cases are clearly seperate.\n\nSo introduce a pte_special pte state, and use it in mm/memory.c.  It is\ncurrently a noop for all architectures, so this doesn\u0027t actually result in any\ncompiled code changes to mm/memory.o.\n\nBTW:\nI haven\u0027t put vm_normal_page() into arch code as-per an earlier suggestion.\nThe reason is that, regardless of where vm_normal_page is actually\nimplemented, the *abstraction* is still exactly the same. Also, while it\ndepends on whether the architecture has pte_special or not, that is the\nonly two possible cases, and it really isn\u0027t an arch specific function --\nthe role of the arch code should be to provide primitive functions and\naccessors with which to build the core code; pte_special does that. We do\nnot want architectures to know or care about vm_normal_page itself, and\nwe definitely don\u0027t want them being able to invent something new there\nout of sight of mm/ code. If we made vm_normal_page an arch function, then\nwe have to make vm_insert_mixed (next patch) an arch function too. So I\ndon\u0027t think moving it to arch code fundamentally improves any abstractions,\nwhile it does practically make the code more difficult to follow, for both\nmm and arch developers, and easier to misuse.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Carsten Otte \u003ccotte@de.ibm.com\u003e\nCc: Jared Hulbert \u003cjaredeh@gmail.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b379d790197cdf8a95fb67507d75a24ac0a1678d",
      "tree": "8ea36c9a0766aca3cfd69cd33aa8a5d2ca8dd2d4",
      "parents": [
        "214e471ff99064726b2d8af3aa0e24a73c775531"
      ],
      "author": {
        "name": "Jared Hulbert",
        "email": "jaredeh@gmail.com",
        "time": "Mon Apr 28 02:12:58 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:22 2008 -0700"
      },
      "message": "mm: introduce VM_MIXEDMAP\n\nThis series introduces some important infrastructure work.  The overall result\nis that:\n\n1. We now support XIP backed filesystems using memory that have no\n   struct page allocated to them. And patches 6 and 7 actually implement\n   this for s390.\n\n   This is pretty important in a number of cases. As far as I understand,\n   in the case of virtualisation (eg. s390), each guest may mount a\n   readonly copy of the same filesystem (eg. the distro). Currently,\n   guests need to allocate struct pages for this image. So if you have\n   100 guests, you already need to allocate more memory for the struct\n   pages than the size of the image. I think. (Carsten?)\n\n   For other (eg. embedded) systems, you may have a very large non-\n   volatile filesystem. If you have to have struct pages for this, then\n   your RAM consumption will go up proportionally to fs size. Even\n   though it is just a small proportion, the RAM can be much more costly\n   eg in terms of power, so every KB less that Linux uses makes it more\n   attractive to a lot of these guys.\n\n2. VM_MIXEDMAP allows us to support mappings where you actually do want\n   to refcount _some_ pages in the mapping, but not others, and support\n   COW on arbitrary (non-linear) mappings. Jared needs this for his NVRAM\n   filesystem in progress. Future iterations of this filesystem will\n   most likely want to migrate pages between pagecache and XIP backing,\n   which is where the requirement for mixed (some refcounted, some not)\n   comes from.\n\n3. pte_special also has a peripheral usage that I need for my lockless\n   get_user_pages patch. That was shown to speed up \"oltp\" on db2 by\n   10% on a 2 socket system, which is kind of significant because they\n   scrounge for months to try to find 0.1% improvement on these\n   workloads. I\u0027m hoping we might finally be faster than AIX on\n   pSeries with this :). My reference to lockless get_user_pages is not\n   meant to justify this patchset (which doesn\u0027t include lockless gup),\n   but just to show that pte_special is not some s390 specific thing that\n   should be hidden in arch code or xip code: I definitely want to use it\n   on at least x86 and powerpc as well.\n\nThis patch:\n\nIntroduce a new type of mapping, VM_MIXEDMAP.  This is unlike VM_PFNMAP in\nthat it can support COW mappings of arbitrary ranges including ranges without\nstruct page *and* ranges with a struct page that we actually want to refcount\n(PFNMAP can only support COW in those cases where the un-COW-ed translations\nare mapped linearly in the virtual address, and can only support non\nrefcounted ranges).\n\nVM_MIXEDMAP achieves this by refcounting all pfn_valid pages, and not\nrefcounting !pfn_valid pages (which is not an option for VM_PFNMAP, because it\nneeds to avoid refcounting pfn_valid pages eg.  for /dev/mem mappings).\n\nSigned-off-by: Jared Hulbert \u003cjaredeh@gmail.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Carsten Otte \u003ccotte@de.ibm.com\u003e\nCc: Jared Hulbert \u003cjaredeh@gmail.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c18ddd160d1fcd46d1131d9ad6c594dd8e9af99",
      "tree": "7307ba1ae4bdb99d1363eb59b1ebefcf5295c8ef",
      "parents": [
        "4d3d5b41a72b52555d43efbfc4ccde6ba6e5444f"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Apr 28 02:12:10 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:18 2008 -0700"
      },
      "message": "mm: remove nopage\n\nNothing in the tree uses nopage any more.  Remove support for it in the\ncore mm code and documentation (and a few stray references to it in\ncomments).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@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": "61469f1d51777fc3b6d8d70da8373ee77ee13349",
      "tree": "cdcde89af7b998c340414f305a2a723106770c17",
      "parents": [
        "6dbf6d3bb955d5a92005b6ecd6ffad2c5b95b963"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:04 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:14 2008 -0800"
      },
      "message": "memcg: when do_swap\u0027s do_wp_page fails\n\nDon\u0027t uncharge when do_swap_page\u0027s call to do_wp_page fails: the page which\nwas charged for is there in the pagetable, and will be correctly uncharged\nwhen that area is unmapped - it was only its COWing which failed.\n\nAnd while we\u0027re here, remove earlier XXX comment: yes, OR in do_wp_page\u0027s\nreturn value (maybe VM_FAULT_WRITE) with do_swap_page\u0027s there; but if it\nfails, mask out success bits, which might confuse some arches e.g.  sparc.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "6dbf6d3bb955d5a92005b6ecd6ffad2c5b95b963",
      "tree": "429960ea7e804a2454eb76271f4f58621a62e456",
      "parents": [
        "427d5416f317681498337ab19218d195edea02d6"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:04 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:14 2008 -0800"
      },
      "message": "memcg: page_cache_release not __free_page\n\nThere\u0027s nothing wrong with mem_cgroup_charge failure in do_wp_page and\ndo_anonymous page using __free_page, but it does look odd when nearby code\nuses page_cache_release: use that instead (while turning a blind eye to\nancient inconsistencies of page_cache_release versus put_page).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "664a1566df81b44f7e5e234d55e3bc8c6c0be211",
      "tree": "17eb4b827091279a60f60a36b34e0437ba804dc1",
      "parents": [
        "b9e222904ce92e1b277f2b85411d1eb6bfe27410",
        "f8d8406bcb58ff70e97b71c35ff5be90c54fc3d0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:23:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:23:19 2008 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86:\n  x86: cpa, fix out of date comment\n  KVM is not seen under X86 config with latest git (32 bit compile)\n  x86: cpa: ensure page alignment\n  x86: include proper prototypes for rodata_test\n  x86: fix gart_iommu_init()\n  x86: EFI set_memory_x()/set_memory_uc() fixes\n  x86: make dump_pagetable() static\n  x86: fix \"BUG: sleeping function called from invalid context\" in print_vma_addr()\n"
    },
    {
      "commit": "cf28b4863f9ee8f122e8ff3ac0d403e07ba9c6d9",
      "tree": "65c91f6911b34c32e517938289621ce0e7baeaf3",
      "parents": [
        "c32c2f63a9d6c953aaf168c0b2551da9734f76d2"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:38:44 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:09 2008 -0800"
      },
      "message": "d_path: Make d_path() use a struct path\n\nd_path() is used on a \u003cdentry,vfsmount\u003e pair.  Lets use a struct path to\nreflect this.\n\n[akpm@linux-foundation.org: fix build in mm/memory.c]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nAcked-by: Bryan Wu \u003cbryan.wu@analog.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8bff74afbdb4ad72bf6135c84289c47cf557892",
      "tree": "46b560c1f055a1fe7dbb9ad6b42b19f521e1ec27",
      "parents": [
        "e760e716d47b48caf98da348368fd41b4a9b9e7e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 13 20:21:06 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 14 23:30:19 2008 +0100"
      },
      "message": "x86: fix \"BUG: sleeping function called from invalid context\" in print_vma_addr()\n\nJiri Kosina reported the following deadlock scenario with\nshow_unhandled_signals enabled:\n\n [   68.379022] gnome-settings-[2941] trap int3 ip:3d2c840f34\n sp:7fff36f5d100 error:0\u003c3\u003eBUG: sleeping function called from invalid\n context at kernel/rwsem.c:21\n [   68.379039] in_atomic():1, irqs_disabled():0\n [   68.379044] no locks held by gnome-settings-/2941.\n [   68.379050] Pid: 2941, comm: gnome-settings- Not tainted 2.6.25-rc1 #30\n [   68.379054]\n [   68.379056] Call Trace:\n [   68.379061]  \u003c#DB\u003e  [\u003cffffffff81064883\u003e] ? __debug_show_held_locks+0x13/0x30\n [   68.379109]  [\u003cffffffff81036765\u003e] __might_sleep+0xe5/0x110\n [   68.379123]  [\u003cffffffff812f2240\u003e] down_read+0x20/0x70\n [   68.379137]  [\u003cffffffff8109cdca\u003e] print_vma_addr+0x3a/0x110\n [   68.379152]  [\u003cffffffff8100f435\u003e] do_trap+0xf5/0x170\n [   68.379168]  [\u003cffffffff8100f52b\u003e] do_int3+0x7b/0xe0\n [   68.379180]  [\u003cffffffff812f4a6f\u003e] int3+0x9f/0xd0\n [   68.379203]  \u003c\u003cEOE\u003e\u003e\n [   68.379229]  in libglib-2.0.so.0.1505.0[3d2c800000+dc000]\n\nand tracked it down to:\n\n  commit 03252919b79891063cf99145612360efbdf9500b\n  Author: Andi Kleen \u003cak@suse.de\u003e\n  Date:   Wed Jan 30 13:33:18 2008 +0100\n\n      x86: print which shared library/executable faulted in segfault etc. messages\n\nthe problem is that we call down_read() from an atomic context.\n\nSolve this by returning from print_vma_addr() if the preempt count is\nelevated. Update preempt_conditional_sti / preempt_conditional_cli to\nunconditionally lift the preempt count even on !CONFIG_PREEMPT.\n\nReported-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "900cf086fd2fbad07f72f4575449e0d0958f860f",
      "tree": "9d48ca4463111c074ea8688fd8041115387156e1",
      "parents": [
        "b1292b17dc03fcd90f3301974cea1b7c61371ba5"
      ],
      "author": {
        "name": "Jonathan Corbet",
        "email": "corbet@lwn.net",
        "time": "Mon Feb 11 16:17:33 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 11 20:44:44 2008 -0800"
      },
      "message": "Be more robust about bad arguments in get_user_pages()\n\nSo I spent a while pounding my head against my monitor trying to figure\nout the vmsplice() vulnerability - how could a failure to check for\n*read* access turn into a root exploit? It turns out that it\u0027s a buffer\noverflow problem which is made easy by the way get_user_pages() is\ncoded.\n\nIn particular, \"len\" is a signed int, and it is only checked at the\n*end* of a do {} while() loop.  So, if it is passed in as zero, the loop\nwill execute once and decrement len to -1.  At that point, the loop will\nproceed until the next invalid address is found; in the process, it will\nlikely overflow the pages array passed in to get_user_pages().\n\nI think that, if get_user_pages() has been asked to grab zero pages,\nthat\u0027s what it should do.  Thus this patch; it is, among other things,\nenough to block the (already fixed) root exploit and any others which\nmight be lurking in similar code.  I also think that the number of pages\nshould be unsigned, but changing the prototype of this function probably\nrequires some more careful review.\n\nSigned-off-by: Jonathan Corbet \u003ccorbet@lwn.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2f569afd9ced9ebec9a6eb3dbf6f83429be0a7b4",
      "tree": "23a31763887d9505e62e9d7cc8ec2fa4b86bd380",
      "parents": [
        "13214adf738abc92b0a00c0763fd3be79eebaa7c"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Feb 08 04:22:04 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:42 2008 -0800"
      },
      "message": "CONFIG_HIGHPTE vs. sub-page page tables.\n\nBackground: I\u0027ve implemented 1K/2K page tables for s390.  These sub-page\npage tables are required to properly support the s390 virtualization\ninstruction with KVM.  The SIE instruction requires that the page tables\nhave 256 page table entries (pte) followed by 256 page status table entries\n(pgste).  The pgstes are only required if the process is using the SIE\ninstruction.  The pgstes are updated by the hardware and by the hypervisor\nfor a number of reasons, one of them is dirty and reference bit tracking.\nTo avoid wasting memory the standard pte table allocation should return\n1K/2K (31/64 bit) and 2K/4K if the process is using SIE.\n\nProblem: Page size on s390 is 4K, page table size is 1K or 2K.  That means\nthe s390 version for pte_alloc_one cannot return a pointer to a struct\npage.  Trouble is that with the CONFIG_HIGHPTE feature on x86 pte_alloc_one\ncannot return a pointer to a pte either, since that would require more than\n32 bit for the return value of pte_alloc_one (and the pte * would not be\naccessible since its not kmapped).\n\nSolution: The only solution I found to this dilemma is a new typedef: a\npgtable_t.  For s390 pgtable_t will be a (pte *) - to be introduced with a\nlater patch.  For everybody else it will be a (struct page *).  The\nadditional problem with the initialization of the ptl lock and the\nNR_PAGETABLE accounting is solved with a constructor pgtable_page_ctor and\na destructor pgtable_page_dtor.  The page table allocation and free\nfunctions need to call these two whenever a page table page is allocated or\nfreed.  pmd_populate will get a pgtable_t instead of a struct page pointer.\n To get the pgtable_t back from a pmd entry that has been installed with\npmd_populate a new function pmd_pgtable is added.  It replaces the pmd_page\ncall in free_pte_range and apply_to_pte_range.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e1a1cd590e3fcb0d2e230128daf2337ea55387dc",
      "tree": "eb660ab340c657a1eb595b2d4d8e8b62783bf6fb",
      "parents": [
        "bed7161a519a2faef53e1bce1b47595e297c1d14"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:14:02 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "Memory controller: make charging gfp mask aware\n\nNick Piggin pointed out that swap cache and page cache addition routines\ncould be called from non GFP_KERNEL contexts.  This patch makes the\ncharging routine aware of the gfp context.  Charging might fail if the\ncgroup is over it\u0027s limit, in which case a suitable error is returned.\n\nThis patch was tested on a Powerpc box.  I am still looking at being able\nto test the path, through which allocations happen in non GFP_KERNEL\ncontexts.\n\n[kamezawa.hiroyu@jp.fujitsu.com: problem with ZONE_MOVABLE]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a9f3ccd24741b50200c3f33d62534c7271f3dfc",
      "tree": "066aabd8d2952299501f067a91cbfd6f47ee62f6",
      "parents": [
        "78fb74669e80883323391090e4d26d17fe29488f"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:13:53 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:18 2008 -0800"
      },
      "message": "Memory controller: memory accounting\n\nAdd the accounting hooks.  The accounting is carried out for RSS and Page\nCache (unmapped) pages.  There is now a common limit and accounting for both.\nThe RSS accounting is accounted at page_add_*_rmap() and page_remove_rmap()\ntime.  Page cache is accounted at add_to_page_cache(),\n__delete_from_page_cache().  Swap cache is also accounted for.\n\nEach page\u0027s page_cgroup is protected with the last bit of the\npage_cgroup pointer, this makes handling of race conditions involving\nsimultaneous mappings of a page easier.  A reference count is kept in the\npage_cgroup to deal with cases where a page might be unmapped from the RSS\nof all tasks, but still lives in the page cache.\n\nCredits go to Vaidyanathan Srinivasan for helping with reference counting work\nof the page cgroup.  Almost all of the page cache accounting code has help\nfrom Vaidyanathan Srinivasan.\n\n[hugh@veritas.com: fix swapoff breakage]\n[akpm@linux-foundation.org: fix locking]\nSigned-off-by: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: \u003cValdis.Kletnieks@vt.edu\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "32a932332c8bad842804842eaf9651ad6268e637",
      "tree": "58f187409029f089f788c5c35ad5c200b4a555af",
      "parents": [
        "4cc6028d4040f95cdb590a87db478b42b8be0508"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 06 22:39:44 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 06 22:39:44 2008 +0100"
      },
      "message": "brk randomization: introduce CONFIG_COMPAT_BRK\n\nbased on similar patch from: Pavel Machek \u003cpavel@ucw.cz\u003e\n\nIntroduce CONFIG_COMPAT_BRK. If disabled then the kernel is free\n(but not obliged to) randomize the brk area.\n\nHeap randomization breaks ancient binaries, so we keep COMPAT_BRK\nenabled by default.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0ed361dec36945f3116ee1338638ada9a8920905",
      "tree": "3e0fc6319ef49f6cac82e8203a8aa199302ab9c5",
      "parents": [
        "62e1c55300f306e06478f460a7eefba085206e0b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Feb 04 22:29:34 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "mm: fix PageUptodate data race\n\nAfter running SetPageUptodate, preceeding stores to the page contents to\nactually bring it uptodate may not be ordered with the store to set the\npage uptodate.\n\nTherefore, another CPU which checks PageUptodate is true, then reads the\npage contents can get stale data.\n\nFix this by having an smp_wmb before SetPageUptodate, and smp_rmb after\nPageUptodate.\n\nMany places that test PageUptodate, do so with the page locked, and this\nwould be enough to ensure memory ordering in those places if\nSetPageUptodate were only called while the page is locked.  Unfortunately\nthat is not always the case for some filesystems, but it could be an idea\nfor the future.\n\nAlso bring the handling of anonymous page uptodateness in line with that of\nfile backed page management, by marking anon pages as uptodate when they\n_are_ uptodate, rather than when our implementation requires that they be\nmarked as such.  Doing allows us to get rid of the smp_wmb\u0027s in the page\ncopying functions, which were especially added for anonymous pages for an\nanalogous memory ordering problem.  Both file and anonymous pages are\nhandled with the same barriers.\n\nFAQ:\nQ. Why not do this in flush_dcache_page?\nA. Firstly, flush_dcache_page handles only one side (the smb side) of the\nordering protocol; we\u0027d still need smp_rmb somewhere. Secondly, hiding away\nmemory barriers in a completely unrelated function is nasty; at least in the\nPageUptodate macros, they are located together with (half) the operations\ninvolved in the ordering. Thirdly, the smp_wmb is only required when first\nbringing the page uptodate, wheras flush_dcache_page should be called each time\nit is written to through the kernel mapping. It is logically the wrong place to\nput it.\n\nQ. Why does this increase my text size / reduce my performance / etc.\nA. Because it is adding the necessary instructions to eliminate the data-race.\n\nQ. Can it be improved?\nA. Yes, eg. if you were to create a rule that all SetPageUptodate operations\nrun under the page lock, we could avoid the smp_rmb places where PageUptodate\nis queried under the page lock. Requires audit of all filesystems and at least\nsome would need reworking. That\u0027s great you\u0027re interested, I\u0027m eagerly awaiting\nyour patches.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@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": "920c7a5d0c94b8ce740f1d76fa06422f2a95a757",
      "tree": "74ab4b9b5a6f4279b9b9d2a463c6700546ba0011",
      "parents": [
        "1e548deb5d1630ca14ba04da04e3b6b3766178c7"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Mon Feb 04 22:29:26 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "mm: remove fastcall from mm/\n\nfastcall is always defined to be empty, remove it\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Harvey Harrison \u003charvey.harrison@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": "5e5419734c8719cbc01af959ad9c0844002c0df5",
      "tree": "a075dca3f719946689efa0245464855cbf2a20ce",
      "parents": [
        "9f8f2172537de7af0b0fbd33502d18d52b1339bc"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Mon Feb 04 22:29:14 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "add mm argument to pte/pmd/pud/pgd_free\n\n(with Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e)\n\nThe pgd/pud/pmd/pte page table allocation functions get a mm_struct pointer as\nfirst argument.  The free functions do not get the mm_struct argument.  This\nis 1) asymmetrical and 2) to do mm related page table allocations the mm\nargument is needed on the free function as well.\n\n[kamalesh@linux.vnet.ibm.com: i386 fix]\n[akpm@linux-foundation.org: coding-syle fixes]\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Kamalesh Babulal \u003ckamalesh@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "61d5048f149572434daee0cce5e1374a8a7cf3e8",
      "tree": "97ac9c25bc44a58145a750a99887195df31cbe40",
      "parents": [
        "1b1b32f2c6f6bb32535d2da62075b51c980880eb"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Feb 04 22:28:56 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:16 2008 -0800"
      },
      "message": "clean up vmtruncate\n\nvmtruncate is a twisted maze of gotos, this patch cleans it up to have a\nproper if else for the two major cases of extending and truncating truncate\nand thus makes it a lot more readable while keeping exactly the same\nfunctinality.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "02098feaa42b2e0087fbbe6c6ab9a23e4653b16a",
      "tree": "494eaf13f204c9384d4316202fd76cd1b5d960ad",
      "parents": [
        "46017e954826ac59e91df76341a3f76b45467847"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:42 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "swapin needs gfp_mask for loop on tmpfs\n\nBuilding in a filesystem on a loop device on a tmpfs file can hang when\nswapping, the loop thread caught in that infamous throttle_vm_writeout.\n\nIn theory this is a long standing problem, which I\u0027ve either never seen in\npractice, or long ago suppressed the recollection, after discounting my load\nand my tmpfs size as unrealistically high.  But now, with the new aops, it has\nbecome easy to hang on one machine.\n\nLoop used to grab_cache_page before the old prepare_write to tmpfs, which\nseems to have been enough to free up some memory for any swapin needed; but\nthe new write_begin lets tmpfs find or allocate the page (much nicer, since\ngrab_cache_page missed tmpfs pages in swapcache).\n\nWhen allocating a fresh page, tmpfs respects loop\u0027s mapping_gfp_mask, which\nhas __GFP_IO|__GFP_FS stripped off, and throttle_vm_writeout is designed to\nbreak out when __GFP_IO or GFP_FS is unset; but when tmfps swaps in,\nread_swap_cache_async allocates with GFP_HIGHUSER_MOVABLE regardless of the\nmapping_gfp_mask - hence the hang.\n\nSo, pass gfp_mask down the line from shmem_getpage to shmem_swapin to\nswapin_readahead to read_swap_cache_async to add_to_swap_cache.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "46017e954826ac59e91df76341a3f76b45467847",
      "tree": "711a35e3936118665d0eac2afeef8758b4f4e95f",
      "parents": [
        "c4cc6d07b2f465fbf5efd99bbe772a49c515f3f2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:41 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "swapin_readahead: move and rearrange args\n\nswapin_readahead has never sat well in mm/memory.c: move it to mm/swap_state.c\nbeside its kindred read_swap_cache_async.  Why were its args in a different\norder?  rearrange them.  And since it was always followed by a\nread_swap_cache_async of the target page, fold that in and return struct\npage*.  Then CONFIG_SWAP\u003dn no longer needs valid_swaphandles and\nread_swap_cache_async stubs.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.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": "c4cc6d07b2f465fbf5efd99bbe772a49c515f3f2",
      "tree": "0aec353fce4ee6cd16e3051ecfdf55e8022aaa5a",
      "parents": [
        "75897d60a54ccee94253312107f941a83b5077cb"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:40 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "swapin_readahead: excise NUMA bogosity\n\nFor three years swapin_readahead has been cluttered with fanciful CONFIG_NUMA\ncode, advancing addr, and stepping on to the next vma at the boundary, to line\nup the mempolicy for each page allocation.\n\nIt _might_ be a good idea to allocate swap more according to vma layout; but\nthe fact is, that\u0027s not how we do it at all, 2.6 even less than 2.4: swap is\nallocated as needed for pages as they sink to the bottom of the inactive LRUs.\n Sometimes that may match vma layout, but not so often that it\u0027s worth going\nto these misleading vma-\u003evm_next lengths: rip all that out.\n\nOriginally I intended to retain the incrementation of addr, but correct its\ninitial value: valid_swaphandles generally supplies an offset below the target\naddr (this is readaround rather than readahead), but addr has not been\nadjusted accordingly, so in the interleave case it has usually been allocating\nthe target page from the \"wrong\" node (though that may not matter very much).\n\nBut look at the equivalent shmem_swapin code: either by oversight or by\ndesign, though it has all the apparatus for choosing a new mempolicy per page,\nit uses the same idx throughout, choosing the same mempolicy and interleave\nnode for each page of the cluster.\n\nWhich is actually a much better strategy: each node has its own LRUs and its\nown kswapd, so if you\u0027re betting on any particular relationship between swap\nand node, the best bet is that nearby swap entries belong to pages from the\nsame node - even when the mempolicy of the target page is to interleave.  And\nexamining a map of nodes corresponding to swap entries on a numa\u003dfake system\nbears this out.  (We could later tweak swap allocation to make it even more\nlikely, but this patch is merely about removing cruft.)\n\nSo, neither adjust nor increment addr in swapin_readahead, and then\nshmem_swapin can use it too; the pseudo-vma to pass policy need only be set up\nonce per cluster, and so few fields of pvma are used, let\u0027s skip the memset -\nfrom shmem_alloc_page also.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "48667e7a43c1a1e0ba743f93ae946f8cb34ff2f9",
      "tree": "b2fb79d16fbac46a859f8332cf95852b73839e07",
      "parents": [
        "eebd2aa355692afaf9906f62118620f1a1c19dbb"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:31 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:13 2008 -0800"
      },
      "message": "Move vmalloc_to_page() to mm/vmalloc.\n\nWe already have page table manipulation for vmalloc in vmalloc.c. Move the\nvmalloc_to_page() function there as well.\n\nMove the definitions for vmalloc related functions in mm.h to a newly created\nsection.  A better place would be vmalloc.h but mm.h is basic and may depend\non these functions.  An alternative would be to include vmalloc.h in mm.h\n(like done for vmstat.h).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "03252919b79891063cf99145612360efbdf9500b",
      "tree": "a80dc0c89448308d75d247446a5a04c84cb708a6",
      "parents": [
        "d3432896dae72ee97deb850ad7bbc30329d32c0d"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed Jan 30 13:33:18 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:33:18 2008 +0100"
      },
      "message": "x86: print which shared library/executable faulted in segfault etc. messages v3\n\nThey now look like:\n\nhal-resmgr[13791]: segfault at 3c rip 2b9c8caec182 rsp 7fff1e825d30 error 4 in libacl.so.1.1.0[2b9c8caea000+6000]\n\nThis makes it easier to pinpoint bugs to specific libraries.\n\nAnd printing the offset into a mapping also always allows to find the\ncorrect fault point in a library even with randomized mappings. Previously\nthere was no way to actually find the correct code address inside\nthe randomized mapping.\n\nRelies on earlier patch to shorten the printk formats.\n\nThey are often now longer than 80 characters, but I think that\u0027s worth it.\n\n[includes fix from Eric Dumazet to check d_path error value]\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "95c354fe9f7d6decc08a92aa26eb233ecc2155bf",
      "tree": "ec9267032ea875e84216cfb20acb2cfc7c62149f",
      "parents": [
        "a95d67f87e1a5f1b4429be3ba3bf7b4051657908"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Jan 30 13:31:20 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:31:20 2008 +0100"
      },
      "message": "spinlock: lockbreak cleanup\n\nThe break_lock data structure and code for spinlocks is quite nasty.\nNot only does it double the size of a spinlock but it changes locking to\na potentially less optimal trylock.\n\nPut all of that under CONFIG_GENERIC_LOCKBREAK, and introduce a\n__raw_spin_is_contended that uses the lock data itself to determine whether\nthere are waiters on the lock, to be used if CONFIG_GENERIC_LOCKBREAK is\nnot set.\n\nRename need_lockbreak to spin_needbreak, make it use spin_is_contended to\ndecouple it from the spinlock implementation, and make it typesafe (rwlocks\ndo not have any need_lockbreak sites -- why do they even get bloated up\nwith that break_lock then?).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "8f7b3d156d348b6766833cd4e272d0d19b501e64",
      "tree": "7569825ce2b5e95213d2b5abd2491f7b1667bdc2",
      "parents": [
        "667984d9e481e43a930a478c588dced98cb61fea"
      ],
      "author": {
        "name": "Anton Salikhmetov",
        "email": "salikhmetov@gmail.com",
        "time": "Wed Jan 23 02:21:18 2008 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jan 23 09:58:55 2008 -0800"
      },
      "message": "Update ctime and mtime for memory-mapped files\n\nUpdate ctime and mtime for memory-mapped files at a write access on\na present, read-only PTE, as well as at a write on a non-present PTE.\n\nSigned-off-by: Anton Salikhmetov \u003csalikhmetov@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9723198c219f3546982cb469e5aed26e68399055",
      "tree": "b8e195cb1ca1bdf143e4e564fdb43f09aadfd6f3",
      "parents": [
        "6b2d2cec1081a979e0efd6a1e9559e5a01a3c10e"
      ],
      "author": {
        "name": "Carsten Otte",
        "email": "cotte@de.ibm.com",
        "time": "Thu Jan 17 15:21:17 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jan 17 15:38:59 2008 -0800"
      },
      "message": "#ifdef very expensive debug check in page fault path\n\nThis patch puts #ifdef CONFIG_DEBUG_VM around a check in vm_normal_page\nthat verifies that a pfn is valid.  This patch increases performance of the\npage fault microbenchmark in lmbench by 13% and overall dbench performance\nby 7% on s390x.  pfn_valid() is an expensive operation on s390 that needs a\nhigh double digit amount of CPU cycles.  Nick Piggin suggested that\npfn_valid() involves an array lookup on systems with sparsemem, and\ntherefore is an expensive operation there too.\n\nThe check looks like a clear debug thing to me, it should never trigger on\nregular kernels.  And if a pte is created for an invalid pfn, we\u0027ll find\nout once the memory gets accessed later on anyway.  Please consider\ninclusion of this patch into mm.\n\nSigned-off-by: Carsten Otte \u003ccotte@de.ibm.com\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "20a1022d4ac5c53f0956006fd9e30cf4846d5e58",
      "tree": "460b50d2e58b23c55d5984e1a530ee76a312dda9",
      "parents": [
        "9c8d6381dc107dbc2bfdbfdcaefe0d42e5b5b362"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Nov 14 17:00:33 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:44 2007 -0800"
      },
      "message": "Swap delay accounting, include lock_page() delays\n\nThe delay incurred in lock_page() should also be accounted in swap delay\naccounting\n\nReported-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b23dbe8173c212d6a326e35347b038705603d39",
      "tree": "a971d3cbab8911e7cbd5bec66f50d093f3f45976",
      "parents": [
        "19cd7537bdae6685c31677a01e08850612ba87f6"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Wed Nov 14 16:59:33 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:39 2007 -0800"
      },
      "message": "hugetlb: follow_hugetlb_page() for write access\n\nWhen calling get_user_pages(), a write flag is passed in by the caller to\nindicate if write access is required on the faulted-in pages.  Currently,\nfollow_hugetlb_page() ignores this flag and always faults pages for\nread-only access.  This can cause data corruption because a device driver\nthat calls get_user_pages() with write set will not expect COW faults to\noccur on the returned pages.\n\nThis patch passes the write flag down to follow_hugetlb_page() and makes\nsure hugetlb_fault() is called with the right write_access parameter.\n\n[ezk@cs.sunysb.edu: build fix]\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nReviewed-by: Ken Chen \u003ckenchen@google.com\u003e\nCc: David Gibson \u003chermes@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "02c3530da6b926b31f89ba589da72eca49557edd",
      "tree": "51e2e041fb2872819efc214b3818946be57c17c5",
      "parents": [
        "9b56fdb458b014bdda974b43a3e59721032898bb"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri Nov 02 16:43:28 2007 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Nov 05 21:53:39 2007 +1100"
      },
      "message": "unexport access_process_vm\n\nThis patch removes the no longer used EXPORT_SYMBOL_GPL(access_process_vm).\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "183ff22bb6bd8188c904ebfb479656ae52230b72",
      "tree": "425207fc9cdca03df64ee8241ba764c75db4d8d1",
      "parents": [
        "676b1855de0a18100b3c340084eb8ef72bde4fb1"
      ],
      "author": {
        "name": "Simon Arlott",
        "email": "simon@fire.lp0.eux",
        "time": "Sat Oct 20 01:27:18 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sat Oct 20 01:27:18 2007 +0200"
      },
      "message": "spelling fixes: mm/\n\nSpelling fixes in mm/.\n\nSigned-off-by: Simon Arlott \u003csimon@fire.lp0.eu\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "1c7037db50ebecf3d5cfbf7082daa5d97d900fef",
      "tree": "1843c417160b79c3f79a54d546ddcf5ccdb1b44b",
      "parents": [
        "22124c9999f00340b062fff740db30187bf18454"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Thu Oct 18 23:39:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:34 2007 -0700"
      },
      "message": "remove unused flush_tlb_pgtables\n\nNobody uses flush_tlb_pgtables anymore, this patch removes all remaining\ntraces of it from all archs.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "954ffcb35f5aca428661d29b96c4eee82b3c19cd",
      "tree": "2dd8aaf26a8ae81b461b6d5d824ae8744690e483",
      "parents": [
        "97ee052461446526e1de7236497e6f1b1ffedf8c"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Oct 16 01:25:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:59 2007 -0700"
      },
      "message": "flush icache before set_pte() on ia64: flush icache at set_pte\n\nCurrent ia64 kernel flushes icache by lazy_mmu_prot_update() *after*\nset_pte().  This is too late.  This patch removes lazy_mmu_prot_update and\nadd modfied set_pte() for flushing if necessary.\n\nThis patch flush icache of a page when\n\tnew pte has exec bit.\n\t\u0026\u0026 new pte has present bit\n\t\u0026\u0026 new pte is user\u0027s page.\n\t\u0026\u0026 (old *ptep is not present\n            || new pte\u0027s pfn is not same to old *ptep\u0027s ptn)\n\t\u0026\u0026 new pte\u0027s page has no Pg_arch_1 bit.\n\t   Pg_arch_1 is set when a page is cache consistent.\n\nI think this condition checks are much easier to understand than considering\n\"Where sync_icache_dcache() should be inserted ?\".\n\npte_user() for ia64 was removed by http://lkml.org/lkml/2007/6/12/67 as\nclean-up. So, I added it again.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0da7e01f5f37f441cccd7c8c0586e06db0981907",
      "tree": "3d43edc4166667948415de84254bd60cfb457734",
      "parents": [
        "2408c55037c3f7d51a8a100025c47595e71b838c"
      ],
      "author": {
        "name": "Dean Nelson",
        "email": "dcn@sgi.com",
        "time": "Tue Oct 16 01:24:45 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:53 2007 -0700"
      },
      "message": "calculation of pgoff in do_linear_fault() uses mixed units\n\nThe calculation of pgoff in do_linear_fault() should use PAGE_SHIFT and not\nPAGE_CACHE_SHIFT since vma-\u003evm_pgoff is in units of PAGE_SIZE and not\nPAGE_CACHE_SIZE.  At the moment linux/pagemap.h has PAGE_CACHE_SHIFT\ndefined as PAGE_SHIFT, but should that ever change this calculation would\nbreak.\n\nSigned-off-by: Dean Nelson \u003cdcn@sgi.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@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": "557ed1fa2620dc119adb86b34c614e152a629a80",
      "tree": "d00b31a7f197583c2bd8fffa1fd135fbbb5d6abc",
      "parents": [
        "aadb4bc4a1f9108c1d0fbd121827c936c2ed4217"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:24:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:53 2007 -0700"
      },
      "message": "remove ZERO_PAGE\n\nThe commit b5810039a54e5babf428e9a1e89fc1940fabff11 contains the note\n\n  A last caveat: the ZERO_PAGE is now refcounted and managed with rmap\n  (and thus mapcounted and count towards shared rss).  These writes to\n  the struct page could cause excessive cacheline bouncing on big\n  systems.  There are a number of ways this could be addressed if it is\n  an issue.\n\nAnd indeed this cacheline bouncing has shown up on large SGI systems.\nThere was a situation where an Altix system was essentially livelocked\ntearing down ZERO_PAGE pagetables when an HPC app aborted during startup.\nThis situation can be avoided in userspace, but it does highlight the\npotential scalability problem with refcounting ZERO_PAGE, and corner\ncases where it can really hurt (we don\u0027t want the system to livelock!).\n\nThere are several broad ways to fix this problem:\n1. add back some special casing to avoid refcounting ZERO_PAGE\n2. per-node or per-cpu ZERO_PAGES\n3. remove the ZERO_PAGE completely\n\nI will argue for 3. The others should also fix the problem, but they\nresult in more complex code than does 3, with little or no real benefit\nthat I can see.\n\nWhy? Inserting a ZERO_PAGE for anonymous read faults appears to be a\nfalse optimisation: if an application is performance critical, it would\nnot be doing many read faults of new memory, or at least it could be\nexpected to write to that memory soon afterwards. If cache or memory use\nis critical, it should not be working with a significant number of\nZERO_PAGEs anyway (a more compact representation of zeroes should be\nused).\n\nAs a sanity check -- mesuring on my desktop system, there are never many\nmappings to the ZERO_PAGE (eg. 2 or 3), thus memory usage here should not\nincrease much without it.\n\nWhen running a make -j4 kernel compile on my dual core system, there are\nabout 1,000 mappings to the ZERO_PAGE created per second, but about 1,000\nZERO_PAGE COW faults per second (less than 1 ZERO_PAGE mapping per second\nis torn down without being COWed). So removing ZERO_PAGE will save 1,000\npage faults per second when running kbuild, while keeping it only saves\nless than 1 page clearing operation per second. 1 page clear is cheaper\nthan a thousand faults, presumably, so there isn\u0027t an obvious loss.\n\nNeither the logical argument nor these basic tests give a guarantee of no\nregressions. However, this is a reasonable opportunity to try to remove\nthe ZERO_PAGE from the pagefault path. If it is found to cause regressions,\nwe can reintroduce it and just avoid refcounting it.\n\nThe /dev/zero ZERO_PAGE usage and TLB tricks also get nuked.  I don\u0027t see\nmuch use to them except on benchmarks.  All other users of ZERO_PAGE are\nconverted just to use ZERO_PAGE(0) for simplicity. We can look at\nreplacing them all and maybe ripping out ZERO_PAGE completely when we are\nmore satisfied with this solution.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus \"snif\" Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a200ee182a016752464a12cb2e8762e48254bb09",
      "tree": "7b273f002625a4c368f7b20b144990f7f4f81df9",
      "parents": [
        "3eb215de26e6e94bf5fed9cb77230c383b30e53b"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Mon Oct 08 18:54:37 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 08 12:58:14 2007 -0700"
      },
      "message": "mm: set_page_dirty_balance() vs -\u003epage_mkwrite()\n\nAll the current page_mkwrite() implementations also set the page dirty. Which\nresults in the set_page_dirty_balance() call to _not_ call balance, because the\npage is already found dirty.\n\nThis allows us to dirty a _lot_ of pages without ever hitting\nbalance_dirty_pages().  Not good (tm).\n\nForce a balance call if -\u003epage_mkwrite() was successful.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "16abfa086096895d438b19198e408ee96da7b508",
      "tree": "1d82091f35f069d7b2a7636b5f488987671bdade",
      "parents": [
        "804b3f9a16e446cb023417faec58b6506c834052"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Thu Oct 04 16:56:06 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Oct 04 10:13:09 2007 -0700"
      },
      "message": "Fix sys_remap_file_pages BUG at highmem.c:15!\n\nGurudas Pai reports kernel BUG at arch/i386/mm/highmem.c:15! below\nsys_remap_file_pages, while running Oracle database test on x86 in 6GB\nRAM: kunmap thinks we\u0027re in_interrupt because the preempt count has\nwrapped.\n\nThat\u0027s because __do_fault expected to unmap page_table, but one of its\ntwo callers do_nonlinear_fault already unmapped it: let do_linear_fault\nunmap it first too, and then there\u0027s no need to pass the page_table arg\ndown.\n\nWhy have we been so slow to notice this? Probably through forgetting\nthat the mapping_cap_account_dirty test means that sys_remap_file_pages\nnowadays only goes the full nonlinear vma route on a few memory-backed\nfilesystems like ramfs, tmpfs and hugetlbfs.\n\n[ It also depends on CONFIG_HIGHPTE, so it becomes even harder to\n  trigger in practice. Many who have need of large memory have probably\n  migrated to x86-64..\n\n  Problem introduced by commit d0217ac04ca6591841e5665f518e38064f4e65bd\n  (\"mm: fault feedback #1\")                -- Linus ]\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: gurudas pai \u003cgurudas.pai@oracle.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "41f9dc5c871600f53c8912b2975971d2a11c1c25",
      "tree": "c87833f1e6ffd73bc99ad7c83fffbd3cd47a64ca",
      "parents": [
        "61d488da9bad8d1511d18291006bd2dd728f173d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Jul 21 04:37:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Jul 21 17:49:16 2007 -0700"
      },
      "message": "remove handle_mm_fault export\n\nNow that arch/powerpc/platforms/cell/spufs/fault.c is always built in\nthe kernel there is no need to export handle_mm_fault anymore.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5992b6dac0d23a2b51a1ccbaf8f1a2e62097b12b",
      "tree": "47b059a9f22d6d0111c669d808617aa73a709259",
      "parents": [
        "57deb52622f3700d154e32662f36cd5f4053f6ed"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 19 01:49:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:52 2007 -0700"
      },
      "message": "lguest: export symbols for lguest as a module\n\nlguest does some fairly lowlevel things to support a host, which\nnormal modules don\u0027t need:\n\nmath_state_restore:\n\tWhen the guest triggers a Device Not Available fault, we need\n\tto be able to restore the FPU\n\n__put_task_struct:\n\tWe need to hold a reference to another task for inter-guest\n\tI/O, and put_task_struct() is an inline function which calls\n\t__put_task_struct.\n\naccess_process_vm:\n\tWe need to access another task for inter-guest I/O.\n\nmap_vm_area \u0026 __get_vm_area:\n\tWe need to map the switcher shim (ie. monitor) at 0xFFC01000.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "79352894b28550ee0eee919149f57626ec1b3572",
      "tree": "849e6aa148c69b9df3920199255ca14792eeffa2",
      "parents": [
        "83c54070ee1a2d05c89793884bea1a03f2851ed4"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:47:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: fix clear_page_dirty_for_io vs fault race\n\nFix msync data loss and (less importantly) dirty page accounting\ninaccuracies due to the race remaining in clear_page_dirty_for_io().\n\nThe deleted comment explains what the race was, and the added comments\nexplain how it is fixed.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83c54070ee1a2d05c89793884bea1a03f2851ed4",
      "tree": "dc732f5a9b93fb7004ed23f551bd98b77cc580e0",
      "parents": [
        "d0217ac04ca6591841e5665f518e38064f4e65bd"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:47:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: fault feedback #2\n\nThis patch completes Linus\u0027s wish that the fault return codes be made into\nbit flags, which I agree makes everything nicer.  This requires requires\nall handle_mm_fault callers to be modified (possibly the modifications\nshould go further and do things like fault accounting in handle_mm_fault --\nhowever that would be for another patch).\n\n[akpm@linux-foundation.org: fix alpha build]\n[akpm@linux-foundation.org: fix s390 build]\n[akpm@linux-foundation.org: fix sparc build]\n[akpm@linux-foundation.org: fix sparc64 build]\n[akpm@linux-foundation.org: fix ia64 build]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ian Molton \u003cspyro@f2s.com\u003e\nCc: Bryan Wu \u003cbryan.wu@analog.com\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Greg Ungerer \u003cgerg@uclinux.org\u003e\nCc: Matthew Wilcox \u003cwilly@debian.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Kazumoto Kojima \u003ckkojima@rr.iij4u.or.jp\u003e\nCc: Richard Curnow \u003crc@rc0.org.uk\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nCc: Miles Bader \u003cuclinux-v850@lsi.nec.co.jp\u003e\nCc: Chris Zankel \u003cchris@zankel.net\u003e\nAcked-by: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nAcked-by: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nAcked-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nAcked-by: Andi Kleen \u003cak@muc.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n[ Still apparently needs some ARM and PPC loving - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0217ac04ca6591841e5665f518e38064f4e65bd",
      "tree": "d3309094bb734d34773f97d642593e298a5cfcfc",
      "parents": [
        "ed2f2f9b3ff8debdf512f7687b232c3c1d7d60d7"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:47:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: fault feedback #1\n\nChange -\u003efault prototype.  We now return an int, which contains\nVM_FAULT_xxx code in the low byte, and FAULT_RET_xxx code in the next byte.\n FAULT_RET_ code tells the VM whether a page was found, whether it has been\nlocked, and potentially other things.  This is not quite the way he wanted\nit yet, but that\u0027s changed in the next patch (which requires changes to\narch code).\n\nThis means we no longer set VM_CAN_INVALIDATE in the vma in order to say\nthat a page is locked which requires filemap_nopage to go away (because we\ncan no longer remain backward compatible without that flag), but we were\ngoing to do that anyway.\n\nstruct fault_data is renamed to struct vm_fault as Linus asked. address\nis now a void __user * that we should firmly encourage drivers not to use\nwithout really good reason.\n\nThe page is now returned via a page pointer in the vm_fault struct.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@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": "6967614761fd305b3414d9485d89dc2e0a407410",
      "tree": "498bd41e9cf8795535f597696dd2c834d79ffb44",
      "parents": [
        "54cb8821de07f2ffcd28c380ce9b93d5784b40d7"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Jul 19 01:47:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "ocfs2: release page lock before calling -\u003epage_mkwrite\n\n__do_fault() was calling -\u003epage_mkwrite() with the page lock held, which\nviolates the locking rules for that callback.  Release and retake the page\nlock around the callback to avoid deadlocking file systems which manually\ntake it.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54cb8821de07f2ffcd28c380ce9b93d5784b40d7",
      "tree": "1de676534963d96af42863b20191bc9f80060dea",
      "parents": [
        "d00806b183152af6d24f46f0c33f14162ca1262a"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:46:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: merge populate and nopage into fault (fixes nonlinear)\n\nNonlinear mappings are (AFAIKS) simply a virtual memory concept that encodes\nthe virtual address -\u003e file offset differently from linear mappings.\n\n-\u003epopulate is a layering violation because the filesystem/pagecache code\nshould need to know anything about the virtual memory mapping.  The hitch here\nis that the -\u003enopage handler didn\u0027t pass down enough information (ie.  pgoff).\n But it is more logical to pass pgoff rather than have the -\u003enopage function\ncalculate it itself anyway (because that\u0027s a similar layering violation).\n\nHaving the populate handler install the pte itself is likewise a nasty thing\nto be doing.\n\nThis patch introduces a new fault handler that replaces -\u003enopage and\n-\u003epopulate and (later) -\u003enopfn.  Most of the old mechanism is still in place\nso there is a lot of duplication and nice cleanups that can be removed if\neveryone switches over.\n\nThe rationale for doing this in the first place is that nonlinear mappings are\nsubject to the pagefault vs invalidate/truncate race too, and it seemed stupid\nto duplicate the synchronisation logic rather than just consolidate the two.\n\nAfter this patch, MAP_NONBLOCK no longer sets up ptes for pages present in\npagecache.  Seems like a fringe functionality anyway.\n\nNOPAGE_REFAULT is removed.  This should be implemented with -\u003efault, and no\nusers have hit mainline yet.\n\n[akpm@linux-foundation.org: cleanup]\n[randy.dunlap@oracle.com: doc. fixes for readahead]\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d00806b183152af6d24f46f0c33f14162ca1262a",
      "tree": "36f829cf13d5410374a3f00b56ec0b1f8dc3ce3c",
      "parents": [
        "589f1e81bde732dd0b1bc5d01b6bddd4bcb4527b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:46:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: fix fault vs invalidate race for linear mappings\n\nFix the race between invalidate_inode_pages and do_no_page.\n\nAndrea Arcangeli identified a subtle race between invalidation of pages from\npagecache with userspace mappings, and do_no_page.\n\nThe issue is that invalidation has to shoot down all mappings to the page,\nbefore it can be discarded from the pagecache.  Between shooting down ptes to\na particular page, and actually dropping the struct page from the pagecache,\ndo_no_page from any process might fault on that page and establish a new\nmapping to the page just before it gets discarded from the pagecache.\n\nThe most common case where such invalidation is used is in file truncation.\nThis case was catered for by doing a sort of open-coded seqlock between the\nfile\u0027s i_size, and its truncate_count.\n\nTruncation will decrease i_size, then increment truncate_count before\nunmapping userspace pages; do_no_page will read truncate_count, then find the\npage if it is within i_size, and then check truncate_count under the page\ntable lock and back out and retry if it had subsequently been changed (ptl\nwill serialise against unmapping, and ensure a potentially updated\ntruncate_count is actually visible).\n\nComplexity and documentation issues aside, the locking protocol fails in the\ncase where we would like to invalidate pagecache inside i_size.  do_no_page\ncan come in anytime and filemap_nopage is not aware of the invalidation in\nprogress (as it is when it is outside i_size).  The end result is that\ndangling (-\u003emapping \u003d\u003d NULL) pages that appear to be from a particular file\nmay be mapped into userspace with nonsense data.  Valid mappings to the same\nplace will see a different page.\n\nAndrea implemented two working fixes, one using a real seqlock, another using\na page-\u003eflags bit.  He also proposed using the page lock in do_no_page, but\nthat was initially considered too heavyweight.  However, it is not a global or\nper-file lock, and the page cacheline is modified in do_no_page to increment\n_count and _mapcount anyway, so a further modification should not be a large\nperformance hit.  Scalability is not an issue.\n\nThis patch implements this latter approach.  -\u003enopage implementations return\nwith the page locked if it is possible for their underlying file to be\ninvalidated (in that case, they must set a special vm_flags bit to indicate\nso).  do_no_page only unlocks the page after setting up the mapping\ncompletely.  invalidation is excluded because it holds the page lock during\ninvalidation of each page (and ensures that the page is not mapped while\nholding the lock).\n\nThis also allows significant simplifications in do_no_page, because we have\nthe page locked in the right place in the pagecache from the start.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@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": "769848c03895b63e5662eb7e4ec8c4866f7d0183",
      "tree": "8911c7c312c8b8b172795fa2874c8162e1d3d15a",
      "parents": [
        "a32ea1e1f925399e0d81ca3f7394a44a6dafa12c"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jul 17 04:03:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:22:59 2007 -0700"
      },
      "message": "Add __GFP_MOVABLE for callers to flag allocations from high memory that may be migrated\n\nIt is often known at allocation time whether a page may be migrated or not.\nThis patch adds a flag called __GFP_MOVABLE and a new mask called\nGFP_HIGH_MOVABLE.  Allocations using the __GFP_MOVABLE can be either migrated\nusing the page migration mechanism or reclaimed by syncing with backing\nstorage and discarding.\n\nAn API function very similar to alloc_zeroed_user_highpage() is added for\n__GFP_MOVABLE allocations called alloc_zeroed_user_highpage_movable().  The\nflags used by alloc_zeroed_user_highpage() are not changed because it would\nchange the semantics of an existing API.  After this patch is applied there\nare no in-kernel users of alloc_zeroed_user_highpage() so it probably should\nbe marked deprecated if this patch is merged.\n\nNote that this patch includes a minor cleanup to the use of __GFP_ZERO in\nshmem.c to keep all flag modifications to inode-\u003emapping in the\nshmem_dir_alloc() helper function.  This clean-up suggestion is courtesy of\nHugh Dickens.\n\nAdditional credit goes to Christoph Lameter and Linus Torvalds for shaping the\nconcept.  Credit to Hugh Dickens for catching issues with shmem swap vector\nand ramfs allocations.\n\n[akpm@linux-foundation.org: build fix]\n[hugh@veritas.com: __GFP_ZERO cleanup]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8f0accc8627043702e6ea2bb8b9aa3a171ef8393",
      "tree": "94aaf1cdf099c7e875231b1d9575727b8e14f7f2",
      "parents": [
        "45e98cdb6d365b34b7a2d849e4d8bdc264d8e6e4"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "jbeulich@novell.com",
        "time": "Sun Jul 15 23:38:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:36 2007 -0700"
      },
      "message": "kill vmalloc_earlyreserve\n\nThis symbol got orphaned quite a while ago.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "462e00cc7151ed91fba688594436c453c80efb5d",
      "tree": "bf648899ba65f9eb000e9c8163a61c1cb1be9bfe",
      "parents": [
        "b71636e29823c0602d908a2a62e94c9b57a97491"
      ],
      "author": {
        "name": "Ethan Solomita",
        "email": "solo@google.com",
        "time": "Sun Jul 15 23:38:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:36 2007 -0700"
      },
      "message": "oom: stop allocating user memory if TIF_MEMDIE is set\n\nget_user_pages() can try to allocate a nearly unlimited amount of memory on\nbehalf of a user process, even if that process has been OOM killed.  The\nOOM kill occurs upon return to user space via a SIGKILL, but\nget_user_pages() will try allocate all its memory before returning.  Change\nget_user_pages() to check for TIF_MEMDIE, and if set then return\nimmediately.\n\nSigned-off-by: Ethan Solomita \u003csolo@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": "68e116a3b57d09b220fe38712bebd956b6dbbbc6",
      "tree": "a60f42f4b34b0a6d9544441c808f0dc4c67312a7",
      "parents": [
        "31a5c6e4f25704f51f9a1373f0784034306d4cf1"
      ],
      "author": {
        "name": "Rolf Eike Beer",
        "email": "eike-kernel@sf-tec.de",
        "time": "Sun Jul 15 23:38:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:35 2007 -0700"
      },
      "message": "MM: use DIV_ROUND_UP() in mm/memory.c\n\nReplace a hand coded version of DIV_ROUND_UP().\n\nSigned-off-by: Rolf Eike Beer \u003ceike-kernel@sf-tec.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8dab5241d06bfc9ee141ea78c56cde5070d7460d",
      "tree": "dd9dc3c64c17862b169f4cbe5fd4a108d960c920",
      "parents": [
        "679ce0ace6b1a07043bc3b405a34ddccad808886"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sat Jun 16 10:16:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Jun 16 13:16:16 2007 -0700"
      },
      "message": "Rework ptep_set_access_flags and fix sun4c\n\nSome changes done a while ago to avoid pounding on ptep_set_access_flags and\nupdate_mmu_cache in some race situations break sun4c which requires\nupdate_mmu_cache() to always be called on minor faults.\n\nThis patch reworks ptep_set_access_flags() semantics, implementations and\ncallers so that it\u0027s now responsible for returning whether an update is\nnecessary or not (basically whether the PTE actually changed).  This allow\nfixing the sparc implementation to always return 1 on sun4c.\n\n[akpm@linux-foundation.org: fixes, cleanups]\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Mark Fortescue \u003cmark@mtfhpc.demon.co.uk\u003e\nAcked-by: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c97a9e10eaee328e6eea9f76acf7bacd7d48ef56",
      "tree": "f14bf796d087e130452a2e2457c75eb1eca27483",
      "parents": [
        "ea125892a17f43919c726777ed1e4929d41e7984"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed May 16 22:11:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:06 2007 -0700"
      },
      "message": "mm: more rmap checking\n\nRe-introduce rmap verification patches that Hugh removed when he removed\nPG_map_lock. PG_map_lock actually isn\u0027t needed to synchronise access to\nanonymous pages, because PG_locked and PTL together already do.\n\nThese checks were important in discovering and fixing a rare rmap corruption\nin SLES9.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9490991482a2091a828d997adbc088e24c310a4d",
      "tree": "dcdd9febee63e82cd792250a8a4c4dd8e6aab4be",
      "parents": [
        "a8127717cb24be7b8827a8d9e0ddbfde6b392146"
      ],
      "author": {
        "name": "Borislav Petkov",
        "email": "bbpetkov@yahoo.de",
        "time": "Sun May 06 14:49:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "Add unitialized_var() macro for suppressing gcc warnings\n\nIntroduce a macro for suppressing gcc from generating a warning about a\nprobable uninitialized state of a variable.\n\nExample:\n\n-\tspinlock_t *ptl;\n+\tspinlock_t *uninitialized_var(ptl);\n\nNot a happy solution, but those warnings are obnoxious.\n\n- Using the usual pointlessly-set-it-to-zero approach wastes several\n  bytes of text.\n\n- Using a macro means we can (hopefully) do something else if gcc changes\n  cause the `x \u003d x\u0027 hack to stop working\n\n- Using a macro means that people who are worried about hiding true bugs\n  can easily turn it off.\n\nSigned-off-by: Borislav Petkov \u003cbbpetkov@yahoo.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5f22df00a009e3f86301366c0ecddb63ebd22af9",
      "tree": "72f0ea3e114dbb6825fc7e73f828645d364ea520",
      "parents": [
        "d2ba27e8007b35d24764c0877ab2428e00a5c5ab"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sun May 06 14:49:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:51 2007 -0700"
      },
      "message": "mm: remove gcc workaround\n\nMinimum gcc version is 3.2 now.  However, with likely profiling, even\nmodern gcc versions cannot always eliminate the call.\n\nReplace the placeholder functions with the more conventional empty static\ninlines, which should be optimal for everyone.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@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": "aee16b3cee2746880e40945a9b5bff4f309cfbc4",
      "tree": "887faaebf5562dc1fac5e090140da04dc7e2a174",
      "parents": [
        "eb3a1e1145ca8f12372c7c96aa0702d86a9002a9"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Sun May 06 14:48:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:51 2007 -0700"
      },
      "message": "Add apply_to_page_range() which applies a function to a pte range\n\nAdd a new mm function apply_to_page_range() which applies a given function to\nevery pte in a given virtual address range in a given mm structure.  This is a\ngeneric alternative to cut-and-pasting the Linux idiomatic pagetable walking\ncode in every place that a sequence of PTEs must be accessed.\n\nAlthough this interface is intended to be useful in a wide range of\nsituations, it is currently used specifically by several Xen subsystems, for\nexample: to ensure that pagetables have been allocated for a virtual address\nrange, and to construct batched special pagetable update requests to map I/O\nmemory (in ioremap()).\n\n[akpm@linux-foundation.org: fix warning, unpleasantly]\nSigned-off-by: Ian Pratt \u003cian.pratt@xensource.com\u003e\nSigned-off-by: Christian Limpach \u003cChristian.Limpach@cl.cam.ac.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Matt Mackall \u003cmpm@waste.org\u003e\nAcked-by: 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": "22cd25ed31bbf849acaa06ab220dc4f526153f13",
      "tree": "bffc0fa86b3734d89afb3eccb19249663de34ce2",
      "parents": [
        "e0dc0d8f4a327d033bfb63d43f113d5f31d11b3c"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Mon Feb 12 00:51:38 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:27 2007 -0800"
      },
      "message": "[PATCH] Add NOPFN_REFAULT result from vm_ops-\u003enopfn()\n\nAdd a NOPFN_REFAULT return code for vm_ops-\u003enopfn() equivalent to\nNOPAGE_REFAULT for vmops-\u003enopage() indicating that the handler requests a\nre-execution of the faulting instruction\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Arnd Bergmann \u003carnd.bergmann@de.ibm.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e0dc0d8f4a327d033bfb63d43f113d5f31d11b3c",
      "tree": "7af435f3caacd18eef6e30577e61d62e0afbe4d2",
      "parents": [
        "2ca48ed5cc5935cbd2a6f5d14fecd4ddbbdb4315"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Feb 12 00:51:36 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:27 2007 -0800"
      },
      "message": "[PATCH] add vm_insert_pfn()\n\nAdd a vm_insert_pfn helper, so that -\u003efault handlers can have nopfn\nfunctionality by installing their own pte and returning NULL.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Arnd Bergmann \u003carnd.bergmann@de.ibm.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72fd4a35a824331d7a0f4168d7576502d95d34b3",
      "tree": "be27880bc36b7f62e8044a88b8744a35c5317714",
      "parents": [
        "262086cf5b5343c2b81c97b1c606058e921859df"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Sat Feb 10 01:45:59 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:32 2007 -0800"
      },
      "message": "[PATCH] Numerous fixes to kernel-doc info in source files.\n\nA variety of (mostly) innocuous fixes to the embedded kernel-doc content in\nsource files, including:\n\n  * make multi-line initial descriptions single line\n  * denote some function names, constants and structs as such\n  * change erroneous opening \u0027/*\u0027 to \u0027/**\u0027 in a few places\n  * reword some text for clarity\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nCc: \"Randy.Dunlap\" \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "daa88c8d214ca4ab2f1764b6e503cef4b3cde9b2",
      "tree": "f01848aa624796944b62dc67a41c7d1bdac6ac04",
      "parents": [
        "46626296314e5679c9aaca36979a50ac20692e0b"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Sat Feb 10 01:43:18 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:19 2007 -0800"
      },
      "message": "[PATCH] do not disturb page referenced state when unmapping memory range\n\nWhen kernel unmaps an address range, it needs to transfer PTE state into\npage struct.  Currently, kernel transfer access bit via\nmark_page_accessed().  The call to mark_page_accessed in the unmap path\ndoesn\u0027t look logically correct.\n\nAt unmap time, calling mark_page_accessed will causes page LRU state to be\nbumped up one step closer to more recently used state.  It is causing quite\na bit headache in a scenario when a process creates a shmem segment, touch\na whole bunch of pages, then unmaps it.  The unmapping takes a long time\nbecause mark_page_accessed() will start moving pages from inactive to\nactive list.\n\nI\u0027m not too much concerned with moving the page from one list to another in\nLRU.  Sooner or later it might be moved because of multiple mappings from\nvarious processes.  But it just doesn\u0027t look logical that when user asks a\nrange to be unmapped, it\u0027s his intention that the process is no longer\ninterested in these pages.  Moving those pages to active list (or bumping\nup a state towards more active) seems to be an over reaction.  It also\nprolongs unmapping latency which is the core issue I\u0027m trying to solve.\n\nAs suggested by Peter, we should still preserve the info on pte young\npages, but not more.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Ken Chen \u003ckenchen@google.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c3704ceb4ad055b489b143f4e37c57d128908012",
      "tree": "730892c9d4d9dbab03c77597e822a7cb79c9cd96",
      "parents": [
        "f05b6284ee5d3be51ebe22284fc4b25fc586f380"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Feb 10 01:43:00 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:17 2007 -0800"
      },
      "message": "[PATCH] page_mkwrite caller race fix\n\nAfter do_wp_page has tested page_mkwrite, it must release old_page after\nacquiring page table lock, not before: at some stage that ordering got\nreversed, leaving a (very unlikely) window in which old_page might be\ntruncated, freed, and reused in the same position.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f47aef55d9a18945fcdd7fd6bf01121ce973b91b",
      "tree": "69f5f6c1fd4ae27d18344ae4b33b5c7bd4b18699",
      "parents": [
        "e5b97dde514f9bd43f9e525451d0a863c4fc8a9a"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Fri Jan 26 00:56:49 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jan 26 13:50:58 2007 -0800"
      },
      "message": "[PATCH] i386 vDSO: use VM_ALWAYSDUMP\n\nThis patch fixes core dumps to include the vDSO vma, which is left out now.\nIt removes the special-case core writing macros, which were not doing the\nright thing for the vDSO vma anyway.  Instead, it uses VM_ALWAYSDUMP in the\nvma; there is no need for the fixmap page to be installed.  It handles the\nCONFIG_COMPAT_VDSO case by making elf_core_dump use the fake vma from\nget_gate_vma after real vmas in the same way the /proc/PID/maps code does.\n\nThis changes core dumps so they no longer include the non-PT_LOAD phdrs from\nthe vDSO.  I made the change to add them in the first place, but in turned out\nthat nothing ever wanted them there since the advent of NT_AUXV.  It\u0027s cleaner\nto leave them out, and just let the phdrs inside the vDSO image speak for\nthemselves.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b6558c4a2378af06f2beca6c8a3304e21d1cf135",
      "tree": "9d04e1d79305ec7df586001301fca8ce72e2a5c3",
      "parents": [
        "a1f3bb9ae4497a2ed3eac773fd7798ac33a0371f"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Fri Jan 26 00:56:47 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jan 26 13:50:58 2007 -0800"
      },
      "message": "[PATCH] Fix gate_vma.vm_flags\n\nThis patch fixes the initialization of gate_vma.vm_flags and\ngate_vma.vm_page_prot to reflect reality.  This makes the \"[vdso]\" line in\n/proc/PID/maps correctly show r-xp instead of ---p, when gate_vma is used\n(CONFIG_COMPAT_VDSO on i386).\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a6f36be32622730710b2fadacb6e2649defa4371",
      "tree": "09d0f3ebe839b76373ee5ed4674fe305ad9ac256",
      "parents": [
        "e47c222b22cd53c317a5573e1dc5f9e0cbd46380"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk@dyn-67.arm.linux.org.uk",
        "time": "Sat Dec 30 22:24:19 2006 +0000"
      },
      "committer": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Mon Jan 08 19:49:54 2007 +0000"
      },
      "message": "[ARM] pass vma for flush_anon_page()\n\nSince get_user_pages() may be used with processes other than the\ncurrent process and calls flush_anon_page(), flush_anon_page() has to\ncope in some way with non-current processes.\n\nIt may not be appropriate, or even desirable to flush a region of\nvirtual memory cache in the current process when that is different to\nthe process that we want the flush to occur for.\n\nTherefore, pass the vma into flush_anon_page() so that the architecture\ncan work out whether the \u0027vmaddr\u0027 is for the current process or not.\n\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\n"
    },
    {
      "commit": "7de6b8057976584e5a422574cae4dd21c677b4d4",
      "tree": "900bc533401715eec4e44b73e388a74f08b3f1a5",
      "parents": [
        "19900cdee29c812857ce938ab449e1053d516252"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Fri Dec 22 01:09:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 08:55:49 2006 -0800"
      },
      "message": "[PATCH] mm: more rmap debugging\n\nAdd more debugging in the rmap code in an attempt to locate to source of\nthe occasional \"mapcount went negative\" assertions.\n\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9de455b20705f36384a711d4a20bcf7ba1ab180b",
      "tree": "6eb3643514d12d06a69a5c889d612f66b68288e6",
      "parents": [
        "77fff4ae2b7bba6d66a8287d9ab948e2b6c16145"
      ],
      "author": {
        "name": "Atsushi Nemoto",
        "email": "anemo@mba.ocn.ne.jp",
        "time": "Tue Dec 12 17:14:55 2006 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:27:08 2006 -0800"
      },
      "message": "[PATCH] Pass vma argument to copy_user_highpage().\n\nTo allow a more effective copy_user_highpage() on certain architectures,\na vma argument is added to the function and cow_user_page() allowing\nthe implementation of these functions to check for the VM_EXEC bit.\n\nThe main part of this patch was originally written by Ralf Baechle;\nAtushi Nemoto did the the debugging.\n\nSigned-off-by: Atsushi Nemoto \u003canemo@mba.ocn.ne.jp\u003e\nSigned-off-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5fcf7bb73f66cc1c4ad90788b0f367c4d6852b75",
      "tree": "76854ba1babc308beaf8f19d299a5b32ab7fda30",
      "parents": [
        "347a00fb4ad2200f8f8331f8b366b1d84eff577d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sun Dec 10 02:18:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:55:39 2006 -0800"
      },
      "message": "[PATCH] read_zero_pagealigned() locking fix\n\nRamiro Voicu hits the BUG_ON(!pte_none(*pte)) in zeromap_pte_range: kernel\nbugzilla 7645.  Right: read_zero_pagealigned uses down_read of mmap_sem,\nbut another thread\u0027s racing read of /dev/zero, or a normal fault, can\neasily set that pte again, in between zap_page_range and zeromap_page_range\ngetting there.  It\u0027s been wrong ever since 2.4.3.\n\nThe simple fix is to use down_write instead, but that would serialize reads\nof /dev/zero more than at present: perhaps some app would be badly\naffected.  So instead let zeromap_page_range return the error instead of\nBUG_ON, and read_zero_pagealigned break to the slower clear_user loop in\nthat case - there\u0027s no need to optimize for it.\n\nUse -EEXIST for when a pte is found: BUG_ON in mmap_zero (the other user of\nzeromap_page_range), though it really isn\u0027t interesting there.  And since\nmmap_zero wants -EAGAIN for out-of-memory, the zeromaps better return that\nthan -ENOMEM.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Ramiro Voicu: \u003cRamiro.Voicu@cern.ch\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "045f147f3290395661b56b9231fc4d221e150963",
      "tree": "63df3be162913b044a7f88a03b45c59f438bbb19",
      "parents": [
        "a8f48a95619cbce8f85423480e7d0a1bf971a62b"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed Dec 06 20:40:15 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:44 2006 -0800"
      },
      "message": "[PATCH] remove EXPORT_UNUSED_SYMBOL\u0027ed symbols\n\nIn time for 2.6.20, we can get rid of this junk.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "098fe651f7e9d759d1117c78c1a642b9b3945922",
      "tree": "8688e367d04c8341e79d9da775dccb9dc7747509",
      "parents": [
        "cd54e7e54318d333227b13186f9a464bf1f68d27"
      ],
      "author": {
        "name": "Ashwin Chaugule",
        "email": "ashwin.chaugule@celunite.com",
        "time": "Wed Dec 06 20:31:54 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:21 2006 -0800"
      },
      "message": "[PATCH] grab swap token reordered\n\nMake sure the contention for the token happens _before_ any read-in and\nkicks the swap-token algo only when the VM is under pressure.\n\nSigned-off-by: Ashwin Chaugule \u003cashwin.chaugule@celunite.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c4ec7b0de4bc18ccb4380de638550984d9a65c25",
      "tree": "a6a3ac91b4865f436f26c387a28eae08c310f1a0",
      "parents": [
        "ca926e80dcfd18adaf7c4304935da4cc8ded8364"
      ],
      "author": {
        "name": "Dmitriy Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Thu Oct 19 23:29:08 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:43 2006 -0700"
      },
      "message": "[PATCH] mm: D-cache aliasing issue in cow_user_page\n\n--\u003d-\u003d-\u003d\n\n from mm/memory.c:\n  1434  static inline void cow_user_page(struct page *dst, struct page *src, unsigned long va)\n  1435  {\n  1436          /*\n  1437           * If the source page was a PFN mapping, we don\u0027t have\n  1438           * a \"struct page\" for it. We do a best-effort copy by\n  1439           * just copying from the original user address. If that\n  1440           * fails, we just zero-fill it. Live with it.\n  1441           */\n  1442          if (unlikely(!src)) {\n  1443                  void *kaddr \u003d kmap_atomic(dst, KM_USER0);\n  1444                  void __user *uaddr \u003d (void __user *)(va \u0026 PAGE_MASK);\n  1445\n  1446                  /*\n  1447                   * This really shouldn\u0027t fail, because the page is there\n  1448                   * in the page tables. But it might just be unreadable,\n  1449                   * in which case we just give up and fill the result with\n  1450                   * zeroes.\n  1451                   */\n  1452                  if (__copy_from_user_inatomic(kaddr, uaddr, PAGE_SIZE))\n  1453                          memset(kaddr, 0, PAGE_SIZE);\n  1454                  kunmap_atomic(kaddr, KM_USER0);\n  #### D-cache have to be flushed here.\n  #### It seems it is just forgotten.\n\n  1455                  return;\n  1456\n  1457          }\n  1458          copy_user_highpage(dst, src, va);\n  #### Ok here. flush_dcache_page() called from this func if arch need it\n  1459  }\n\nFollowing is the patch  fix this issue:\n\nSigned-off-by: Dmitriy Monakhov \u003cdmonakhov@openvz.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7f7bbbe50b8a28f4dfaa4cea939ddb50198c4a99",
      "tree": "6421bee762afd8f09c643e90860c4bdbe4dde93b",
      "parents": [
        "1ca4cb2418c04914e4661c059cf5b7b9262c645a"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Fri Oct 06 00:43:53 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 06 08:53:40 2006 -0700"
      },
      "message": "[PATCH] page fault retry with NOPAGE_REFAULT\n\nAdd a way for a no_page() handler to request a retry of the faulting\ninstruction.  It goes back to userland on page faults and just tries again\nin get_user_pages().  I added a cond_resched() in the loop in that later\ncase.\n\nThe problem I have with signal and spufs is an actual bug affecting apps and I\ndon\u0027t see other ways of fixing it.\n\nIn addition, we are having issues with infiniband and 64k pages (related to\nthe way the hypervisor deals with some HV cards) that will require us to muck\naround with the MMU from within the IB driver\u0027s no_page() (it\u0027s a pSeries\nspecific driver) and return to the caller the same way using NOPAGE_REFAULT.\n\nAnd to add to this, the graphics folks have been following a new approach of\nmemory management that involves transparently swapping objects between video\nram and main meory.  To do that, they need installing PTEs from a no_page()\nhandler as well and that also requires returning with NOPAGE_REFAULT.\n\n(For the later, they are currently using io_remap_pfn_range to install one PTE\nfrom no_page() which is a bit racy, we need to add a check for the PTE having\nalready been installed afer taking the lock, but that\u0027s ok, they are only at\nthe proof-of-concept stage.  I\u0027ll send a patch adding a \"clean\" function to do\nthat, we can use that from spufs too and get rid of the sparsemem hacks we do\nto create struct page for SPEs.  Basically, that provides a generic solution\nfor being able to have no_page() map hardware devices, which is something that\nI think sound driver folks have been asking for some time too).\n\nAll of these things depend on having the NOPAGE_REFAULT exit path from\nno_page() handlers.\n\nSigned-off-by: Benjamin Herrenchmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6606c3e0da5360799e07ae24b05080cc85c68e72",
      "tree": "5072acfc3b36e48ec84fe28805d160cbc9b28900",
      "parents": [
        "9888a1cae3f859db38b9604e3df1c02177161bb0"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Sat Sep 30 23:29:33 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:33 2006 -0700"
      },
      "message": "[PATCH] paravirt: lazy mmu mode hooks.patch\n\nImplement lazy MMU update hooks which are SMP safe for both direct and shadow\npage tables.  The idea is that PTE updates and page invalidations while in\nlazy mode can be batched into a single hypercall.  We use this in VMI for\nshadow page table synchronization, and it is a win.  It also can be used by\nPPC and for direct page tables on Xen.\n\nFor SMP, the enter / leave must happen under protection of the page table\nlocks for page tables which are being modified.  This is because otherwise,\nyou end up with stale state in the batched hypercall, which other CPUs can\nrace ahead of.  Doing this under the protection of the locks guarantees the\nsynchronization is correct, and also means that spurious faults which are\ngenerated during this window by remote CPUs are properly handled, as the page\nfault handler must re-check the PTE under protection of the same lock.\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9888a1cae3f859db38b9604e3df1c02177161bb0",
      "tree": "5954dc5e1a2dc1251a57a41aa15b7776a530f230",
      "parents": [
        "3dc907951446b9317b1887223caa4e083390de9f"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Sat Sep 30 23:29:31 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:33 2006 -0700"
      },
      "message": "[PATCH] paravirt: pte clear not present\n\nChange pte_clear_full to a more appropriately named pte_clear_not_present,\nallowing optimizations when not-present mapping changes need not be reflected\nin the hardware TLB for protected page table modes.  There is also another\ncase that can use it in the fremap code.\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3dc907951446b9317b1887223caa4e083390de9f",
      "tree": "addff9ee95e0caea5e895a1a674e49f38254fddd",
      "parents": [
        "bd4c8ce41a2e2f0c5bf54343ab54e8e09faec021"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Sat Sep 30 23:29:30 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:33 2006 -0700"
      },
      "message": "[PATCH] paravirt: remove read hazard from cow\n\nWe don\u0027t want to read PTEs directly like this after they have been modified,\nas a lazy MMU implementation of direct page tables may not have written the\nupdated PTE back to memory yet.\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4ce072f1faf29d24df4600f53db8cdd62d400a8f",
      "tree": "b56ac328eb4542d6a05b0d35aef95ed3834127d3",
      "parents": [
        "2dcea57ae19275451a756a2d5bf96b329487b0e0"
      ],
      "author": {
        "name": "Siddha, Suresh B",
        "email": "suresh.b.siddha@intel.com",
        "time": "Fri Sep 29 01:58:42 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:03 2006 -0700"
      },
      "message": "[PATCH] mm: fix a race condition under SMC + COW\n\nFailing context is a multi threaded process context and the failing\nsequence is as follows.\n\nOne thread T0 doing self modifying code on page X on processor P0 and\nanother thread T1 doing COW (breaking the COW setup as part of just\nhappened fork() in another thread T2) on the same page X on processor P1.\nT0 doing SMC can endup modifying the new page Y (allocated by the T1 doing\nCOW on P1) but because of different I/D TLB\u0027s, P0 ITLB will not see the new\nmapping till the flush TLB IPI from P1 is received.  During this interval,\nif T0 executes the code created by SMC it can result in an app error (as\nITLB still points to old page X and endup executing the content in page X\nrather than using the content in page Y).\n\nFix this issue by first clearing the PTE and flushing it, before updating\nit with new entry.\n\nHugh sayeth:\n\n  I was a bit sceptical, in the habit of thinking that Self Modifying Code\n  must look such issues itself: but I guess there\u0027s nothing it can do to avoid\n  this one.\n\n  Fair enough, what you\u0027re changing it to is pretty much what powerpc and\n  s390 were already doing, and is a more robust way of proceeding, consistent\n  with how ptes are set everywhere else.\n\n  The ptep_clear_flush is a bit heavy-handed (it\u0027s anxious to return the pte\n  that was atomically cleared), but we\u0027d have to wander through lots of arches\n  to get the right minimal behaviour.  It\u0027d also be nice to eliminate\n  ptep_establish completely, now only used to define other macros/inlines: it\n  always seemed obfuscation to me, what you\u0027ve got there now is clearer.\n  Let\u0027s put those cleanups on a TODO list.\n\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nAcked-by: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0ec76a110f432e98277e464b82ace8dd66571689",
      "tree": "3ed8de0ea6869fe17bec7689c493a2db02f73f4a",
      "parents": [
        "361f6ed1d00f666a1a7c33f3e9aaccb713f9b9e4"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Sep 27 01:50:15 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:14 2006 -0700"
      },
      "message": "[PATCH] NOMMU: Check that access_process_vm() has a valid target\n\nCheck that access_process_vm() is accessing a valid mapping in the target\nprocess.\n\nThis limits ptrace() accesses and accesses through /proc/\u003cpid\u003e/maps to only\nthose regions actually mapped by a program.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f4b81804a2d1ab341a4613089dc31ecce0800ed8",
      "tree": "fdad77a7c40790908546a74a9b5918400d01333d",
      "parents": [
        "5d2923436217ba8bd05c5ee157712a391891c382"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Wed Sep 27 01:50:10 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:13 2006 -0700"
      },
      "message": "[PATCH] do_no_pfn()\n\nImplement do_no_pfn() for handling mapping of memory without a struct page\nbacking it.  This avoids creating fake page table entries for regions which\nare not backed by real memory.\n\nThis feature is used by the MSPEC driver and other users, where it is\nhighly undesirable to have a struct page sitting behind the page (for\ninstance if the page is accessed in cached mode via the struct page in\nparallel to the the driver accessing it uncached, which can result in data\ncorruption on some architectures, such as ia64).\n\nThis version uses specific NOPFN_{SIGBUS,OOM} return values, rather than\nexpect all negative pfn values would be an error.  It also bugs on cow\nmappings as this would not work with the VM.\n\n[akpm@osdl.org: micro-optimise]\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bfa5bf6d6446f0028187a727f792fbc7934228ad",
      "tree": "bd996f39ec18a78ea72209204328e48ebf6170f2",
      "parents": [
        "7ff6f08295d90ab20d25200ef485ebb45b1b8d71"
      ],
      "author": {
        "name": "Rolf Eike Beer",
        "email": "eike-kernel@sf-tec.de",
        "time": "Mon Sep 25 23:31:22 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:47 2006 -0700"
      },
      "message": "[PATCH] Add kerneldocs for some functions in mm/memory.c\n\nThese functions are already documented quite well with long comments.  Now\nadd kerneldoc style header to make this turn up in everyones favorite doc\nformat.\n\nSigned-off-by: Rolf Eike Beer \u003ceike-kernel@sf-tec.de\u003e\nCc: \"Randy.Dunlap\" \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ee6a6457886a80415db209e87033b63f2b06558c",
      "tree": "227351bf31ccc6153879cc900c5d6a822832b645",
      "parents": [
        "e88dd6c11c5aef74d8b74a062767add53315533b"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Sep 25 23:31:00 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:44 2006 -0700"
      },
      "message": "[PATCH] mm: fixup do_wp_page()\n\nWrt. the recent modifications in do_wp_page() Hugh Dickins pointed out:\n\n  \"I now realize it\u0027s right to the first order (normal case) and to the\n   second order (ptrace poke), but not to the third order (ptrace poke\n   anon page here to be COWed - perhaps can\u0027t occur without intervening\n   mprotects).\"\n\nThis patch restores the old COW behaviour for anonymous pages.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "edc79b2a46ed854595e40edcf3f8b37f9f14aa3f",
      "tree": "c1120bebede9660ab00f9439aa7a84ab9434ac38",
      "parents": [
        "d08b3851da41d0ee60851f2c75b118e1f7a5fc89"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Sep 25 23:30:58 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:44 2006 -0700"
      },
      "message": "[PATCH] mm: balance dirty pages\n\nNow that we can detect writers of shared mappings, throttle them.  Avoids OOM\nby surprise.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d08b3851da41d0ee60851f2c75b118e1f7a5fc89",
      "tree": "a01f6930a1387e8f66607e2fe16c62bb7044353b",
      "parents": [
        "725d704ecaca4a43f067092c140d4f3271cf2856"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Sep 25 23:30:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:44 2006 -0700"
      },
      "message": "[PATCH] mm: tracking shared dirty pages\n\nTracking of dirty pages in shared writeable mmap()s.\n\nThe idea is simple: write protect clean shared writeable pages, catch the\nwrite-fault, make writeable and set dirty.  On page write-back clean all the\nPTE dirty bits and write protect them once again.\n\nThe implementation is a tad harder, mainly because the default\nbacking_dev_info capabilities were too loosely maintained.  Hence it is not\nenough to test the backing_dev_info for cap_account_dirty.\n\nThe current heuristic is as follows, a VMA is eligible when:\n - its shared writeable\n    (vm_flags \u0026 (VM_WRITE|VM_SHARED)) \u003d\u003d (VM_WRITE|VM_SHARED)\n - it is not a \u0027special\u0027 mapping\n    (vm_flags \u0026 (VM_PFNMAP|VM_INSERTPAGE)) \u003d\u003d 0\n - the backing_dev_info is cap_account_dirty\n    mapping_cap_account_dirty(vma-\u003evm_file-\u003ef_mapping)\n - f_op-\u003emmap() didn\u0027t change the default page protection\n\nPage from remap_pfn_range() are explicitly excluded because their COW\nsemantics are already horrid enough (see vm_normal_page() in do_wp_page()) and\nbecause they don\u0027t have a backing store anyway.\n\nmprotect() is taught about the new behaviour as well.  However it overrides\nthe last condition.\n\nCleaning the pages on write-back is done with page_mkclean() a new rmap call.\nIt can be called on any page, but is currently only implemented for mapped\npages, if the page is found the be of a VMA that accounts dirty pages it will\nalso wrprotect the PTE.\n\nFinally, in fs/buffers.c:try_to_free_buffers(); remove clear_page_dirty() from\nunder -\u003eprivate_lock.  This seems to be safe, since -\u003eprivate_lock is used to\nserialize access to the buffers, not the page itself.  This is needed because\nclear_page_dirty() will call into page_mkclean() and would thereby violate\nlocking order.\n\n[dhowells@redhat.com: Provide a page_mkclean() implementation for NOMMU]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0ff922452df86f3e9a2c6f705c4588ec62d096a7",
      "tree": "ac84041bfb63f12d0e2db733c46b2cd2438b4882",
      "parents": [
        "ca74e92b4698276b6696f15a801759f50944f387"
      ],
      "author": {
        "name": "Shailabh Nagar",
        "email": "nagar@watson.ibm.com",
        "time": "Fri Jul 14 00:24:37 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jul 14 21:53:56 2006 -0700"
      },
      "message": "[PATCH] per-task-delay-accounting: sync block I/O and swapin delay collection\n\nUnlike earlier iterations of the delay accounting patches, now delays are only\ncollected for the actual I/O waits rather than try and cover the delays seen\nin I/O submission paths.\n\nAccount separately for block I/O delays incurred as a result of swapin page\nfaults whose frequency can be affected by the task/process\u0027 rss limit.  Hence\nswapin delays can act as feedback for rss limit changes independent of I/O\npriority changes.\n\nSigned-off-by: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Peter Chubb \u003cpeterc@gelato.unsw.edu.au\u003e\nCc: Erich Focht \u003cefocht@ess.nec.de\u003e\nCc: Levent Serinol \u003clserinol@gmail.com\u003e\nCc: Jay Lan \u003cjlan@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c38c8db7225465c8d124f38b24d3024decc26bbd",
      "tree": "79a7e7a99e0d67ac015c4fad689cdefb55a5c10f",
      "parents": [
        "8757d5fa6b75e8ea906baf0309d49b980e7f9bc9"
      ],
      "author": {
        "name": "Anil Keshavamurthy",
        "email": "anil.s.keshavamurthy@intel.com",
        "time": "Fri Jul 14 00:23:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jul 14 21:53:51 2006 -0700"
      },
      "message": "[PATCH] ia64: race flushing icache in COW path\n\nThere is a race condition that showed up in a threaded JIT environment.\nThe situation is that a process with a JIT code page forks, so the page is\nmarked read-only, then some threads are created in the child.  One of the\nthreads attempts to add a new code block to the JIT page, so a\ncopy-on-write fault is taken, and the kernel allocates a new page, copies\nthe data, installs the new pte, and then calls lazy_mmu_prot_update() to\nflush caches to make sure that the icache and dcache are in sync.\nUnfortunately, the other thread runs right after the new pte is installed,\nbut before the caches have been flushed.  It tries to execute some old JIT\ncode that was already in this page, but it sees some garbage in the i-cache\nfrom the previous users of the new physical page.\n\nFix: we must make the caches consistent before installing the pte.  This is\nan ia64 only fix because lazy_mmu_prot_update() is a no-op on all other\narchitectures.\n\nSigned-off-by: Anil Keshavamurthy \u003canil.s.keshavamurthy@intel.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "26fc52367af3774b123334bca409159ce37d2857",
      "tree": "6b3ecdc0a1bfa6691eebe76c3724d716c6580047",
      "parents": [
        "6d46cc6b9b04dc28a9c5db62db791aeec8ab2ea5"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Mon Jul 10 04:44:22 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 10 13:24:17 2006 -0700"
      },
      "message": "[PATCH] mm/memory.c: EXPORT_UNUSED_SYMBOL\n\nThis patch marks an unused export as EXPORT_UNUSED_SYMBOL.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f20dc5f7c1adf1c4b68b7672d6f2002cb824e636",
      "tree": "ffd31717399ff783da29444f3446a63285f22b14",
      "parents": [
        "eb4542b98c81e22e08587b747b21986a45360999"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:25:08 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:07 2006 -0700"
      },
      "message": "[PATCH] lockdep: annotate mm\n\nTeach special (recursive) locking code to the lock validator.  Has no effect\non non-lockdep kernels.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f8891e5e1f93a128c3900f82035e8541357896a7",
      "tree": "97b078ac97970962b17c85d39fd64cb48dc01168",
      "parents": [
        "ca889e6c45e0b112cb2ca9d35afc66297519b5d5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:45 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:36 2006 -0700"
      },
      "message": "[PATCH] Light weight event counters\n\nThe remaining counters in page_state after the zoned VM counter patches\nhave been applied are all just for show in /proc/vmstat.  They have no\nessential function for the VM.\n\nWe use a simple increment of per cpu variables.  In order to avoid the most\nsevere races we disable preempt.  Preempt does not prevent the race between\nan increment and an interrupt handler incrementing the same statistics\ncounter.  However, that race is exceedingly rare, we may only loose one\nincrement or so and there is no requirement (at least not in kernel) that\nthe vm event counters have to be accurate.\n\nIn the non preempt case this results in a simple increment for each\ncounter.  For many architectures this will be reduced by the compiler to a\nsingle instruction.  This single instruction is atomic for i386 and x86_64.\n And therefore even the rare race condition in an interrupt is avoided for\nboth architectures in most cases.\n\nThe patchset also adds an off switch for embedded systems that allows a\nbuilding of linux kernels without these counters.\n\nThe implementation of these counters is through inline code that hopefully\nresults in only a single instruction increment instruction being emitted\n(i386, x86_64) or in the increment being hidden though instruction\nconcurrency (EPIC architectures such as ia64 can get that done).\n\nBenefits:\n- VM event counter operations usually reduce to a single inline instruction\n  on i386 and x86_64.\n- No interrupt disable, only preempt disable for the preempt case.\n  Preempt disable can also be avoided by moving the counter into a spinlock.\n- Handling is similar to zoned VM counters.\n- Simple and easily extendable.\n- Can be omitted to reduce memory use for embedded use.\n\nReferences:\n\nRFC http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d113512330605497\u0026w\u003d2\nRFC http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d114988082814934\u0026w\u003d2\nlocal_t http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d114991748606690\u0026w\u003d2\nV2 http://marc.theaimsgroup.com/?t\u003d115014808400007\u0026r\u003d1\u0026w\u003d2\nV3 http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d115024767022346\u0026w\u003d2\nV4 http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d115047968808926\u0026w\u003d2\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "df849a1529c106f7460e51479ca78fe07b07dc8c",
      "tree": "f0e52e4720160aa7540a57715c247dce44584cbc",
      "parents": [
        "9a865ffa34b6117a5e0b67640a084d8c2e198c93"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:38 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:35 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: conversion of nr_pagetables to per zone counter\n\nConversion of nr_page_table_pages to a per zone counter\n\n[akpm@osdl.org: bugfix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9637a5efd4fbe36164c5ce7f6a0ee68b2bf22b7f",
      "tree": "38b86e3e2151e78f952076e36bee4fd7d77e3baf",
      "parents": [
        "bd96b9eb7cfd6ab24ba244360a09980a720874d2"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 23 02:03:43 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:51 2006 -0700"
      },
      "message": "[PATCH] add page_mkwrite() vm_operations method\n\nAdd a new VMA operation to notify a filesystem or other driver about the\nMMU generating a fault because userspace attempted to write to a page\nmapped through a read-only PTE.\n\nThis facility permits the filesystem or driver to:\n\n (*) Implement storage allocation/reservation on attempted write, and so to\n     deal with problems such as ENOSPC more gracefully (perhaps by generating\n     SIGBUS).\n\n (*) Delay making the page writable until the contents have been written to a\n     backing cache. This is useful for NFS/AFS when using FS-Cache/CacheFS.\n     It permits the filesystem to have some guarantee about the state of the\n     cache.\n\n (*) Account and limit number of dirty pages. This is one piece of the puzzle\n     needed to make shared writable mapping work safely in FUSE.\n\nNeeded by cachefs (Or is it cachefiles?  Or fscache? \u003chead spins\u003e).\n\nAt least four other groups have stated an interest in it or a desire to use\nthe functionality it provides: FUSE, OCFS2, NTFS and JFFS2.  Also, things like\nEXT3 really ought to use it to deal with the case of shared-writable mmap\nencountering ENOSPC before we permit the page to be dirtied.\n\nFrom: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\n\n  get_user_pages(.write\u003d1, .force\u003d1) can generate COW hits on read-only\n  shared mappings, this patch traps those as mkpage_write candidates and fails\n  to handle them the old way.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0697212a411c1dae03c27845f2de2f3adb32c331",
      "tree": "4bedcdb27522f4a42c422e0a8af155501f43a69c",
      "parents": [
        "8351a6e4785218a2b03c142be92926baff95ba5c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 23 02:03:35 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:50 2006 -0700"
      },
      "message": "[PATCH] Swapless page migration: add R/W migration entries\n\nImplement read/write migration ptes\n\nWe take the upper two swapfiles for the two types of migration ptes and define\na series of macros in swapops.h.\n\nThe VM is modified to handle the migration entries.  migration entries can\nonly be encountered when the page they are pointing to is locked.  This limits\nthe number of places one has to fix.  We also check in copy_pte_range and in\nmprotect_pte_range() for migration ptes.\n\nWe check for migration ptes in do_swap_cache and call a function that will\nthen wait on the page lock.  This allows us to effectively stop all accesses\nto apge.\n\nMigration entries are created by try_to_unmap if called for migration and\nremoved by local functions in migrate.c\n\nFrom: Hugh Dickins \u003chugh@veritas.com\u003e\n\n  Several times while testing swapless page migration (I\u0027ve no NUMA, just\n  hacking it up to migrate recklessly while running load), I\u0027ve hit the\n  BUG_ON(!PageLocked(p)) in migration_entry_to_page.\n\n  This comes from an orphaned migration entry, unrelated to the current\n  correctly locked migration, but hit by remove_anon_migration_ptes as it\n  checks an address in each vma of the anon_vma list.\n\n  Such an orphan may be left behind if an earlier migration raced with fork:\n  copy_one_pte can duplicate a migration entry from parent to child, after\n  remove_anon_migration_ptes has checked the child vma, but before it has\n  removed it from the parent vma.  (If the process were later to fault on this\n  orphaned entry, it would hit the same BUG from migration_entry_wait.)\n\n  This could be fixed by locking anon_vma in copy_one_pte, but we\u0027d rather\n  not.  There\u0027s no such problem with file pages, because vma_prio_tree_add\n  adds child vma after parent vma, and the page table locking at each end is\n  enough to serialize.  Follow that example with anon_vma: add new vmas to the\n  tail instead of the head.\n\n  (There\u0027s no corresponding problem when inserting migration entries,\n  because a missed pte will leave the page count and mapcount high, which is\n  allowed for.  And there\u0027s no corresponding problem when migrating via swap,\n  because a leftover swap entry will be correctly faulted.  But the swapless\n  method has no refcounting of its entries.)\n\nFrom: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n  pte_unmap_unlock() takes the pte pointer as an argument.\n\nFrom: Hugh Dickins \u003chugh@veritas.com\u003e\n\n  Several times while testing swapless page migration, gcc has tried to exec\n  a pointer instead of a string: smells like COW mappings are not being\n  properly write-protected on fork.\n\n  The protection in copy_one_pte looks very convincing, until at last you\n  realize that the second arg to make_migration_entry is a boolean \"write\",\n  and SWP_MIGRATION_READ is 30.\n\n  Anyway, it\u0027s better done like in change_pte_range, using\n  is_write_migration_entry and make_migration_entry_read.\n\nFrom: Hugh Dickins \u003chugh@veritas.com\u003e\n\n  Remove unnecessary obfuscation from sys_swapon\u0027s range check on swap type,\n  which blew up causing memory corruption once swapless migration made\n  MAX_SWAPFILES no longer 2 ^ MAX_SWAPFILES_SHIFT.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nFrom: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4da5eda0dca9730f59f391230304526ab4bffec7",
      "tree": "948701e336ec4ca2742b69f7197b89aa61df27d2",
      "parents": [
        "cb2b95e1c6b56e3d2369d3a5f4bc97f4fa180683"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 23 02:03:04 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:45 2006 -0700"
      },
      "message": "[PATCH] Page Migration: Make do_swap_page redo the fault\n\nIt is better to redo the complete fault if do_swap_page() finds that the\npage is not in PageSwapCache() because the page migration code may have\nreplaced the swap pte already with a pte pointing to valid memory.\n\ndo_swap_page() may interpret an invalid swap entry without this patch\nbecause we do not reload the pte if we are looping back.  The page\nmigration code may already have reused the swap entry referenced by our\nlocal swp_entry.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9b41046cd0ee0a57f849d6e1363f7933e363cca9",
      "tree": "246820e9493770e071cb92a48e7f72d8b9c90a98",
      "parents": [
        "68eef3b4791572ecb70249c7fb145bb3742dd899"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Fri Mar 31 02:30:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:53 2006 -0800"
      },
      "message": "[PATCH] Don\u0027t pass boot parameters to argv_init[]\n\nThe boot cmdline is parsed in parse_early_param() and\nparse_args(,unknown_bootoption).\n\nAnd __setup() is used in obsolete_checksetup().\n\n\tstart_kernel()\n\t\t-\u003e parse_args()\n\t\t\t-\u003e unknown_bootoption()\n\t\t\t\t-\u003e obsolete_checksetup()\n\nIf __setup()\u0027s callback (-\u003esetup_func()) returns 1 in\nobsolete_checksetup(), obsolete_checksetup() thinks a parameter was\nhandled.\n\nIf -\u003esetup_func() returns 0, obsolete_checksetup() tries other\n-\u003esetup_func().  If all -\u003esetup_func() that matched a parameter returns 0,\na parameter is seted to argv_init[].\n\nThen, when runing /sbin/init or init\u003dapp, argv_init[] is passed to the app.\nIf the app doesn\u0027t ignore those arguments, it will warning and exit.\n\nThis patch fixes a wrong usage of it, however fixes obvious one only.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9ae21d1bb376436285cd5346d3e4b3655d6dd1b9",
      "tree": "8f889770fae721da63bd378c1834a87e2eb1cfb5",
      "parents": [
        "f9b4192923fa6e38331e88214b1fe5fc21583fcc",
        "e9415777b1cd0eaf4d1d3d61772f0e6d5c2551ad"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 09:41:18 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 09:41:18 2006 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial:\n  drivers/char/ftape/lowlevel/fdc-io.c: Correct a comment\n  Kconfig help: MTD_JEDECPROBE already supports Intel\n  Remove ugly debugging stuff\n  do_mounts.c: Minor ROOT_DEV comment cleanup\n  BUG_ON() Conversion in drivers/s390/block/dasd_devmap.c\n  BUG_ON() Conversion in mm/mempool.c\n  BUG_ON() Conversion in mm/memory.c\n  BUG_ON() Conversion in kernel/fork.c\n  BUG_ON() Conversion in ipc/sem.c\n  BUG_ON() Conversion in fs/ext2/\n  BUG_ON() Conversion in fs/hfs/\n  BUG_ON() Conversion in fs/dcache.c\n  BUG_ON() Conversion in fs/buffer.c\n  BUG_ON() Conversion in input/serio/hp_sdc_mlc.c\n  BUG_ON() Conversion in md/dm-table.c\n  BUG_ON() Conversion in md/dm-path-selector.c\n  BUG_ON() Conversion in drivers/isdn\n  BUG_ON() Conversion in drivers/char\n  BUG_ON() Conversion in drivers/mtd/\n"
    },
    {
      "commit": "03beb07664d768db97bf454ae5c9581cd4737bb4",
      "tree": "b906c4db3a70627a58363193f3f843e7e2132ca1",
      "parents": [
        "64a07bd82ed526d813b64b0957543eef55bdf9c0"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@SteelEye.com",
        "time": "Sun Mar 26 01:36:57 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:56:53 2006 -0800"
      },
      "message": "[PATCH] Add API for flushing Anon pages\n\nCurrently, get_user_pages() returns fully coherent pages to the kernel for\nanything other than anonymous pages.  This is a problem for things like\nfuse and the SCSI generic ioctl SG_IO which can potentially wish to do DMA\nto anonymous pages passed in by users.\n\nThe fix is to add a new memory management API: flush_anon_page() which\nis used in get_user_pages() to make anonymous pages coherent.\n\nSigned-off-by: James Bottomley \u003cJames.Bottomley@SteelEye.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5bcb28b139cffc736177ceb775d1c8b5c5a411e2",
      "tree": "5a5e5624994c3a15dc4bd3beae07a2f891ba84dc",
      "parents": [
        "910dea7fdda22f0ee83d26d459e460c79ed94557"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Sun Mar 26 18:30:52 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sun Mar 26 18:30:52 2006 +0200"
      },
      "message": "BUG_ON() Conversion in mm/memory.c\n\nthis changes if() BUG(); constructs to BUG_ON() which is\ncleaner, contains unlikely() and can better optimized away.\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "315ab19a6d12d6af7b6957090822f3057ab7e80f",
      "tree": "7d6d51cfbd0f5e3182d4490c077e1d3139eeb9a7",
      "parents": [
        "f081a529f808ed450c22553de7b3275e0ffde9a0"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Mar 25 16:20:22 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:43:45 2006 -0800"
      },
      "message": "[PATCH] mm: restore vm_normal_page check\n\nHugh is rightly concerned that the CONFIG_DEBUG_VM coverage has gone too\nfar in vm_normal_page, considering that we expect production kernels to be\nshipped with the option turned off, and that the code has been under some\nlarge changes recently.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4866920b93fd7d5b520278c3c76e6f4d5a352d81",
      "tree": "c4b8642c83e11af6d8e57ab35dc479f2c1a651d0",
      "parents": [
        "9da61aef0fd5b17dd4bf4baf33db12c470def774"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Wed Mar 22 00:08:58 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:04 2006 -0800"
      },
      "message": "[PATCH] hugepage: Fix hugepage logic in free_pgtables() harder\n\nTurns out the hugepage logic in free_pgtables() was doubly broken.  The\nloop coalescing multiple normal page VMAs into one call to free_pgd_range()\nhad an off by one error, which could mean it would coalesce one hugepage\nVMA into the same bundle (checking \u0027vma\u0027 not \u0027next\u0027 in the loop).  I\ntransferred this bug into the new is_vm_hugetlb_page() based version.\nHere\u0027s the fix.\n\nThis one didn\u0027t bite on powerpc previously for the same reason the\nis_hugepage_only_range() problem didn\u0027t: powerpc\u0027s hugetlb_free_pgd_range()\nis identical to free_pgd_range().  It didn\u0027t bite on ia64 because the\nhugepage region is distant enough from any other region that the separated\nPMD_SIZE distance test would always prevent coalescing the two together.\n\nNo libhugetlbfs testsuite regressions (ppc64, POWER5).\n\nSigned-off-by: David Gibson \u003cdwg@au1.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9da61aef0fd5b17dd4bf4baf33db12c470def774",
      "tree": "cb4bb0b63c36a0b303ceadc0cec0fae00c49ecf3",
      "parents": [
        "27a85ef1b81300cfff06b4c8037e9914dfb09acc"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Wed Mar 22 00:08:57 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:03 2006 -0800"
      },
      "message": "[PATCH] hugepage: Fix hugepage logic in free_pgtables()\n\nfree_pgtables() has special logic to call hugetlb_free_pgd_range() instead\nof the normal free_pgd_range() on hugepage VMAs.  However, the test it uses\nto do so is incorrect: it calls is_hugepage_only_range on a hugepage sized\nrange at the start of the vma.  is_hugepage_only_range() will return true\nif the given range has any intersection with a hugepage address region, and\nin this case the given region need not be hugepage aligned.  So, for\nexample, this test can return true if called on, say, a 4k VMA immediately\npreceding a (nicely aligned) hugepage VMA.\n\nAt present we get away with this because the powerpc version of\nhugetlb_free_pgd_range() is just a call to free_pgd_range().  On ia64 (the\nonly other arch with a non-trivial is_hugepage_only_range()) we get away\nwith it for a different reason; the hugepage area is not contiguous with\nthe rest of the user address space, and VMAs are not permitted in between,\nso the test can\u0027t return a false positive there.\n\nNonetheless this should be fixed.  We do that in the patch below by\nreplacing the is_hugepage_only_range() test with an explicit test of the\nVMA using is_vm_hugetlb_page().\n\nThis in turn changes behaviour for platforms where is_hugepage_only_range()\nreturns false always (everything except powerpc and ia64).  We address this\nby ensuring that hugetlb_free_pgd_range() is defined to be identical to\nfree_pgd_range() (instead of a no-op) on everything except ia64.  Even so,\nit will prevent some otherwise possible coalescing of calls down to\nfree_pgd_range().  Since this only happens for hugepage VMAs, removing this\nsmall optimization seems unlikely to cause any trouble.\n\nThis patch causes no regressions on the libhugetlbfs testsuite - ppc64\nPOWER5 (8-way), ppc64 G5 (2-way) and i386 Pentium M (UP).\n\nSigned-off-by: David Gibson \u003cdwg@au1.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b7ab795b7bec9997d4fde39f249d52823d36d98d",
      "tree": "8b8825a0718ec38b5b0840fe06efa9a92a0e30c7",
      "parents": [
        "6626c5d53bc45c59798628677ba5606f02e371f3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Mar 22 00:08:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:02 2006 -0800"
      },
      "message": "[PATCH] mm: more CONFIG_DEBUG_VM\n\nPut a few more checks under CONFIG_DEBUG_VM\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8dfcc9ba27e2ed257e5de9539f7f03e57c2c0e33",
      "tree": "aecaeb6a0b33c23f79dfcd2418e4a3881a29f2e2",
      "parents": [
        "8e7a9aae91101916b86de07fafe3272ea8dc1f10"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Mar 22 00:08:05 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:53:57 2006 -0800"
      },
      "message": "[PATCH] mm: split highorder pages\n\nHave an explicit mm call to split higher order pages into individual pages.\n Should help to avoid bugs and be more explicit about the code\u0027s intention.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Chris Zankel \u003cchris@zankel.net\u003e\nSigned-off-by: Yoichi Yuasa \u003cyoichi_yuasa@tripeaks.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6f5e6b9e69bf043074a0edabe3d271899c34eb79",
      "tree": "8833d7267d6653a2bf786b055f05640c9a64dc4d",
      "parents": [
        "7670f023aabd976c25862e4c6fb9f6d9d2758153"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Thu Mar 16 23:04:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 17 07:51:26 2006 -0800"
      },
      "message": "[PATCH] fix free swap cache latency\n\nLee Revell reported 28ms latency when process with lots of swapped memory\nexits.\n\n2.6.15 introduced a latency regression when unmapping: in accounting the\nzap_work latency breaker, pte_none counted 1, pte_present PAGE_SIZE, but a\nswap entry counted nothing at all.  We think of pages present as the slow\ncase, but Lee\u0027s trace shows that free_swap_and_cache\u0027s radix tree lookup\ncan make a lot of work - and we could have been doing it many thousands of\ntimes without a latency break.\n\nMove the zap_work update up to account swap entries like pages present.\nThis does account non-linear pte_file entries, and unmap_mapping_range\nskipping over swap entries, by the same amount even though they\u0027re quick:\nbut neither of those cases deserves complicating the code (and they\u0027re\ntreated no worse than they were in 2.6.14).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ],
  "next": "a62eaf151d9cb478d127cfbc2e93c498869785b0"
}
