)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "a62eaf151d9cb478d127cfbc2e93c498869785b0",
      "tree": "b13d62257ada7e0a9d37fdc9a69a7afa6f028b30",
      "parents": [
        "99019e919969be88e7e4042f3afa296bd55ad9ec"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Thu Feb 16 23:41:58 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Feb 17 08:00:40 2006 -0800"
      },
      "message": "[PATCH] x86_64: Add boot option to disable randomized mappings and cleanup\n\nAMD SimNow!\u0027s JIT doesn\u0027t like them at all in the guest. For distribution\ninstallation it\u0027s easiest if it\u0027s a boot time option.\n\nAlso I moved the variable to a more appropiate place and make\nit independent from sysctl\n\nAnd marked __read_mostly which it is.\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b16664e44c54525be89dc07ad15a13b4eeec5634",
      "tree": "1844d193009c1e55e3c26256feb14bc622ec9af3",
      "parents": [
        "2a16e3f4b0c408b9e50297d2ec27e295d490267a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Feb 01 03:05:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:16 2006 -0800"
      },
      "message": "[PATCH] Direct Migration V9: PageSwapCache checks\n\nCheck for PageSwapCache after looking up and locking a swap page.\n\nThe page migration code may change a swap pte to point to a different page\nunder lock_page().\n\nIf that happens then the vm must retry the lookup operation in the swap space\nto find the correct page number.  There are a couple of locations in the VM\nwhere a lock_page() is done on a swap page.  In these locations we need to\ncheck afterwards if the page was migrated.  If the page was migrated then the\nold page that was looked up before was freed and no longer has the\nPageSwapCache bit set.\n\nSigned-off-by: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\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": "1b1dcc1b57a49136f118a0f16367256ff9994a69",
      "tree": "b0b36d4f41d28c9d6514fb309d33c1a084d6309b",
      "parents": [
        "794ee1baee1c26be40410233e6c20bceb2b03c08"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to mutex: VFS, -\u003ei_sem\n\nThis patch converts the inode semaphore to a mutex. I have tested it on\nXFS and compiled as much as one can consider on an ia64. Anyway your\nluck with it might be different.\n\nModified-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n(finished the conversion)\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "67207b9664a8d603138ef1556141e6d0a102bea7",
      "tree": "e98886778be65aeb6625a5f516873bbc5beeb978",
      "parents": [
        "d7a301033f1990188f65abf4fe8e5b90ef0e3888"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Nov 15 15:53:48 2005 -0500"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Mon Jan 09 14:49:12 2006 +1100"
      },
      "message": "[PATCH] spufs: The SPU file system, base\n\nThis is the current version of the spu file system, used\nfor driving SPEs on the Cell Broadband Engine.\n\nThis release is almost identical to the version for the\n2.6.14 kernel posted earlier, which is available as part\nof the Cell BE Linux distribution from\nhttp://www.bsc.es/projects/deepcomputing/linuxoncell/.\n\nThe first patch provides all the interfaces for running\nspu application, but does not have any support for\ndebugging SPU tasks or for scheduling. Both these\nfunctionalities are added in the subsequent patches.\n\nSee Documentation/filesystems/spufs.txt on how to use\nspufs.\n\nSigned-off-by: Arnd Bergmann \u003carndb@de.ibm.com\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "41e9b63b35b52cf918a4ffdb8d77862ab824aa8b",
      "tree": "472ef8bb097f4e090f5fc95100acdbc77f515087",
      "parents": [
        "9617d95e6e9ffd883cf90a89724fe60d7ab22f9a"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Fri Jan 06 00:11:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:27 2006 -0800"
      },
      "message": "[PATCH] mm: pfault optimisation\n\nThis atomic operation is superfluous: the pte will be added with the\nreferenced bit set, and the page will be referenced through this mapping after\nthe page fault handler returns anyway.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\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": "9617d95e6e9ffd883cf90a89724fe60d7ab22f9a",
      "tree": "67d555d34d931bd253fbc4959ffdb1e5b904f2b0",
      "parents": [
        "224abf92b2f439a9030f21d2926ec8047d1ffcdb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Fri Jan 06 00:11:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:27 2006 -0800"
      },
      "message": "[PATCH] mm: rmap optimisation\n\nOptimise rmap functions by minimising atomic operations when we know there\nwill be no concurrent modifications.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\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": "f6b3ec238d12c8cc6cc71490c6e3127988460349",
      "tree": "b395c1054802760b0e938199231a9de9ac2f358a",
      "parents": [
        "d7339071f6a8b50101d7ba327926b770f22d5d8b"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Fri Jan 06 00:10:38 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:22 2006 -0800"
      },
      "message": "[PATCH] madvise(MADV_REMOVE): remove pages from tmpfs shm backing store\n\nHere is the patch to implement madvise(MADV_REMOVE) - which frees up a\ngiven range of pages \u0026 its associated backing store.  Current\nimplementation supports only shmfs/tmpfs and other filesystems return\n-ENOSYS.\n\n\"Some app allocates large tmpfs files, then when some task quits and some\nclient disconnect, some memory can be released.  However the only way to\nrelease tmpfs-swap is to MADV_REMOVE\". - Andrea Arcangeli\n\nDatabases want to use this feature to drop a section of their bufferpool\n(shared memory segments) - without writing back to disk/swap space.\n\nThis feature is also useful for supporting hot-plug memory on UML.\n\nConcerns raised by Andrew Morton:\n\n- \"We have no plan for holepunching!  If we _do_ have such a plan (or\n  might in the future) then what would the API look like?  I think\n  sys_holepunch(fd, start, len), so we should start out with that.\"\n\n- Using madvise is very weird, because people will ask \"why do I need to\n  mmap my file before I can stick a hole in it?\"\n\n- None of the other madvise operations call into the filesystem in this\n  manner.  A broad question is: is this capability an MM operation or a\n  filesytem operation?  truncate, for example, is a filesystem operation\n  which sometimes has MM side-effects.  madvise is an mm operation and with\n  this patch, it gains FS side-effects, only they\u0027re really, really\n  significant ones.\"\n\nComments:\n\n- Andrea suggested the fs operation too but then it\u0027s more efficient to\n  have it as a mm operation with fs side effects, because they don\u0027t\n  immediatly know fd and physical offset of the range.  It\u0027s possible to\n  fixup in userland and to use the fs operation but it\u0027s more expensive,\n  the vmas are already in the kernel and we can use them.\n\nShort term plan \u0026  Future Direction:\n\n- We seem to need this interface only for shmfs/tmpfs files in the short\n  term.  We have to add hooks into the filesystem for correctness and\n  completeness.  This is what this patch does.\n\n- In the future, plan is to support both fs and mmap apis also.  This\n  also involves (other) filesystem specific functions to be implemented.\n\n- Current patch doesn\u0027t support VM_NONLINEAR - which can be addressed in\n  the future.\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Andrea Arcangeli \u003candrea@suse.de\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4d7672b46244abffea1953e55688c0ea143dd617",
      "tree": "9f3bdf438bcb0d5f6e723665ced23308fffb8368",
      "parents": [
        "281ab031a8c9e5b593142eb4ec59a87faae8676a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Dec 16 10:21:23 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Dec 16 10:21:23 2005 -0800"
      },
      "message": "Make sure we copy pages inserted with \"vm_insert_page()\" on fork\n\nThe logic that decides that a fork() might be able to avoid copying a VM\narea when it can be re-created by page faults didn\u0027t know about the new\nvm_insert_page() case.\n\nAlso make some things a bit more anal wrt VM_PFNMAP.\n\nPointed out by Hugh Dickins \u003chugh@veritas.com\u003e\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1ff8038988adecfde71d82c0597727fc239d4e8c",
      "tree": "a592cbfad237a5e373724918a0cc17ee9c421237",
      "parents": [
        "14ee0a1414536d27bc29373bf23c106b8ef8ce0b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Dec 12 16:24:33 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Dec 12 16:24:33 2005 -0800"
      },
      "message": "get_user_pages: don\u0027t try to follow PFNMAP pages\n\nNick Piggin points out that a few drivers play games with VM_IO (why?\nwho knows..) and thus a pfn-remapped area may not have that bit set even\nif remap_pfn_range() set it originally.\n\nSo make it explicit in get_user_pages() that we don\u0027t follow VM_PFNMAP\npages, since pretty much by definition they do not have a \"struct page\"\nassociated with them.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "67121172f9753f38689651b613a4850e0e75876f",
      "tree": "cfb6ea8365c44a43ee254385c7d246f0418cedd0",
      "parents": [
        "913f2d792ff584bf9ebf5968472b3e4ffe0fd9c8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Dec 11 20:38:17 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Dec 11 20:38:17 2005 -0800"
      },
      "message": "Allow arbitrary read-only shared pfn-remapping too\n\nThe VM layer (for historical reasons) turns a read-only shared mmap into\na private-like mapping with the VM_MAYWRITE bit clear.  Thus checking\njust VM_SHARED isn\u0027t actually sufficient.\n\nSo use a trivial helper function for the cases where we wanted to inquire\nif a mapping was COW-like or not.\n\nMoo!\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7fc7e2eeecb599ba719c4c4503100fc8cd6a6920",
      "tree": "389b63cf2cbdf27fceef52a450b4b05367fe4425",
      "parents": [
        "fb155c1619f056ae9765eed272cd6aba6e1a7399"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Dec 11 19:57:52 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Dec 11 19:57:52 2005 -0800"
      },
      "message": "Remove (at least temporarily) the \"incomplete PFN mapping\" support\n\nWith the previous commit, we can handle arbitrary shared re-mappings\neven without this complexity, and since the only known private mappings\nare for strange users of /dev/mem (which never create an incomplete one),\nthere seems to be no reason to support it.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fb155c1619f056ae9765eed272cd6aba6e1a7399",
      "tree": "04a82b5fbf83bdb9dcf7fec9aeaaecf92532d88c",
      "parents": [
        "e4f5c82a92c2a546a16af1614114eec19120e40a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Dec 11 19:46:02 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Dec 11 19:46:02 2005 -0800"
      },
      "message": "Allow arbitrary shared PFNMAP\u0027s\n\nA shared mapping doesn\u0027t cause COW-pages, so we don\u0027t need to worry\nabout the whole vm_pgoff logic to decide if a PFN-remapped page has\ngone through COW or not.\n\nThis makes it possible to entirely avoid the special \"partial remapping\"\nlogic for the common case.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e3c3374fbf7efe9487edc53cd10436ed641983aa",
      "tree": "316a9e9ea22c49de5bef8af6a4b4557353f7d36a",
      "parents": [
        "0ceaacc9785fedc500e19b024d606a82a23f5372"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Dec 03 20:48:11 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Dec 03 20:48:11 2005 -0800"
      },
      "message": "Make vm_insert_page() available to NVidia module\n\nIt used to use remap_pfn_range(), which wasn\u0027t GPL-only either, and the\nnew interface is actually simpler and does more checking, so we\nshouldn\u0027t unnecessarily discourage people from switching over.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a145dd411eb28c83ee4bb68b66f62c326c0f764e",
      "tree": "d88745d3839f501e59cf9ada5274777af939aa2d",
      "parents": [
        "f8e988436b9d83b20bc5cc378f1a8034816ae6a6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 30 09:35:19 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 30 09:35:19 2005 -0800"
      },
      "message": "VM: add \"vm_insert_page()\" function\n\nThis is what a lot of drivers will actually want to use to insert\nindividual pages into a user VMA.  It doesn\u0027t have the old PageReserved\nrestrictions of remap_pfn_range(), and it doesn\u0027t complain about partial\nremappings.\n\nThe page you insert needs to be a nice clean kernel allocation, so you\ncan\u0027t insert arbitrary page mappings with this, but that\u0027s not what\npeople want.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "49c91fb01ff3948285608c65754b3ffbf57d50f2",
      "tree": "f229ea6c060fb927080fe668a0f277d0aee3ef8a",
      "parents": [
        "2f12c74f0cfdc93e1d47ac70766e837ef29472fd"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "trond.myklebust@fys.uio.no",
        "time": "Tue Nov 29 19:27:22 2005 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 29 17:29:57 2005 -0800"
      },
      "message": "[PATCH] VM: Fix typos in get_locked_pte\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "325f04dbca60a4cfe4ac25e7cf246edd07eb4c5f",
      "tree": "eb9e9fb10b1897fae3130c55c4821b829748767b",
      "parents": [
        "e5bbe4dfc8dbfc50ef89f8641e020616d4d1e69e"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Nov 29 16:55:48 2005 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 29 14:09:17 2005 -0800"
      },
      "message": "[PATCH] pfnmap: do_no_page BUG_ON again\n\nUse copy_user_highpage directly instead of cow_user_page in do_no_page:\nin the immediately following page_cache_release, and elsewhere, it is\nassuming that new_page is normal.  If any VM_PFNMAP driver can get to\ndo_no_page, it\u0027s just a BUG (but not in the case of do_anonymous_page).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e5bbe4dfc8dbfc50ef89f8641e020616d4d1e69e",
      "tree": "8bf22ece18b6f7e20024bef19d8afd2a0b07556a",
      "parents": [
        "5d2a2dbbc1025dbf7998b9289574d9592b8f21cc"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Nov 29 16:54:51 2005 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 29 14:09:16 2005 -0800"
      },
      "message": "[PATCH] pfnmap: remove src_page from do_wp_page\n\nClean away do_wp_page\u0027s \"src_page\": cow_user_page makes it unnecessary.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5d2a2dbbc1025dbf7998b9289574d9592b8f21cc",
      "tree": "b4f3f45190b814b5196235c21f983fbc7878a47b",
      "parents": [
        "c9cfcddfd65735437a4cb8563d6b66a6da8a5ed6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 29 14:07:55 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 29 14:07:55 2005 -0800"
      },
      "message": "cow_user_page: fix page alignment\n\nHigh Dickins points out that the user virtual address passed to the page\nfault handler isn\u0027t necessarily page-aligned.\n\nAlso, add a comment on why the copy could fail for the user address case.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c9cfcddfd65735437a4cb8563d6b66a6da8a5ed6",
      "tree": "618cdf37baafe8b283bcc9923d9dde89d6428fb5",
      "parents": [
        "4168f7a31801bba6acc18662978d24ec850bbbd0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 29 14:03:14 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 29 14:03:14 2005 -0800"
      },
      "message": "VM: add common helper function to create the page tables\n\nThis logic was duplicated four times, for no good reason.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "238f58d898df941aa9d1cb390fb27ff4febe8965",
      "tree": "4a897b3a47e7d209e3ff8601febd3dde16f3803e",
      "parents": [
        "eca351336acb2fa943611e0846562ce3997ef53b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 29 13:01:56 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 29 13:01:56 2005 -0800"
      },
      "message": "Support strange discontiguous PFN remappings\n\nThese get created by some drivers that don\u0027t generally even want a pfn\nremapping at all, but would really mostly prefer to just map pages\nthey\u0027ve allocated individually instead.\n\nFor now, create a helper function that turns such an incomplete PFN\nremapping call into a loop that does that explicit mapping.  In the long\nrun we almost certainly want to export a totally different interface for\nthat, though.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "eca351336acb2fa943611e0846562ce3997ef53b",
      "tree": "9b7b022d7b2d5f2f23bc979fa8bf5c1e418456bd",
      "parents": [
        "d70aa5e4b54aa7e704c886838715ac8a45d5750f"
      ],
      "author": {
        "name": "Ben Collins",
        "email": "bcollins@debian.org",
        "time": "Tue Nov 29 11:45:26 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 29 12:57:17 2005 -0800"
      },
      "message": "[PATCH] Fix missing pfn variables caused by vm changes\n\nI image this showed up because of \"unused var...\" when the changes\noccured, because flush_cache_page() is a noop in most places.  This\nshowed up for me on parisc however, where flush_cache_page() is a real\nfunction.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fa2a455b028f3b6ca4dae129c6337d7edf21f12c",
      "tree": "42b147522c5c112e26efa55b8173a97b424149a5",
      "parents": [
        "624f54be206adf970cd8eece16446b027913e533"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Tue Nov 29 18:43:17 2005 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 29 07:53:32 2005 -0800"
      },
      "message": "[PATCH] Fix vma argument in get_usr_pages() for gate areas\n\nThe system call gate area handling called vm_normal_page() with the\nwrong vma (which was always NULL, and caused an oops).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e0f39591cc178026607fcbbe9a53be435fe8285d",
      "tree": "18387c401edd3f672a30246b6e580067d8806355",
      "parents": [
        "5cd9194a1b0b0fa219c31421ac64dfd38670ed49"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Mon Nov 28 13:43:44 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 28 14:42:22 2005 -0800"
      },
      "message": "[PATCH] Workaround for gcc 2.96 (undefined references)\n\n  LD      .tmp_vmlinux1\nmm/built-in.o(.text+0x100d6): In function `copy_page_range\u0027:\n: undefined reference to `__pud_alloc\u0027\nmm/built-in.o(.text+0x1010b): In function `copy_page_range\u0027:\n: undefined reference to `__pmd_alloc\u0027\nmm/built-in.o(.text+0x11ef4): In function `__handle_mm_fault\u0027:\n: undefined reference to `__pud_alloc\u0027\nfs/built-in.o(.text+0xc930): In function `install_arg_page\u0027:\n: undefined reference to `__pud_alloc\u0027\nmake: *** [.tmp_vmlinux1] Error 1\n\nThose missing references in mm/memory.c arise from this code in\ninclude/linux/mm.h, combined with the fact that __PGTABLE_PMD_FOLDED and\n__PGTABLE_PUD_FOLDED are both set and __ARCH_HAS_4LEVEL_HACK is not:\n\n/*\n * The following ifdef needed to get the 4level-fixup.h header to work.\n * Remove it when 4level-fixup.h has been removed.\n */\n#if defined(CONFIG_MMU) \u0026\u0026 !defined(__ARCH_HAS_4LEVEL_HACK)\nstatic inline pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)\n{\n        return (unlikely(pgd_none(*pgd)) \u0026\u0026 __pud_alloc(mm, pgd, address))?\n                NULL: pud_offset(pgd, address);\n}\n\nstatic inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address)\n{\n        return (unlikely(pud_none(*pud)) \u0026\u0026 __pmd_alloc(mm, pud, address))?\n                NULL: pmd_offset(pud, address);\n}\n#endif /* CONFIG_MMU \u0026\u0026 !__ARCH_HAS_4LEVEL_HACK */\n\nWith my configuration the pgd_none and pud_none routines are inlines\nreturning a constant 0.  Apparently the old compiler avoids generating\ncalls to __pud_alloc and __pmd_alloc but still lists them as undefined\nreferences in the module\u0027s symbol table.\n\nI don\u0027t know which change caused this problem.  I think it was added\nsomewhere between 2.6.14 and 2.6.15-rc1, because I remember building\nseveral 2.6.14-rc kernels without difficulty.  However I can\u0027t point to an\nindividual culprit.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6aab341e0a28aff100a09831c5300a2994b8b986",
      "tree": "1af3908275aa5e1b16e80efee554a9a7504c56d4",
      "parents": [
        "458af5439fe7ae7d95ca14106844e61f0795166c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 28 14:34:23 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 28 14:34:23 2005 -0800"
      },
      "message": "mm: re-architect the VM_UNPAGED logic\n\nThis replaces the (in my opinion horrible) VM_UNMAPPED logic with very\nexplicit support for a \"remapped page range\" aka VM_PFNMAP.  It allows a\nVM area to contain an arbitrary range of page table entries that the VM\nnever touches, and never considers to be normal pages.\n\nAny user of \"remap_pfn_range()\" automatically gets this new\nfunctionality, and doesn\u0027t even have to mark the pages reserved or\nindeed mark them any other way.  It just works.  As a side effect, doing\nmmap() on /dev/mem works for arbitrary ranges.\n\nSparc update from David in the next commit.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f57e88a8d83de8d844b57e16b84d2f762fe9f092",
      "tree": "32fee3ab5c177bc0f47827dd18ad4471be3b2a74",
      "parents": [
        "ee498ed730283e9cdfc8913f12b90a2246f1a8cc"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Nov 21 21:32:19 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 22 09:13:42 2005 -0800"
      },
      "message": "[PATCH] unpaged: ZERO_PAGE in VM_UNPAGED\n\nIt\u0027s strange enough to be looking out for anonymous pages in VM_UNPAGED areas,\nlet\u0027s not insert the ZERO_PAGE there - though whether it would matter will\ndepend on what we decide about ZERO_PAGE refcounting.\n\nBut whereas do_anonymous_page may (exceptionally) be called on a VM_UNPAGED\narea, do_no_page should never be: just BUG_ON.\n\nSigned-off-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": "ee498ed730283e9cdfc8913f12b90a2246f1a8cc",
      "tree": "797966a8454e40fdf1879bacea510ad8c55a91a2",
      "parents": [
        "920fc356f58d0e455bdfa53451f1c58eb211a846"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Nov 21 21:32:18 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 22 09:13:42 2005 -0800"
      },
      "message": "[PATCH] unpaged: anon in VM_UNPAGED\n\ncopy_one_pte needs to copy the anonymous COWed pages in a VM_UNPAGED area,\nzap_pte_range needs to free them, do_wp_page needs to COW them: just like\nordinary pages, not like the unpaged.\n\nBut recognizing them is a little subtle: because PageReserved is no longer a\ncondition for remap_pfn_range, we can now mmap all of /dev/mem (whether the\ndistro permits, and whether it\u0027s advisable on this or that architecture, is\nanother matter).  So if we can see a PageAnon, it may not be ours to mess with\n(or may be ours from elsewhere in the address space).  I suspect there\u0027s an\nentertaining insoluble self-referential problem here, but the page_is_anon\nfunction does a good practical job, and MAP_PRIVATE PROT_WRITE VM_UNPAGED will\nalways be an odd choice.\n\nIn updating the comment on page_address_in_vma, noticed a potential NULL\ndereference, in a path we don\u0027t actually take, but fixed it.\n\nSigned-off-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": "920fc356f58d0e455bdfa53451f1c58eb211a846",
      "tree": "cb5fe90bc74ad9dd95191bb3c105aadd833197f2",
      "parents": [
        "101d2be7646b7dd1c367d50208a59b29fce61398"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Nov 21 21:32:17 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 22 09:13:42 2005 -0800"
      },
      "message": "[PATCH] unpaged: COW on VM_UNPAGED\n\nRemove the BUG_ON(vma-\u003evm_flags \u0026 VM_UNPAGED) from do_wp_page, and let it do\nCopy-On-Write without touching the VM_UNPAGED\u0027s page counts - but this is\nincomplete, because the anonymous page it inserts will itself need to be\nhandled, here and in other functions - next patch.\n\nWe still don\u0027t copy the page if the pfn is invalid, because the\ncopy_user_highpage interface does not allow it.  But that\u0027s not been a problem\nin the past: can be added in later if the need arises.\n\nSigned-off-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": "0b14c179a483e71ea41df2aa4a661760063115bd",
      "tree": "075fc303a3d2fd33f66c0af8f64064cff2b72b79",
      "parents": [
        "664beed0190fae687ac51295694004902ddeb18e"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Nov 21 21:32:15 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 22 09:13:42 2005 -0800"
      },
      "message": "[PATCH] unpaged: VM_UNPAGED\n\nAlthough we tend to associate VM_RESERVED with remap_pfn_range, quite a few\ndrivers set VM_RESERVED on areas which are then populated by nopage.  The\nPageReserved removal in 2.6.15-rc1 changed VM_RESERVED not to free pages in\nzap_pte_range, without changing those drivers not to set it: so their pages\njust leak away.\n\nLet\u0027s not change miscellaneous drivers now: introduce VM_UNPAGED at the core,\nto flag the special areas where the ptes may have no struct page, or if they\nhave then it\u0027s not to be touched.  Replace most instances of VM_RESERVED in\ncore mm by VM_UNPAGED.  Force it on in remap_pfn_range, and the sparc and\nsparc64 io_remap_pfn_range.\n\nRevert addition of VM_RESERVED to powerpc vdso, it\u0027s not needed there.  Is it\nneeded anywhere?  It still governs the mm-\u003ereserved_vm statistic, and special\nvmas not to be merged, and areas not to be core dumped; but could probably be\neliminated later (the drivers are probably specifying it because in 2.4 it\nkept swapout off the vma, but in 2.6 we work from the LRU, which these pages\ndon\u0027t get on).\n\nUse the VM_SHM slot for VM_UNPAGED, and define VM_SHM to 0: it serves no\npurpose whatsoever, and should be removed from drivers when we clean up.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: William Irwin \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ed5297a94090d9a9f27b0ce1f9601ebe73561cff",
      "tree": "00d28144ae949b3f9d566279cb12be0c802f86e6",
      "parents": [
        "aa1a64ee12ae130706f3fc0007841ce9b0ddf9c2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Nov 21 21:32:11 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 22 09:13:41 2005 -0800"
      },
      "message": "[PATCH] unpaged: get_user_pages VM_RESERVED\n\nThe PageReserved removal in 2.6.15-rc1 prohibited get_user_pages on the areas\nflagged VM_RESERVED in place of PageReserved.  That is correct in theory - we\nought not to interfere with struct pages in such a reserved area; but in\npractice it broke BTTV for one.\n\nSo revert to prohibiting only on VM_IO: if someone gets into trouble with\nget_user_pages on VM_RESERVED, it\u0027ll just be a \"don\u0027t do that\".\n\nYou can argue that videobuf_mmap_mapper shouldn\u0027t set VM_RESERVED in the first\nplace, but now\u0027s not the time for breaking drivers without notice.\n\nSigned-off-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": "51c6f666fceb3184eeff045dad4432b602cd648e",
      "tree": "33e29916e0fea872ba6f29eba698219a740b078f",
      "parents": [
        "885036d32f5d3c427c3e2b385b5a5503805e3e52"
      ],
      "author": {
        "name": "Robin Holt",
        "email": "holt@sgi.com",
        "time": "Sun Nov 13 16:06:42 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Nov 13 18:14:12 2005 -0800"
      },
      "message": "[PATCH] mm: ZAP_BLOCK causes redundant work\n\nThe address based work estimate for unmapping (for lockbreak) is and always\nwas horribly inefficient for sparse mappings.  The problem is most simply\nexplained with an example:\n\nIf we find a pgd is clear, we still have to call into unmap_page_range\nPGDIR_SIZE / ZAP_BLOCK_SIZE times, each time checking the clear pgd, in\norder to progress the working address to the next pgd.\n\nThe fundamental way to solve the problem is to keep track of the end\naddress we\u0027ve processed and pass it back to the higher layers.\n\nFrom: Nick Piggin \u003cnpiggin@suse.de\u003e\n\n  Modification to completely get away from address based work estimate\n  and instead use an abstract count, with a very small cost for empty\n  entries as opposed to present pages.\n\n  On 2.6.14-git2, ppc64, and CONFIG_PREEMPT\u003dy, mapping and unmapping 1TB\n  of virtual address space takes 1.69s; with the following patch applied,\n  this operation can be done 1000 times in less than 0.01s\n\nFrom: Andrew Morton \u003cakpm@osdl.org\u003e\n\nWith CONFIG_HUTETLB_PAGE\u003dn:\n\nmm/memory.c: In function `unmap_vmas\u0027:\nmm/memory.c:779: warning: division by zero\n\nDue to\n\n\t\t\tzap_work -\u003d (end - start) /\n\t\t\t\t\t(HPAGE_SIZE / PAGE_SIZE);\n\nSo make the dummy HPAGE_SIZE non-zero\n\nSigned-off-by: Robin Holt \u003cholt@sgi.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\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": "1a44e149084d772a1bcf4cdbdde8a013a8a1cfde",
      "tree": "b3f682ce8df89edb9740fdd5c178df5accc49736",
      "parents": [
        "2e9b367c2273ed21c9852a04d90944d472c4f3e6"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@suse.de",
        "time": "Sat Oct 29 18:16:48 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:43 2005 -0700"
      },
      "message": "[PATCH] .text page fault SMP scalability optimization\n\nWe had a problem on ppc64 where with more than 4 threads a large system\nwouldn\u0027t scale well while faulting in the .text (most of the time was spent\nin the kernel despite it was an userland compute intensive app).  The\nreason is the useless overwrite of the same pte from all cpu.\n\nI fixed it this way (verified on an older kernel but the forward port is\nalmost identical).  This will benefit all archs not just ppc64.\n\nSigned-off-by: Andrea Arcangeli \u003candrea@suse.de\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": "f412ac08c9861b4791af0145934c22f1458686da",
      "tree": "5e515efa116f3968c2caa75bc691a197199313a8",
      "parents": [
        "4c21e2f2441dc5fbb957b030333f5a3f2d02dea7"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:41 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:42 2005 -0700"
      },
      "message": "[PATCH] mm: fix rss and mmlist locking\n\nA couple of oddities were guarded by page_table_lock, no longer properly\nguarded when that is split.\n\nThe mm_counters of file_rss and anon_rss: make those an atomic_t, or an\natomic64_t if the architecture supports it, in such a case.  Definitions by\ncourtesy of Christoph Lameter: who spent considerable effort on more scalable\nways of counting, but found insufficient benefit in practice.\n\nAnd adding an mm with swap to the mmlist for swapoff: the list is well-\nguarded by its own lock, but the list_empty check now has to be repeated\ninside it.\n\nSigned-off-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": "4c21e2f2441dc5fbb957b030333f5a3f2d02dea7",
      "tree": "1f76d33bb1d76221c6424bc5fed080a4f91349a6",
      "parents": [
        "b38c6845b695141259019e2b7c0fe6c32a6e720d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:40 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:42 2005 -0700"
      },
      "message": "[PATCH] mm: split page table lock\n\nChristoph Lameter demonstrated very poor scalability on the SGI 512-way, with\na many-threaded application which concurrently initializes different parts of\na large anonymous area.\n\nThis patch corrects that, by using a separate spinlock per page table page, to\nguard the page table entries in that page, instead of using the mm\u0027s single\npage_table_lock.  (But even then, page_table_lock is still used to guard page\ntable allocation, and anon_vma allocation.)\n\nIn this implementation, the spinlock is tucked inside the struct page of the\npage table page: with a BUILD_BUG_ON in case it overflows - which it would in\nthe case of 32-bit PA-RISC with spinlock debugging enabled.\n\nSplitting the lock is not quite for free: another cacheline access.  Ideally,\nI suppose we would use split ptlock only for multi-threaded processes on\nmulti-cpu machines; but deciding that dynamically would have its own costs.\nSo for now enable it by config, at some number of cpus - since the Kconfig\nlanguage doesn\u0027t support inequalities, let preprocessor compare that with\nNR_CPUS.  But I don\u0027t think it\u0027s worth being user-configurable: for good\ntesting of both split and unsplit configs, split now at 4 cpus, and perhaps\nchange that to 8 later.\n\nThere is a benefit even for singly threaded processes: kswapd can be attacking\none part of the mm while another part is busy faulting.\n\nSigned-off-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": "deceb6cd17e6dfafe4c4f81b1b4153bc41b2cb70",
      "tree": "2a722f50e8edef8609a49f65bfcb222e499c44cc",
      "parents": [
        "c34d1b4d165c67b966bca4aba026443d7ff161eb"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:33 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:41 2005 -0700"
      },
      "message": "[PATCH] mm: follow_page with inner ptlock\n\nFinal step in pushing down common core\u0027s page_table_lock.  follow_page no\nlonger wants caller to hold page_table_lock, uses pte_offset_map_lock itself;\nand so no page_table_lock is taken in get_user_pages itself.\n\nBut get_user_pages (and get_futex_key) do then need follow_page to pin the\npage for them: take Daniel\u0027s suggestion of bitflags to follow_page.\n\nNeed one for WRITE, another for TOUCH (it was the accessed flag before:\nvanished along with check_user_page_readable, but surely get_numa_maps is\nwrong to mark every page it finds as accessed), another for GET.\n\nAnd another, ANON to dispose of untouched_anonymous_page: it seems silly for\nthat to descend a second time, let follow_page observe if there was no page\ntable and return ZERO_PAGE if so.  Fix minor bug in that: check VM_LOCKED -\nmake_pages_present ought to make readonly anonymous present.\n\nGive get_numa_maps a cond_resched while we\u0027re there.\n\nSigned-off-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": "c34d1b4d165c67b966bca4aba026443d7ff161eb",
      "tree": "27ffca9daba2a6b16d29bd508faf3e68bda2aad1",
      "parents": [
        "c0718806cf955d5eb51ea77bffb5b21d9bba4972"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:32 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:41 2005 -0700"
      },
      "message": "[PATCH] mm: kill check_user_page_readable\n\ncheck_user_page_readable is a problematic variant of follow_page.  It\u0027s used\nonly by oprofile\u0027s i386 and arm backtrace code, at interrupt time, to\nestablish whether a userspace stackframe is currently readable.\n\nThis is problematic, because we want to push the page_table_lock down inside\nfollow_page, and later split it; whereas oprofile is doing a spin_trylock on\nit (in the i386 case, forgotten in the arm case), and needs that to pin\nperhaps two pages spanned by the stackframe (which might be covered by\ndifferent locks when we split).\n\nI think oprofile is going about this in the wrong way: it doesn\u0027t need to know\nthe area is readable (neither i386 nor arm uses read protection of user\npages), it doesn\u0027t need to pin the memory, it should simply\n__copy_from_user_inatomic, and see if that succeeds or not.  Sorry, but I\u0027ve\nnot got around to devising the sparse __user annotations for this.\n\nThen we can eliminate check_user_page_readable, and return to a single\nfollow_page without the __follow_page variants.\n\nSigned-off-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": "508034a32b819a2d40aa7ac0dbc8cd2e044c2de6",
      "tree": "906a8f0095af24f403b30d649d3ec1ffb4ff2f50",
      "parents": [
        "8f4f8c164cb4af1432cc25eda82928ea4519ba72"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:30 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:41 2005 -0700"
      },
      "message": "[PATCH] mm: unmap_vmas with inner ptlock\n\nRemove the page_table_lock from around the calls to unmap_vmas, and replace\nthe pte_offset_map in zap_pte_range by pte_offset_map_lock: all callers are\nnow safe to descend without page_table_lock.\n\nDon\u0027t attempt fancy locking for hugepages, just take page_table_lock in\nunmap_hugepage_range.  Which makes zap_hugepage_range, and the hugetlb test in\nzap_page_range, redundant: unmap_vmas calls unmap_hugepage_range anyway.  Nor\ndoes unmap_vmas have much use for its mm arg now.\n\nThe tlb_start_vma and tlb_end_vma in unmap_page_range are now called without\npage_table_lock: if they\u0027re implemented at all, they typically come down to\nflush_cache_range (usually done outside page_table_lock) and flush_tlb_range\n(which we already audited for the mprotect case).\n\nSigned-off-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": "8f4f8c164cb4af1432cc25eda82928ea4519ba72",
      "tree": "49cd3c62069df1f8d6c863b9806923de16c10e8b",
      "parents": [
        "663b97f7efd001b0c56bd5fce059c5272725b86f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:29 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:40 2005 -0700"
      },
      "message": "[PATCH] mm: unlink vma before pagetables\n\nIn most places the descent from pgd to pud to pmd to pte holds mmap_sem\n(exclusively or not), which ensures that free_pgtables cannot be freeing page\ntables from any level at the same time.  But truncation and reverse mapping\ndescend without mmap_sem.\n\nNo problem: just make sure that a vma is unlinked from its prio_tree (or\nnonlinear list) and from its anon_vma list, after zapping the vma, but before\nfreeing its page tables.  Then neither vmtruncate nor rmap can reach that vma\nwhose page tables are now volatile (nor do they need to reach it, since all\nits page entries have been zapped by this stage).\n\nThe i_mmap_lock and anon_vma-\u003elock already serialize this correctly; but the\nlocking hierarchy is such that we cannot take them while holding\npage_table_lock.  Well, we\u0027re trying to push that down anyway.  So in this\npatch, move anon_vma_unlink and unlink_file_vma into free_pgtables, at the\nsame time as moving page_table_lock around calls to unmap_vmas.\n\ntlb_gather_mmu and tlb_finish_mmu then fall outside the page_table_lock, but\nwe made them preempt_disable and preempt_enable earlier; and a long source\naudit of all the architectures has shown no problem with removing\npage_table_lock from them.  free_pgtables doesn\u0027t need page_table_lock for\nitself, nor for what it calls; tlb-\u003emm-\u003enr_ptes is usually protected by\npage_table_lock, but partly by non-exclusive mmap_sem - here it\u0027s decremented\nwith exclusive mmap_sem, or mm_users 0.  update_hiwater_rss and\nvm_unacct_memory don\u0027t need page_table_lock either.\n\nSigned-off-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": "8f4e2101fd7df9031a754eedb82e2060b51f8c45",
      "tree": "624db00c6160d70376a57447b45b935b293e396b",
      "parents": [
        "b462705ac679f6195d1b23a752cda592d9107495"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:26 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:40 2005 -0700"
      },
      "message": "[PATCH] mm: page fault handler locking\n\nOn the page fault path, the patch before last pushed acquiring the\npage_table_lock down to the head of handle_pte_fault (though it\u0027s also taken\nand dropped earlier when a new page table has to be allocated).\n\nNow delete that line, read \"entry \u003d *pte\" without it, and go off to this or\nthat page fault handler on the basis of this unlocked peek.  Usually the\nhandler can proceed without the lock, relying on the subsequent locked\npte_same or pte_none test to back out when necessary; though do_wp_page needs\nthe lock immediately, and do_file_page doesn\u0027t check (if there\u0027s a race,\ninstall_page just zaps the entry and reinstalls it).\n\nBut on those architectures (notably i386 with PAE) whose pte is too big to be\nread atomically, if SMP or preemption is enabled, do_swap_page and\ndo_file_page might cause irretrievable damage if passed a Frankenstein entry\nstitched together from unrelated parts.  In those configs, \"pte_unmap_same\"\nhas to take page_table_lock, validate orig_pte still the same, and drop\npage_table_lock before unmapping, before proceeding.\n\nUse pte_offset_map_lock and pte_unmap_unlock throughout the handlers; but lock\navoidance leaves more lone maps and unmaps than elsewhere.\n\nSigned-off-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": "c74df32c724a1652ad8399b4891bb02c9d43743a",
      "tree": "5a79d56fdcf7dc2053a277dbf6db7c3b339e9659",
      "parents": [
        "1bb3630e89cb8a7b3d3807629c20c5bad88290ff"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:23 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:40 2005 -0700"
      },
      "message": "[PATCH] mm: ptd_alloc take ptlock\n\nSecond step in pushing down the page_table_lock.  Remove the temporary\nbridging hack from __pud_alloc, __pmd_alloc, __pte_alloc: expect callers not\nto hold page_table_lock, whether it\u0027s on init_mm or a user mm; take\npage_table_lock internally to check if a racing task already allocated.\n\nConvert their callers from common code.  But avoid coming back to change them\nagain later: instead of moving the spin_lock(\u0026mm-\u003epage_table_lock) down,\nswitch over to new macros pte_alloc_map_lock and pte_unmap_unlock, which\nencapsulate the mapping+locking and unlocking+unmapping together, and in the\nend may use alternatives to the mm page_table_lock itself.\n\nThese callers all hold mmap_sem (some exclusively, some not), so at no level\ncan a page table be whipped away from beneath them; and pte_alloc uses the\n\"atomic\" pmd_present to test whether it needs to allocate.  It appears that on\nall arches we can safely descend without page_table_lock.\n\nSigned-off-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": "1bb3630e89cb8a7b3d3807629c20c5bad88290ff",
      "tree": "3d1fd73487ca66f227701b9530f2c76fcc6f9da4",
      "parents": [
        "872fec16d9a0ed3b75b8893aa217e49cca575ee5"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:22 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:40 2005 -0700"
      },
      "message": "[PATCH] mm: ptd_alloc inline and out\n\nIt seems odd to me that, whereas pud_alloc and pmd_alloc test inline, only\ncalling out-of-line __pud_alloc __pmd_alloc if allocation needed,\npte_alloc_map and pte_alloc_kernel are entirely out-of-line.  Though it does\nadd a little to kernel size, change them to macros testing inline, calling\n__pte_alloc or __pte_alloc_kernel to allocate out-of-line.  Mark none of them\nas fastcalls, leave that to CONFIG_REGPARM or not.\n\nIt also seems more natural for the out-of-line functions to leave the offset\ncalculation and map to the inline, which has to do it anyway for the common\ncase.  At least mremap move wants __pte_alloc without _map.\n\nMacros rather than inline functions, certainly to avoid the header file issues\nwhich arise from CONFIG_HIGHPTE needing kmap_types.h, but also in case any\narchitectures I haven\u0027t built would have other such problems.\n\nSigned-off-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": "872fec16d9a0ed3b75b8893aa217e49cca575ee5",
      "tree": "1dfc8b9f2754bdfff645188e497865c00201d535",
      "parents": [
        "46dea3d092d23a58b42499cc8a21de0fad079f4a"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:21 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:40 2005 -0700"
      },
      "message": "[PATCH] mm: init_mm without ptlock\n\nFirst step in pushing down the page_table_lock.  init_mm.page_table_lock has\nbeen used throughout the architectures (usually for ioremap): not to serialize\nkernel address space allocation (that\u0027s usually vmlist_lock), but because\npud_alloc,pmd_alloc,pte_alloc_kernel expect caller holds it.\n\nReverse that: don\u0027t lock or unlock init_mm.page_table_lock in any of the\narchitectures; instead rely on pud_alloc,pmd_alloc,pte_alloc_kernel to take\nand drop it when allocating a new one, to check lest a racing task already\ndid.  Similarly no page_table_lock in vmalloc\u0027s map_vm_area.\n\nSome temporary ugliness in __pud_alloc and __pmd_alloc: since they also handle\nuser mms, which are converted only by a later patch, for now they have to lock\ndifferently according to whether or not it\u0027s init_mm.\n\nIf sources get muddled, there\u0027s a danger that an arch source taking\ninit_mm.page_table_lock will be mixed with common source also taking it (or\nneither take it).  So break the rules and make another change, which should\nbreak the build for such a mismatch: remove the redundant mm arg from\npte_alloc_kernel (ppc64 scrapped its distinct ioremap_mm in 2.6.13).\n\nExceptions: arm26 used pte_alloc_kernel on user mm, now pte_alloc_map; ia64\nused pte_alloc_map on init_mm, now pte_alloc_kernel; parisc had bad args to\npmd_alloc and pte_alloc_kernel in unused USE_HPPA_IOREMAP code; ppc64\nmap_io_page forgot to unlock on failure; ppc mmu_mapin_ram and ppc64 im_free\ntook page_table_lock for no good reason.\n\nSigned-off-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": "365e9c87a982c03d0af3886e29d877f581b59611",
      "tree": "d06c1918ca9fe6677d7e4e869555e095004274f7",
      "parents": [
        "861f2fb8e796022b4928cab9c74fca6681a1c557"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:18 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] mm: update_hiwaters just in time\n\nupdate_mem_hiwater has attracted various criticisms, in particular from those\nconcerned with mm scalability.  Originally it was called whenever rss or\ntotal_vm got raised.  Then many of those callsites were replaced by a timer\ntick call from account_system_time.  Now Frank van Maarseveen reports that to\nbe found inadequate.  How about this?  Works for Frank.\n\nReplace update_mem_hiwater, a poor combination of two unrelated ops, by macros\nupdate_hiwater_rss and update_hiwater_vm.  Don\u0027t attempt to keep\nmm-\u003ehiwater_rss up to date at timer tick, nor every time we raise rss (usually\nby 1): those are hot paths.  Do the opposite, update only when about to lower\nrss (usually by many), or just before final accounting in do_exit.  Handle\nmm-\u003ehiwater_vm in the same way, though it\u0027s much less of an issue.  Demand\nthat whoever collects these hiwater statistics do the work of taking the\nmaximum with rss or total_vm.\n\nAnd there has been no collector of these hiwater statistics in the tree.  The\nnew convention needs an example, so match Frank\u0027s usage by adding a VmPeak\nline above VmSize to /proc/\u003cpid\u003e/status, and also a VmHWM line above VmRSS\n(High-Water-Mark or High-Water-Memory).\n\nThere was a particular anomaly during mremap move, that hiwater_vm might be\ncaptured too high.  A fleeting such anomaly remains, but it\u0027s quickly\ncorrected now, whereas before it would stick.\n\nWhat locking?  None: if the app is racy then these statistics will be racy,\nit\u0027s not worth any overhead to make them exact.  But whenever it suits,\nhiwater_vm is updated under exclusive mmap_sem, and hiwater_rss under\npage_table_lock (for now) or with preemption disabled (later on): without\ngoing to any trouble, minimize the time between reading current values and\nupdating, to minimize those occasions when a racing thread bumps a count up\nand back down in between.\n\nSigned-off-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": "9e9bef07ce5a342aa6246ebc5c20829d0d5d63d0",
      "tree": "6f7286ebbb2c4b8af7bb04897a64b054c67faa4a",
      "parents": [
        "86d912f41dca32eca8827f2f878139735e69dc28"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:15 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] mm: do_swap_page race major\n\nSmall adjustment: do_swap_page should report its !pte_same race as a major\nfault if it had to read into swap cache, because whatever raced with it will\nhave found page already in cache and reported minor fault.\n\nSigned-off-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": "86d912f41dca32eca8827f2f878139735e69dc28",
      "tree": "9f29b853e7690f0fa10c4257a2b8649673908e2d",
      "parents": [
        "8c10376271e097fa13cda956e1b2f3cb7e4d4dd9"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:14 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] mm: zap_pte_range dec rss\n\nSmall adjustment: zap_pte_range decrement its rss counts from 0 then finally\nadd, avoiding negations - we don\u0027t have or need a sub_mm_rss.\n\nSigned-off-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": "8c10376271e097fa13cda956e1b2f3cb7e4d4dd9",
      "tree": "0bb1c428bfddce70eb1195c625add027899416e0",
      "parents": [
        "b5810039a54e5babf428e9a1e89fc1940fabff11"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:13 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] mm: copy_one_pte inc rss\n\nSmall adjustment, following Nick\u0027s suggestion: it\u0027s more straightforward for\ncopy_pte_range to let copy_one_pte do the rss incrementation, than use an\nindex it passed back.  Saves a #define, and 16 bytes of .text.\n\nSigned-off-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": "b5810039a54e5babf428e9a1e89fc1940fabff11",
      "tree": "835836cb527ec9bd525f93eb7e016f3dfb8c8ae2",
      "parents": [
        "f9c98d0287de42221c624482fd4f8d485c98ab22"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Sat Oct 29 18:16:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] core remove PageReserved\n\nRemove PageReserved() calls from core code by tightening VM_RESERVED\nhandling in mm/ to cover PageReserved functionality.\n\nPageReserved special casing is removed from get_page and put_page.\n\nAll setting and clearing of PageReserved is retained, and it is now flagged\nin the page_alloc checks to help ensure we don\u0027t introduce any refcount\nbased freeing of Reserved pages.\n\nMAP_PRIVATE, PROT_WRITE of VM_RESERVED regions is tentatively being\ndeprecated.  We never completely handled it correctly anyway, and is be\nreintroduced in future if required (Hugh has a proof of concept).\n\nOnce PageReserved() calls are removed from kernel/power/swsusp.c, and all\narch/ and driver code, the Set and Clear calls, and the PG_reserved bit can\nbe trivially removed.\n\nLast real user of PageReserved is swsusp, which uses PageReserved to\ndetermine whether a struct page points to valid memory or not.  This still\nneeds to be addressed (a generic page_is_ram() should work).\n\nA last caveat: the ZERO_PAGE is now refcounted and managed with rmap (and\nthus mapcounted and count towards shared rss).  These writes to the struct\npage could cause excessive cacheline bouncing on big systems.  There are a\nnumber of ways this could be addressed if it is an issue.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\n\nRefcount bug fix for filemap_xip.c\n\nSigned-off-by: Carsten Otte \u003ccotte@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ae859762332f19bfc06f4c4a1b1fefb41e9e1084",
      "tree": "4f21583bb1441e5555ed199a40d5f679bb4506e9",
      "parents": [
        "4294621f41a85497019fae64341aa5351a1921b7"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:05 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:38 2005 -0700"
      },
      "message": "[PATCH] mm: batch updating mm_counters\n\ntlb_finish_mmu used to batch zap_pte_range\u0027s update of mm rss, which may be\nworthwhile if the mm is contended, and would reduce atomic operations if the\ncounts were atomic.  Let zap_pte_range now batch its updates to file_rss and\nanon_rss, per page-table in case we drop the lock outside; and copy_pte_range\nbatch them too.\n\nSigned-off-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": "4294621f41a85497019fae64341aa5351a1921b7",
      "tree": "fdeb7eb44384a99d0679ffa6de5019bab0ea2166",
      "parents": [
        "404351e67a9facb475abf1492245374a28d13e90"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:05 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:38 2005 -0700"
      },
      "message": "[PATCH] mm: rss \u003d file_rss + anon_rss\n\nI was lazy when we added anon_rss, and chose to change as few places as\npossible.  So currently each anonymous page has to be counted twice, in rss\nand in anon_rss.  Which won\u0027t be so good if those are atomic counts in some\nconfigurations.\n\nChange that around: keep file_rss and anon_rss separately, and add them\ntogether (with get_mm_rss macro) when the total is needed - reading two\natomics is much cheaper than updating two atomics.  And update anon_rss\nupfront, typically in memory.c, not tucked away in page_add_anon_rmap.\n\nSigned-off-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": "fc2acab31be8e869b2d5f6de12f557f6f054f19c",
      "tree": "60cf419f5e88c3c46d39675a14649ea1e5849f03",
      "parents": [
        "4d6ddfa9242bc3d27fb0f7248f6fdee0299c731f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:03 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:37 2005 -0700"
      },
      "message": "[PATCH] mm: tlb_finish_mmu forget rss\n\nzap_pte_range has been counting the pages it frees in tlb-\u003efreed, then\ntlb_finish_mmu has used that to update the mm\u0027s rss.  That got stranger when I\nadded anon_rss, yet updated it by a different route; and stranger when rss and\nanon_rss became mm_counters with special access macros.  And it would no\nlonger be viable if we\u0027re relying on page_table_lock to stabilize the\nmm_counter, but calling tlb_finish_mmu outside that lock.\n\nRemove the mmu_gather\u0027s freed field, let tlb_finish_mmu stick to its own\nbusiness, just decrement the rss mm_counter in zap_pte_range (yes, there was\nsome point to batching the update, and a subsequent patch restores that).  And\nforget the anal paranoia of first reading the counter to avoid going negative\n- if rss does go negative, just fix that bug.\n\nRemove the mmu_gather\u0027s flushes and avoided_flushes from arm and arm26: no use\nwas being made of them.  But arm26 alone was actually using the freed, in the\nway some others use need_flush: give it a need_flush.  arm26 seems to prefer\nspaces to tabs here: respect that.\n\nSigned-off-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": "4d6ddfa9242bc3d27fb0f7248f6fdee0299c731f",
      "tree": "da5b753df64e7163a35487005e50a3b90b0b0b9b",
      "parents": [
        "15a23ffa2fc91cebdac44d4aee994f59d5c28dc0"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:02 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:37 2005 -0700"
      },
      "message": "[PATCH] mm: tlb_is_full_mm was obscure\n\ntlb_is_full_mm?  What does that mean?  The TLB is full?  No, it means that the\nmm\u0027s last user has gone and the whole mm is being torn down.  And it\u0027s an\ninline function because sparc64 uses a different (slightly better)\n\"tlb_frozen\" name for the flag others call \"fullmm\".\n\nAnd now the ptep_get_and_clear_full macro used in zap_pte_range refers\ndirectly to tlb-\u003efullmm, which would be wrong for sparc64.  Rather than\ncorrect that, I\u0027d prefer to scrap tlb_is_full_mm altogether, and change\nsparc64 to just use the same poor name as everyone else - is that okay?\n\nSigned-off-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": "65500d234e74fc4e8f18e1a429bc24e51e75de4a",
      "tree": "2bae8c3622b6537dbd142ba2744c7cc9430d3b69",
      "parents": [
        "7c1fd6b964860cdcf44b6b98d7dcd8cc16a0a26d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:15:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:37 2005 -0700"
      },
      "message": "[PATCH] mm: page fault handlers tidyup\n\nImpose a little more consistency on the page fault handlers do_wp_page,\ndo_swap_page, do_anonymous_page, do_no_page, do_file_page: why not pass their\narguments in the same order, called the same names?\n\nbreak_cow is all very well, but what it did was inlined elsewhere: easier to\ncompare if it\u0027s brought back into do_wp_page.\n\ndo_file_page\u0027s fallback to do_no_page dates from a time when we were testing\npte_file by using it wherever possible: currently it\u0027s peculiar to nonlinear\nvmas, so just check that.  BUG_ON if not?  Better not, it\u0027s probably page\ntable corruption, so just show the pte: hmm, there\u0027s a pte_ERROR macro, let\u0027s\nuse that for do_wp_page\u0027s invalid pfn too.\n\nHah!  Someone in the ppc64 world noticed pte_ERROR was unused so removed it:\nrestored (and say \"pud\" not \"pmd\" in its pud_ERROR).\n\nSigned-off-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": "72866f6f277ec0ddd6df7a3b6ecdcf59a28de115",
      "tree": "a76bb7fb8e092250c4399c20f0c7c973b77cb0bb",
      "parents": [
        "6237bcd94851e9cf0ecd2520d744779df0f5a9a6"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:15:55 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:36 2005 -0700"
      },
      "message": "[PATCH] mm: anon is already wrprotected\n\ndo_anonymous_page\u0027s pte_wrprotect causes some confusion: in such a case,\nvm_page_prot must already be forcing COW, so must omit write permission, and\nso the pte_wrprotect is redundant.  Replace it by a comment to that effect,\nand reword the comment on unuse_pte which also caused confusion.\n\nSigned-off-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": "6237bcd94851e9cf0ecd2520d744779df0f5a9a6",
      "tree": "5f34366cd527382489bd0bebbac8d39d59f1d5db",
      "parents": [
        "0c942a4539c09adf09097315cc174aefd0eeedf7"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:15:54 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:36 2005 -0700"
      },
      "message": "[PATCH] mm: zap_pte_range dont dirty anon\n\nzap_pte_range already avoids wasting time to mark_page_accessed on anon pages:\nit can also skip anon set_page_dirty - the page only needs to be marked dirty\nif shared with another mm, but that will say pte_dirty too.\n\nSigned-off-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": "e040f218bb49a6965a5b77edce05fe47a62dda39",
      "tree": "e5547e04fa312f1b87db66e4ac2b6eed885ca276",
      "parents": [
        "09ad4bbc3a5c93316d7f4ffc0c310d9cbb28c2f0"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:15:53 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:36 2005 -0700"
      },
      "message": "[PATCH] mm: copy_pte_range progress fix\n\nMy latency breaking in copy_pte_range didn\u0027t work as intended: instead of\nchecking at regularish intervals, after the first interval it checked every\ntime around the loop, too impatient to be preempted.  Fix that.\n\nSigned-off-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": "ac9b9c667c2e1194e22ebe0a441ae1c37aaa9b90",
      "tree": "3903d87d0b56a49ead39c0460b5bc0b86b040775",
      "parents": [
        "93918e9afc76717176e9e114e79cdbb602a45ae8"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Thu Oct 20 16:24:28 2005 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Oct 20 09:02:07 2005 -0700"
      },
      "message": "[PATCH] Fix handling spurious page fault for hugetlb region\n\nThis reverts commit 3359b54c8c07338f3a863d1109b42eebccdcf379 and\nreplaces it with a cleaner version that is purely based on page table\noperations, so that the synchronization between inode size and hugetlb\nmappings becomes moot.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3359b54c8c07338f3a863d1109b42eebccdcf379",
      "tree": "f91edd52c71e57ce4b46e3875c9054666ca4e24c",
      "parents": [
        "bb7e257ef8d8ba43cab356aa1cc1b20d0106d45f"
      ],
      "author": {
        "name": "Seth, Rohit",
        "email": "rohit.seth@intel.com",
        "time": "Tue Oct 18 14:15:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 19 13:56:27 2005 -0700"
      },
      "message": "[PATCH] Handle spurious page fault for hugetlb region\n\nThe hugetlb pages are currently pre-faulted.  At the time of mmap of\nhugepages, we populate the new PTEs.  It is possible that HW has already\ncached some of the unused PTEs internally.  These stale entries never\nget a chance to be purged in existing control flow.\n\nThis patch extends the check in page fault code for hugepages.  Check if\na faulted address falls with in size for the hugetlb file backing it.\nWe return VM_FAULT_MINOR for these cases (assuming that the arch\nspecific page-faulting code purges the stale entry for the archs that\nneed it).\n\nSigned-off-by: Rohit Seth \u003crohit.seth@intel.com\u003e\n\n[ This is apparently arguably an ia64 port bug. But the code won\u0027t\n  hurt, and for now it fixes a real problem on some ia64 machines ]\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5ce7852cdf07ab903fb1c72d0915ac492c6e07c7",
      "tree": "7992224cd306be5e827de0bdf6255bc87a2bf4c8",
      "parents": [
        "dd81eca83c8300c95d8a1eaf0d38f56513711535"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sat Sep 10 00:26:28 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:06:25 2005 -0700"
      },
      "message": "[PATCH] mm/filemap.c: make two functions static\n\nWith Nick Piggin \u003cnpiggin@suse.de\u003e\n\nGive some things static scope.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\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": "a600388d28419305aad3c4c0af52c223cf6fa0af",
      "tree": "c70d3d80275f189c49311183472367f45d1a1ef2",
      "parents": [
        "fa5b08d5f818063d18433194f20359ef2ae50254"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Sat Sep 03 15:55:04 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:48 2005 -0700"
      },
      "message": "[PATCH] x86: ptep_clear optimization\n\nAdd a new accessor for PTEs, which passes the full hint from the mmu_gather\nstruct; this allows architectures with hardware pagetables to optimize away\natomic PTE operations when destroying an address space.  Removing the\nlocked operation should allow better pipelining of memory access in this\nloop.  I measured an average savings of 30-35 cycles per zap_pte_range on\nthe first 500 destructions on Pentium-M, but I believe the optimization\nwould win more on older processors which still assert the bus lock on xchg\nfor an exclusive cacheline.\n\nUpdate: I made some new measurements, and this saves exactly 26 cycles over\nptep_get_and_clear on Pentium M.  On P4, with a PAE kernel, this saves 180\ncycles per ptep_get_and_clear, for a whopping 92160 cycles savings for a\nfull address space destruction.\n\npte_clear_full is not yet used, but is provided for future optimizations\n(in particular, when running inside of a hypervisor that queues page table\nupdates, the full hint allows us to avoid queueing unnecessary page table\nupdate for an address space in the process of being destroyed.\n\nThis is not a huge win, but it does help a bit, and sets the stage for\nfurther hypervisor optimization of the mm layer on all architectures.\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nCc: Christoph Lameter \u003cchristoph@lameter.com\u003e\nCc: \u003clinux-mm@kvack.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4944e76d81801b8e60ed3e7789443f210c16ed65",
      "tree": "d20096acf35b1af03eba1d043e6376a154cae054",
      "parents": [
        "d44ed4f86892e350f4b16a3489b7e7c1a9bb7ead"
      ],
      "author": {
        "name": "Paolo \u0027Blaisorblade\u0027 Giarrusso",
        "email": "blaisorblade@yahoo.it",
        "time": "Sat Sep 03 15:54:56 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:45 2005 -0700"
      },
      "message": "[PATCH] mm: remove implied vm_ops check\n\nIf !vma-\u003evm-ops we already BUG above, so retesting it is useless.  The\ncompiler cannot optimize this because BUG is a macro and is not thus marked\nnoreturn; that should possibly be fixed.\n\nSigned-off-by: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d992895ba2b27cf5adf1ba0ad6d27662adc54c5e",
      "tree": "65a4d1f18a93a9e89d43fe0b8e0b3009675c50f0",
      "parents": [
        "40193713df2cdb9c233b3fc2029ecdccb40cb1e4"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Sun Aug 28 16:49:11 2005 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Aug 29 17:25:04 2005 -0700"
      },
      "message": "[PATCH] Lazy page table copies in fork()\n\nDefer copying of ptes until fault time when it is possible to reconstruct\nthe pte from backing store. Idea from Andi Kleen and Nick Piggin.\n\nThanks to input from Rik van Riel and Linus and to Hugh for correcting\nmy blundering.\n\nRay Fucillo \u003cfucillo@intersystems.com\u003e reports:\n\n  \"I applied this latest patch to a 2.6.12 kernel and found that it does\n   resolve the problem.  Prior to the patch on this machine, I was\n   seeing about 23ms spent in fork for ever 100MB of shared memory\n   segment.\n\n   After applying the patch, fork is taking about 1ms regardless of the\n   shared memory size.\"\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a68d2ebc1581a3aec57bd032651e013fa609f530",
      "tree": "b41977c7157d7e26f37e9cb502cd1afbbddcbc17",
      "parents": [
        "f33ea7f404e592e4563b12101b7a4d17da6558d7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Aug 03 10:07:09 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Aug 03 10:07:09 2005 -0700"
      },
      "message": "Fix up recent get_user_pages() handling\n\nThe VM_FAULT_WRITE thing is an extra bit, not a valid return value, and\nhas to be treated as such by get_user_pages().\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f33ea7f404e592e4563b12101b7a4d17da6558d7",
      "tree": "1d587ad8a06cb6d2e3a187f0312c8a524ffefe53",
      "parents": [
        "5cb4cc0d8211c490537c8568001958fc76741312"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Wed Aug 03 20:24:01 2005 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Aug 03 09:12:05 2005 -0700"
      },
      "message": "[PATCH] fix get_user_pages bug\n\nChecking pte_dirty instead of pte_write in __follow_page is problematic\nfor s390, and for copy_one_pte which leaves dirty when clearing write.\n\nSo revert __follow_page to check pte_write as before, and make\ndo_wp_page pass back a special extra VM_FAULT_WRITE bit to say it has\ndone its full job: once get_user_pages receives this value, it no longer\nrequires pte_write in __follow_page.\n\nBut most callers of handle_mm_fault, in the various architectures, have\nswitch statements which do not expect this new case.  To avoid changing\nthem all in a hurry, make an inline wrapper function (using the old\nname) that masks off the new bit, and use the extended interface with\ndouble underscores.\n\nYes, we do have a call to do_wp_page from do_swap_page, but no need to\nchange that: in rare case it\u0027s needed, another do_wp_page will follow.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\n[ Cleanups by Nick Piggin ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "690dbe1ced143876d8fa56b72310738dbe079d0a",
      "tree": "4297d5647ce5e6cbe429dc506007579952c31015",
      "parents": [
        "74f9c9c258249fba3e2e78f70691528426a6c010"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Aug 01 21:11:42 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Aug 01 21:38:00 2005 -0700"
      },
      "message": "[PATCH] x86_64: access of some bad address\n\nx86_64 has a large sparse gate area between VSYSCALL_START and\nVSYSCALL_END, not all of it presently backed by pmds.  Alexander Nyberg has\nfound that in some circumstances gdb may try to ptrace here, and hit\nget_user_pages BUG_ON.  It seems odd that gdb should be accessing here, but\nit certainly shouldn\u0027t crash in this way: relax BUG_ON to -EFAULT.  Fixes\nkernel bugzilla #4801.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\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": "4ceb5db9757aaeadcf8fbbf97d76bd42aa4df0d6",
      "tree": "6a3108ceea457c21130838d49736f5e9de3badc3",
      "parents": [
        "8d894c47975f7222c5537e450e71310b395488c7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Aug 01 11:14:49 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Aug 01 11:14:49 2005 -0700"
      },
      "message": "Fix get_user_pages() race for write access\n\nThere\u0027s no real guarantee that handle_mm_fault() will always be able to\nbreak a COW situation - if an update from another thread ends up\nmodifying the page table some way, handle_mm_fault() may end up\nrequiring us to re-try the operation.\n\nThat\u0027s normally fine, but get_user_pages() ended up re-trying it as a\nread, and thus a write access could in theory end up losing the dirty\nbit or be done on a page that had not been properly COW\u0027ed.\n\nThis makes get_user_pages() always retry write accesses as write\naccesses by making \"follow_page()\" require that a writable follow has\nthe dirty bit set.  That simplifies the code and solves the race: if the\nCOW break fails for some reason, we\u0027ll just loop around and try again.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1aaf18ff9de1f37bf674236fc0779c3aaa65b998",
      "tree": "53df4d3dd0fbd81b79d5cdb63cf0d11853307a6b",
      "parents": [
        "0cfc11ed45e4c00750039e5a18c0fc0d681e19db"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed Jul 27 11:43:54 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jul 27 16:25:53 2005 -0700"
      },
      "message": "[PATCH] check_user_page_readable() deadlock fix\n\nFix bug identifued by Richard Purdie \u003crpurdie@rpsys.net\u003e.\n\noprofile calls check_user_page_readable() from interrupt context, so we\ndeadlock over various VFS locks.\n\nBut check_user_page_readable() doesn\u0027t imply either a read or a write of the\npage\u0027s contents.  Change __follow_page() so that check_user_page_readable()\ncan tell __follow_page() that we\u0027re not accessing the page\u0027s contents, and use\nthat info to avoid the troublesome lock-takings.\n\nAlso, make follow_page() inline for the single callsite in memory.c to save a\nbit of stack space.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2d15cab85b85a56cc886037cab43cc292923ff22",
      "tree": "55de7526dfb766067821d552892ad43b32f78c35",
      "parents": [
        "1e8a81c5a37907bc082025d3468718116dca1eeb"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Jun 25 14:54:33 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Jun 25 16:24:26 2005 -0700"
      },
      "message": "[PATCH] mm: fix remap_pte_range BUG\n\nOut-of-tree user of remap_pfn_range hit kernel BUG at mm/memory.c:1112!  It\npasses an unrounded size to remap_pfn_range, which was okay before 2.6.12,\nbut misses remap_pte_range\u0027s new end condition.  An audit of all the other\nptwalks confirms that this is the only one so exposed.\n\nSigned-off-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": "3d41088fa327782b14b5659dbcfff62ec704c23c",
      "tree": "bd9a25f9ae7a0e232c9d5006849905e31a9dbc92",
      "parents": [
        "363412b4f70a2ba19c76a01da7580472399312d4"
      ],
      "author": {
        "name": "Martin Waitz",
        "email": "tali@admingilde.org",
        "time": "Thu Jun 23 22:05:21 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:06:40 2005 -0700"
      },
      "message": "[PATCH] DocBook: update comments\n\nThis patch updates some comments to match code changes.\n\nSigned-off-by: Martin Waitz \u003ctali@admingilde.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d41dee369bff3b9dcb6328d4d822926c28cc2594",
      "tree": "a0405f3b7af3ebca21838a7d427bd75a067bf850",
      "parents": [
        "af705362ab6018071310c5fcd436a6b457517d5f"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Thu Jun 23 00:07:54 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:04 2005 -0700"
      },
      "message": "[PATCH] sparsemem memory model\n\nSparsemem abstracts the use of discontiguous mem_maps[].  This kind of\nmem_map[] is needed by discontiguous memory machines (like in the old\nCONFIG_DISCONTIGMEM case) as well as memory hotplug systems.  Sparsemem\nreplaces DISCONTIGMEM when enabled, and it is hoped that it can eventually\nbecome a complete replacement.\n\nA significant advantage over DISCONTIGMEM is that it\u0027s completely separated\nfrom CONFIG_NUMA.  When producing this patch, it became apparent in that NUMA\nand DISCONTIG are often confused.\n\nAnother advantage is that sparse doesn\u0027t require each NUMA node\u0027s ranges to be\ncontiguous.  It can handle overlapping ranges between nodes with no problems,\nwhere DISCONTIGMEM currently throws away that memory.\n\nSparsemem uses an array to provide different pfn_to_page() translations for\neach SECTION_SIZE area of physical memory.  This is what allows the mem_map[]\nto be chopped up.\n\nIn order to do quick pfn_to_page() operations, the section number of the page\nis encoded in page-\u003eflags.  Part of the sparsemem infrastructure enables\nsharing of these bits more dynamically (at compile-time) between the\npage_zone() and sparsemem operations.  However, on 32-bit architectures, the\nnumber of bits is quite limited, and may require growing the size of the\npage-\u003eflags type in certain conditions.  Several things might force this to\noccur: a decrease in the SECTION_SIZE (if you want to hotplug smaller areas of\nmemory), an increase in the physical address space, or an increase in the\nnumber of used page-\u003eflags.\n\nOne thing to note is that, once sparsemem is present, the NUMA node\ninformation no longer needs to be stored in the page-\u003eflags.  It might provide\nspeed increases on certain platforms and will be stored there if there is\nroom.  But, if out of room, an alternate (theoretically slower) mechanism is\nused.\n\nThis patch introduces CONFIG_FLATMEM.  It is used in almost all cases where\nthere used to be an #ifndef DISCONTIG, because SPARSEMEM and DISCONTIGMEM\noften have to compile out the same areas of code.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Martin Bligh \u003cmbligh@aracnet.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Bob Picco \u003cbob.picco@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c475a8ab625d567eacf5e30ec35d6d8704558062",
      "tree": "0971bef7b876f1b3eb160621fc2b61cb5313827b",
      "parents": [
        "d296e9cd02c92e576ecce5344026a4df4353cdb2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jun 21 17:15:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 18:46:21 2005 -0700"
      },
      "message": "[PATCH] can_share_swap_page: use page_mapcount\n\nRemember that ironic get_user_pages race?  when the raised page_count on a\npage swapped out led do_wp_page to decide that it had to copy on write, so\nsubstituted a different page into userspace.  2.6.7 onwards have Andrea\u0027s\nsolution, where try_to_unmap_one backs out if it finds page_count raised.\n\nWhich works, but is unsatisfying (rmap.c has no other page_count heuristics),\nand was found a few months ago to hang an intensive page migration test.  A\nyear ago I was hesitant to engage page_mapcount, now it seems the right fix.\n\nSo remove the page_count hack from try_to_unmap_one; and use activate_page in\nunuse_mm when dropping lock, to replace its secondary effect of helping\nswapoff to make progress in that case.\n\nSimplify can_share_swap_page (now called only on anonymous pages) to check\npage_mapcount + page_swapcount \u003d\u003d 1: still needs the page lock to stabilize\ntheir (pessimistic) sum, but does not need swapper_space.tree_lock for that.\n\nIn do_swap_page, move swap_free and unlock_page below page_add_anon_rmap, to\nkeep sum on the high side, and correct when can_share_swap_page called.\n\nSigned-off-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": "d296e9cd02c92e576ecce5344026a4df4353cdb2",
      "tree": "76af62c5d2c16e89672f71f2f4c7a65aa36ff914",
      "parents": [
        "08ef472937e918875a82fd350d3de138aac50414"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jun 21 17:15:11 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 18:46:21 2005 -0700"
      },
      "message": "[PATCH] do_wp_page: cannot share file page\n\nA small optimization to do_wp_page\u0027s check for whether to avoid copy by\nreusing the page already mapped.  It can never share a cached file page,\nnor can it share a reserved page (often the empty zero page), so it\u0027s a\nwaste of time to lock and unlock in those cases.  Which nowadays can both\nbe neatly excluded by a preliminary PageAnon test.\n\nChristoph has reported that a preliminary page_count test proved valuable\nfor scalability here, but PageAnon covers more common cases all at once.\n\nSigned-off-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": "08ef472937e918875a82fd350d3de138aac50414",
      "tree": "990a503a711b82f94ad78ea5794a46992db05228",
      "parents": [
        "7c2f3fda5666c280bcd00ac3b86963270b23e796"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jun 21 17:15:10 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 18:46:21 2005 -0700"
      },
      "message": "[PATCH] get_user_pages: kill get_page_map\n\nSince its birth, get_user_pages has been calling a misguided get_page_map\nfunction.  follow_page has already returned NULL if the pfn is invalid, we\ncannot reach an invalid pfn from a validated struct page.\n\nRemove get_page_map, and the messy rewind in get_user_pages to cope with\nits failure.  Oh, and could we please call that \"struct page *page\" like\neverywhere else, instead of \"struct page *map\"?\n\nSigned-off-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": "b81074800b98ac50b64d4c8d34e8abf0fda5e3d1",
      "tree": "01b5114255fcf1ea8ea15fabe08cc9782131e684",
      "parents": [
        "c64610ba585fabb36be78782868277f3d9741a2e"
      ],
      "author": {
        "name": "Kirill Korotaev",
        "email": "dev@sw.ru",
        "time": "Mon May 16 21:53:50 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue May 17 07:59:20 2005 -0700"
      },
      "message": "[PATCH] do_swap_page() can map random data if swap read fails\n\nThere is a bug in do_swap_page(): when swap page happens to be unreadable,\npage filled with random data is mapped into user address space.  The fix is\nto check for PageUptodate and send SIGBUS in case of error.\n\nSigned-Off-By: Kirill Korotaev \u003cdev@sw.ru\u003e\nSigned-Off-By: Alexey Kuznetsov \u003ckuznet@ms2.inr.ac.ru\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": "3bf5ee95648c694bac4d13529563c230cd4fe5f2",
      "tree": "9430e6e4f4c3d586ecb7375cd780fd17694888c7",
      "parents": [
        "ee39b37b23da0b6ec53a8ebe90ff41c016f8ae27"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Apr 19 13:29:16 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org.(none)",
        "time": "Tue Apr 19 13:29:16 2005 -0700"
      },
      "message": "[PATCH] freepgt: hugetlb_free_pgd_range\n\nia64 and ppc64 had hugetlb_free_pgtables functions which were no longer being\ncalled, and it wasn\u0027t obvious what to do about them.\n\nThe ppc64 case turns out to be easy: the associated tables are noted elsewhere\nand freed later, safe to either skip its hugetlb areas or go through the\nmotions of freeing nothing.  Since ia64 does need a special case, restore to\nppc64 the special case of skipping them.\n\nThe ia64 hugetlb case has been broken since pgd_addr_end went in, though it\nprobably appeared to work okay if you just had one such area; in fact it\u0027s\nbeen broken much longer if you consider a long munmap spanning from another\nregion into the hugetlb region.\n\nIn the ia64 hugetlb region, more virtual address bits are available than in\nthe other regions, yet the page tables are structured the same way: the page\nat the bottom is larger.  Here we need to scale down each addr before passing\nit to the standard free_pgd_range.  Was about to write a hugely_scaled_down\nmacro, but found htlbpage_to_page already exists for just this purpose.  Fixed\noff-by-one in ia64 is_hugepage_only_range.\n\nUninline free_pgd_range to make it available to ia64.  Make sure the\nvma-gathering loop in free_pgtables cannot join a hugepage_only_range to any\nother (safe to join huges?  probably but don\u0027t bother).\n\nSigned-off-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": "ee39b37b23da0b6ec53a8ebe90ff41c016f8ae27",
      "tree": "4af606913ab8f95551623b788c0c66c1f5902229",
      "parents": [
        "e0da382c92626ad1d7f4b7527d19b80104d67a83"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Apr 19 13:29:15 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org.(none)",
        "time": "Tue Apr 19 13:29:15 2005 -0700"
      },
      "message": "[PATCH] freepgt: remove MM_VM_SIZE(mm)\n\nThere\u0027s only one usage of MM_VM_SIZE(mm) left, and it\u0027s a troublesome macro\nbecause mm doesn\u0027t contain the (32-bit emulation?) info needed.  But it too is\nonly needed because we ignore the end from the vma list.\n\nWe could make flush_pgtables return that end, or unmap_vmas.  Choose the\nlatter, since it\u0027s a natural fit with unmap_mapping_range_vma needing to know\nits restart addr.  This does make more than minimal change, but if unmap_vmas\nhad returned the end before, this is how we\u0027d have done it, rather than\nstoring the break_addr in zap_details.\n\nunmap_vmas used to return count of vmas scanned, but that\u0027s just debug which\nhasn\u0027t been useful in a while; and if we want the map_count 0 on exit check\nback, it can easily come from the final remove_vm_struct loop.\n\nSigned-off-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": "e0da382c92626ad1d7f4b7527d19b80104d67a83",
      "tree": "b3f455518c286ee14cb2755ced8808487bca7911",
      "parents": [
        "9f6c6fc505560465be0964eb4da1b6ca97bd3951"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Apr 19 13:29:15 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org.(none)",
        "time": "Tue Apr 19 13:29:15 2005 -0700"
      },
      "message": "[PATCH] freepgt: free_pgtables use vma list\n\nRecent woes with some arches needing their own pgd_addr_end macro; and 4-level\nclear_page_range regression since 2.6.10\u0027s clear_page_tables; and its\nlong-standing well-known inefficiency in searching throughout the higher-level\npage tables for those few entries to clear and free: all can be blamed on\nignoring the list of vmas when we free page tables.\n\nReplace exit_mmap\u0027s clear_page_range of the total user address space by\nfree_pgtables operating on the mm\u0027s vma list; unmap_region use it in the same\nway, giving floor and ceiling beyond which it may not free tables.  This\nbrings lmbench fork/exec/sh numbers back to 2.6.10 (unless preempt is enabled,\nin which case latency fixes spoil unmap_vmas throughput).\n\nBeware: the do_mmap_pgoff driver failure case must now use unmap_region\ninstead of zap_page_range, since a page table might have been allocated, and\ncan only be freed while it is touched by some vma.\n\nMove free_pgtables from mmap.c to memory.c, where its lower levels are adapted\nfrom the clear_page_range levels.  (Most of free_pgtables\u0027 old code was\nactually for a non-existent case, prev not properly set up, dating from before\nhch gave us split_vma.) Pass mmu_gather** in the public interfaces, since we\nmight want to add latency lockdrops later; but no attempt to do so yet, going\nby vma should itself reduce latency.\n\nBut what if is_hugepage_only_range?  Those ia64 and ppc64 cases need careful\nexamination: put that off until a later patch of the series.\n\nWhat of x86_64\u0027s 32bit vdso page __map_syscall32 maps outside any vma?\n\nAnd the range to sparc64\u0027s flush_tlb_pgtables?  It\u0027s less clear to me now that\nwe need to do more than is done here - every PMD_SIZE ever occupied will be\nflushed, do we really have to flush every PGDIR_SIZE ever partially occupied? \nA shame to complicate it unnecessarily.\n\nSpecial thanks to David Miller for time spent repairing my ceilings.\n\nSigned-off-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": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
