)]}'
{
  "log": [
    {
      "commit": "a5ed1ffa6c2480cdcf3f0aa945f0b8622fe4e90b",
      "tree": "60bc11afebc2ede39683e3d08531856110872d5a",
      "parents": [
        "11100b1dfb6e9444d54d38e822753f59ee42a7e6"
      ],
      "author": {
        "name": "Jeff Dike",
        "email": "jdike@addtoit.com",
        "time": "Sun May 06 14:50:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:13:00 2007 -0700"
      },
      "message": "uml: formatting fixes\n\nFormatting fixes -\n\tstyle violations\n\twhitespace breakage\n\temacs formatting comment removal\n\nSigned-off-by: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "11100b1dfb6e9444d54d38e822753f59ee42a7e6",
      "tree": "59350b393a013cbf6e240ba7985f01694aa83796",
      "parents": [
        "7a3e965abfbdd5abacd29b9a67af91aa31b5f9d3"
      ],
      "author": {
        "name": "Jeff Dike",
        "email": "jdike@addtoit.com",
        "time": "Sun May 06 14:50:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:13:00 2007 -0700"
      },
      "message": "uml: delete unused code\n\nGet rid of a bunch of unused stuff -\n\tcpu_feature had no users\n\tlinux_prog is little-used, so its declaration is moved to the\nuser for easy deletion when the whole file goes away\n\ta long-unused debugging aid in helper.c is gone\n\nSigned-off-by: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a3e965abfbdd5abacd29b9a67af91aa31b5f9d3",
      "tree": "57eecbf8ee2a58bfc7e3cb079eb2b254049215fe",
      "parents": [
        "542401d97a3251ee20d7acb2f3736d0f34b49e64"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Sun May 06 14:50:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:13:00 2007 -0700"
      },
      "message": "CRIS: remove code related to pre-2.2 kernel\n\nRemove conditionals and code related to checking for a pre-2.2 kernel.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "542401d97a3251ee20d7acb2f3736d0f34b49e64",
      "tree": "21e102adaff6df0e24989adc80ba1359396643e3",
      "parents": [
        "c65808ef769a486dc0c7c0e79069c06459054631"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@gmail.com",
        "time": "Sun May 06 14:50:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:13:00 2007 -0700"
      },
      "message": "CRIS: check for memory allocation\n\nAdd checking for allocated memory.  Indents and spaces are added to be\nfamiliar with the kernel coding style.\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@gmail.com\u003e\nAcked-by: Mikael Starvik \u003cstarvik@axis.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c65808ef769a486dc0c7c0e79069c06459054631",
      "tree": "293ae7ccacb5b718ff5b3ba9eb8a4d51caa5d9de",
      "parents": [
        "241258d1cc4d3551608364cd678d5a85239ad481"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Sun May 06 14:50:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:13:00 2007 -0700"
      },
      "message": "remove unused header file: drivers/serial/crisv10.h\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "241258d1cc4d3551608364cd678d5a85239ad481",
      "tree": "8489b00c837e01f22e84e1c7b310d3b255d9e5a1",
      "parents": [
        "edfe7a569687c2cd85e82eaecae5b260577accbb"
      ],
      "author": {
        "name": "Milind Arun Choudhary",
        "email": "milindchoudhary@gmail.com",
        "time": "Sun May 06 14:50:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "SPIN_LOCK_UNLOCKED cleanup in arch/m68k\n\nSPIN_LOCK_UNLOCKED cleanup,use __SPIN_LOCK_UNLOCKED instead\n\nSigned-off-by: Milind Arun Choudhary \u003cmilindchoudhary@gmail.com\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "edfe7a569687c2cd85e82eaecae5b260577accbb",
      "tree": "24dddb8b1222af48f32f9aefa9c57899fc26dc32",
      "parents": [
        "56f99bcb52d64d70078b41cc176dd8b6f5763108"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Sun May 06 14:50:53 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "remove unused header file: arch/m68k/atari/atasound.h\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nAcked-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56f99bcb52d64d70078b41cc176dd8b6f5763108",
      "tree": "4383e31e46975ae1c1f6c7833bed0766f762f6d5",
      "parents": [
        "9b95e43763cfdfebc1318d27e55712e7b6bfe098"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun May 06 14:50:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "swsusp: free more memory\n\nMove the definition of PAGES_FOR_IO to kernel/power/power.h and introduce\nSPARE_PAGES representing the number of pages that should be freed by the\nswsusp\u0027s memory shrinker in addition to PAGES_FOR_IO so that device drivers\ncan allocate some memory (up to 1 MB total) in their .suspend() routines\nwithout causing the suspend to fail.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9b95e43763cfdfebc1318d27e55712e7b6bfe098",
      "tree": "cc93bfba24b703948dff993c53c6b222b03b4f8c",
      "parents": [
        "a7ee2e5f5b4c9c72f4390c60ba7ea30306f47188"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun May 06 14:50:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "swsusp: fix snapshot_release\n\nRemove the leftover enable_nonboot_cpus() from snapshot_release().\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a7ee2e5f5b4c9c72f4390c60ba7ea30306f47188",
      "tree": "36a02cb5f8d559c5513beb6faebc4323257d1642",
      "parents": [
        "f0ced9b229cfbc76b5db9837b4b256b602d56610"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Sun May 06 14:50:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "kconfig: mention \u0027hibernation\u0027 not just swsusp\n\nClarify that \"software suspend\" is what\u0027s called \"hibernation\" in most user\ninterfaces, shrinking a terminology gap.  (Examples include Gnome and\nMS-Windows.)\n\nAlso provide a more succinct description of what it does, so you won\u0027t have\nto read the whole novel in Kconfig; and highlights just why the lack of\nBIOS requirements for swsusp are a big deal.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nAcked-by: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0ced9b229cfbc76b5db9837b4b256b602d56610",
      "tree": "1c9cb6b6c73579aa103ff266f1f35e6d47da223e",
      "parents": [
        "ab3bfca7abf3fd0fe41d26d839610a787aa7e587"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Sun May 06 14:50:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "power management: change /sys/power/disk display\n\nChange /sys/power/disk to display all valid modes as well as the currently\nselected one in a fashion known from the LED subsystem.\n\nThis changes userspace API, but it is apparently not used much (we asked\nsome userspace developers)\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ab3bfca7abf3fd0fe41d26d839610a787aa7e587",
      "tree": "e62e58beaf9d22d4156b27d4523c3728bf5769bc",
      "parents": [
        "b1296cc48b39355241470ef934a5e2270e3f23bd"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Sun May 06 14:50:49 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "remove software_suspend()\n\nRemove software_suspend() and all its users since\npm_suspend(PM_SUSPEND_DISK) should be equivalent and there\u0027s no point in\nhaving two interfaces for the same thing.\n\nThe patch also changes the valid_state function to return 0 (false) for\nPM_SUSPEND_DISK when SOFTWARE_SUSPEND is not configured instead of\naccepting it and having the whole thing fail later.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b1296cc48b39355241470ef934a5e2270e3f23bd",
      "tree": "cfaf24de442b9ce19414f67106461f7c4829a1a7",
      "parents": [
        "d1d241cc2c5feec057c370aa71637380b1b945d5"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun May 06 14:50:48 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "freezer: fix racy usage of try_to_freeze in kswapd\n\nCurrently we can miss freeze_process()-\u003esignal_wake_up() in kswapd() if it\nhappens between try_to_freeze() and prepare_to_wait().  To prevent this\nfrom happening we should check freezing(current) before calling schedule().\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d1d241cc2c5feec057c370aa71637380b1b945d5",
      "tree": "69c07d4c7a8b52b9ee6efba1511f3b4f8f79e6bb",
      "parents": [
        "726162b5dad154a90dad51c0185b891312de5757"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun May 06 14:50:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "swsusp: use rbtree for tracking allocated swap\n\nMake swsusp use extents instead of a bitmap to trace swap pages allocated\nfor saving the image (the tracking is only needed in case there\u0027s an error,\nso that the allocated swap pages can be released).\n\nThis should allow us to reduce the memory usage, practically always, and\nimprove performance.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "726162b5dad154a90dad51c0185b891312de5757",
      "tree": "b2313cdd19951206229889569781549777c0bfb0",
      "parents": [
        "0709db6072c2e799eba1aa61bd19e0d7f38aa2cd"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun May 06 14:50:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "freezer: remove PF_NOFREEZE from handle_initrd\n\nMake handle_initrd() call try_to_freeze() in a suitable place instead of setting\nPF_NOFREEZE for the current task.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0709db6072c2e799eba1aa61bd19e0d7f38aa2cd",
      "tree": "e348c73adbfdcb46b05b23f36dc420ecdd62ca8a",
      "parents": [
        "1525a2ad76f991eba9755f75c9b6d4d97abad25e"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun May 06 14:50:45 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "swsusp: use GFP_KERNEL for creating basic data structures\n\nMake swsusp call create_basic_memory_bitmaps() before processes are frozen, so\nthat GFP_KERNEL allocations can be made in it.  Additionally, ensure that the\nswsusp\u0027s userland interface won\u0027t be used while either pm_suspend_disk() or\nsoftware_resume() is being executed.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1525a2ad76f991eba9755f75c9b6d4d97abad25e",
      "tree": "7e5307d825e1f8a55581a0b465865b9f2cc90af6",
      "parents": [
        "04293355ac9dbe81bd01b89ca2adb58be34c2c60"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun May 06 14:50:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "swsusp: fix error paths in snapshot_open\n\nWe forget to increase device_available if there\u0027s an error in snapshot_open(),\nso the snapshot device cannot be open at all after snapshot_open() has\nreturned an error.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "04293355ac9dbe81bd01b89ca2adb58be34c2c60",
      "tree": "fa5d893fee14e27056cac71dd3e3fed9fe2167a9",
      "parents": [
        "74dfd666de861c97d47bdbd892f6d21b801d0247"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun May 06 14:50:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "mm: remove unused page flags\n\nRemove the two page flags that were previously used by swsusp and are no\nlonger needed.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "74dfd666de861c97d47bdbd892f6d21b801d0247",
      "tree": "7200946212cf546f4e5fac31db3dc97dbb144300",
      "parents": [
        "7be9823491ecbaf9700d7d3502cb4b4dd0ed868a"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun May 06 14:50:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:59 2007 -0700"
      },
      "message": "swsusp: do not use page flags\n\nMake swsusp use memory bitmaps instead of page flags for marking \u0027nosave\u0027 and\nfree pages.  This allows us to \u0027recycle\u0027 two page flags that can be used for\nother purposes.  Also, the memory needed to store the bitmaps is allocated\nwhen necessary (ie.  before the suspend) and freed after the resume which is\nmore reasonable.\n\nThe patch is designed to minimize the amount of changes and there are some\nnice simplifications and optimizations possible on top of it.  I am going to\nimplement them separately in the future.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7be9823491ecbaf9700d7d3502cb4b4dd0ed868a",
      "tree": "10f606c59837d851376823dae5d8faf50a51bde8",
      "parents": [
        "433ecb4ab312f873870b67ee374502e84f6dcf92"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun May 06 14:50:42 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "swsusp: use inline functions for changing page flags\n\nReplace direct invocations of SetPageNosave(), SetPageNosaveFree() etc.  with\ncalls to inline functions that can be changed in subsequent patches without\nmodifying the code calling them.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "433ecb4ab312f873870b67ee374502e84f6dcf92",
      "tree": "6df7459af26ba1f09bfffcf7029a838037bb595a",
      "parents": [
        "e87be1143472d841c1907e6e7ae4862a30e3595c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Sun May 06 14:50:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "fix refrigerator() vs thaw_process() race\n\nrefrigerator() can miss a wakeup, \"wait event\" loop needs a proper memory\nordering.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e87be1143472d841c1907e6e7ae4862a30e3595c",
      "tree": "6f5dc6d5f46afe518c3a871846e4807919ea6b67",
      "parents": [
        "2af0bc94a665f22975de11bddcf6c57907ce8255"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Sun May 06 14:50:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "ARM26: remove useless config option GENERIC_BUST_SPINLOCK.\n\nRemove the apparently useless config option GENERIC_BUST_SPINLOCK,\nsince nothing in the source tree refers to it.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nAcked-by: Ian Molton \u003cspyro@f2s.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2af0bc94a665f22975de11bddcf6c57907ce8255",
      "tree": "aa5fb995f34ccdda2b05a0af6380f6aa5814be62",
      "parents": [
        "ed58a593dcf6bb9853f711e56f8618f84b7b8cb2"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Sun May 06 14:50:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "srmcons: fix kmalloc(GFP_KERNEL) inside spinlock\n\nFixes http://bugzilla.kernel.org/show_bug.cgi?id\u003d8341\n\nCc: \u003cmatthias.kaehlcke@gmail.com\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ed58a593dcf6bb9853f711e56f8618f84b7b8cb2",
      "tree": "d05b03882c94f009dc388102082e1842f7a08d35",
      "parents": [
        "eb2bce7f5e7ac1ca6da434461217fadf3c688d2c"
      ],
      "author": {
        "name": "Ivan Kokshaysky",
        "email": "ink@jurassic.park.msu.ru",
        "time": "Sun May 06 14:50:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "ALPHA: \"prctl\" macros\n\nFiles:\n\ninclude/asm-alpha/thread_info.h\n\n\tProvide \"prctl\" macros for ALPHA.\n\nSigned-off-by: Jay Estabrook \u003cjay.estabrook@hp.com\u003e\nSigned-off-by: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eb2bce7f5e7ac1ca6da434461217fadf3c688d2c",
      "tree": "d8873f05125845b793cb8211c5f2bbffcc2184a8",
      "parents": [
        "180e53a71f78e72a244deb65140928d4f3d72385"
      ],
      "author": {
        "name": "Ivan Kokshaysky",
        "email": "ink@jurassic.park.msu.ru",
        "time": "Sun May 06 14:50:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "ALPHA: fix BOOTP image creation\n\nFiles:\n\narch/alpha/boot/bootpz.c\n\n\tCreate a dummy \"__kmalloc()\" to satisfy the loader; never called.\n\narch/alpha/boot/tools/objstrip.c\n\n\tRemove an include that is now (2.6.x) unnecessary.\n\nSigned-off-by: Jay Estabrook \u003cjay.estabrook@hp.com\u003e\nSigned-off-by: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "180e53a71f78e72a244deb65140928d4f3d72385",
      "tree": "fea98361521a1c64b795b8d94b0c93dab594348f",
      "parents": [
        "97a572b3b877173e284c687be34d8ae81b826160"
      ],
      "author": {
        "name": "Milind Arun Choudhary",
        "email": "milindchoudhary@gmail.com",
        "time": "Sun May 06 14:50:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "ROUND_UP macro cleanup in arch/alpha/kernel/osf_sys.c\n\nROUND_UP macro cleanup use ALIGN\n\nSigned-off-by: Milind Arun Choudhary \u003cmilindchoudhary@gmail.com\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "97a572b3b877173e284c687be34d8ae81b826160",
      "tree": "71c2db80449df6057e46940376e19813aac077db",
      "parents": [
        "c728d60455e8e8722ee08312a75f38dd7a866b5e"
      ],
      "author": {
        "name": "Yoshinori Sato",
        "email": "ysato@users.sourceforge.jp",
        "time": "Sun May 06 14:50:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "h8300: add zImage support\n\nh8300 zImage target support.\n\nSigned-off-by: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c728d60455e8e8722ee08312a75f38dd7a866b5e",
      "tree": "c848cbddc7557fa1cf00993245e562007465dadb",
      "parents": [
        "aeecf3142d82414d511135cc85f86caddfb58338"
      ],
      "author": {
        "name": "Yoshinori Sato",
        "email": "ysato@users.sourceforge.jp",
        "time": "Sun May 06 14:50:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "h8300 generic irq\n\nh8300 using generic irq handler patch.\n\nSigned-off-by: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aeecf3142d82414d511135cc85f86caddfb58338",
      "tree": "46b10252750729120ec15f03aaad773f7da80258",
      "parents": [
        "a5f6abd4f7558fea97bc4021fd0eb7dcc5d16a77"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Sun May 06 14:50:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "Convert h8/300 to generic timekeeping\n\nCurrently h8/300 does not implement sub-jiffy timekeeping, so there is no\nbenefit to having arch specific timekeeping code.\n\nThis patch simply removes those functions and enables the generic\ntimekeeping code.\n\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nAcked-by: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a5f6abd4f7558fea97bc4021fd0eb7dcc5d16a77",
      "tree": "d4e8734dd087711e46074846e481457953685586",
      "parents": [
        "8cc75c9a1498913d668b6d3559940c6837cee8bf"
      ],
      "author": {
        "name": "Wu, Bryan",
        "email": "bryan.wu@analog.com",
        "time": "Sun May 06 14:50:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "Blackfin: blackfin on-chip SPI controller driver\n\nThis patch implements the driver necessary use the Analog Devices Blackfin\nprocessor\u0027s SPI Port.\n\nSigned-off-by: Bryan Wu \u003cbryan.wu@analog.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8cc75c9a1498913d668b6d3559940c6837cee8bf",
      "tree": "1eafc75f1f5481ed809959024edb64f83c96fdf2",
      "parents": [
        "0851a2848cfd40012063ca9cf86fb67b7bebceff"
      ],
      "author": {
        "name": "Wu, Bryan",
        "email": "bryan.wu@analog.com",
        "time": "Sun May 06 14:50:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "Blackfin: on-chip RTC controller driver\n\nThis patch implements the driver necessary use the Analog Devices Blackfin\nprocessor\u0027s on-chip RTC controller.\n\nSigned-off-by: Bryan Wu \u003cbryan.wu@analog.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0851a2848cfd40012063ca9cf86fb67b7bebceff",
      "tree": "844bc5365faef4ee126970e233c7894e9a7a56a8",
      "parents": [
        "194de5612777a9ff4f96dae1932f77a5a89e5f0a"
      ],
      "author": {
        "name": "Wu, Bryan",
        "email": "bryan.wu@analog.com",
        "time": "Sun May 06 14:50:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "Blackfin: add blackfin support in smc91x ethernet controller driver\n\nAs SMC91X ethernet controller are used in blackfin STAMP 533 development\nboard, this patch add blackfin support to the smc91x linux driver.\n\nSigned-off-by: Bryan Wu \u003cbryan.wu@analog.com\u003e\nAcked-by: Jeff Garzik \u003cjeff@garzik.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "194de5612777a9ff4f96dae1932f77a5a89e5f0a",
      "tree": "2def94b88b7ce3348ecd216032490754cc7a31a0",
      "parents": [
        "1394f03221790a988afc3e4b3cb79f2e477246a9"
      ],
      "author": {
        "name": "Bryan Wu",
        "email": "bryan.wu@analog.com",
        "time": "Sun May 06 14:50:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "blackfin: serial driver\n\nThis patch implements the driver necessary use the Analog Devices Blackfin\nprocessor\u0027s Serial Port.\n\nSigned-off-by: Bryan Wu \u003cbryan.wu@analog.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Russell King \u003crmk+lkml@arm.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1394f03221790a988afc3e4b3cb79f2e477246a9",
      "tree": "2c1963c9a4f2d84a5e021307fde240c5d567cf70",
      "parents": [
        "73243284463a761e04d69d22c7516b2be7de096c"
      ],
      "author": {
        "name": "Bryan Wu",
        "email": "bryan.wu@analog.com",
        "time": "Sun May 06 14:50:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:58 2007 -0700"
      },
      "message": "blackfin architecture\n\nThis adds support for the Analog Devices Blackfin processor architecture, and\ncurrently supports the BF533, BF532, BF531, BF537, BF536, BF534, and BF561\n(Dual Core) devices, with a variety of development platforms including those\navaliable from Analog Devices (BF533-EZKit, BF533-STAMP, BF537-STAMP,\nBF561-EZKIT), and Bluetechnix!  Tinyboards.\n\nThe Blackfin architecture was jointly developed by Intel and Analog Devices\nInc.  (ADI) as the Micro Signal Architecture (MSA) core and introduced it in\nDecember of 2000.  Since then ADI has put this core into its Blackfin\nprocessor family of devices.  The Blackfin core has the advantages of a clean,\northogonal,RISC-like microprocessor instruction set.  It combines a dual-MAC\n(Multiply/Accumulate), state-of-the-art signal processing engine and\nsingle-instruction, multiple-data (SIMD) multimedia capabilities into a single\ninstruction-set architecture.\n\nThe Blackfin architecture, including the instruction set, is described by the\nADSP-BF53x/BF56x Blackfin Processor Programming Reference\nhttp://blackfin.uclinux.org/gf/download/frsrelease/29/2549/Blackfin_PRM.pdf\n\nThe Blackfin processor is already supported by major releases of gcc, and\nthere are binary and source rpms/tarballs for many architectures at:\nhttp://blackfin.uclinux.org/gf/project/toolchain/frs There is complete\ndocumentation, including \"getting started\" guides available at:\nhttp://docs.blackfin.uclinux.org/ which provides links to the sources and\npatches you will need in order to set up a cross-compiling environment for\nbfin-linux-uclibc\n\nThis patch, as well as the other patches (toolchain, distribution,\nuClibc) are actively supported by Analog Devices Inc, at:\nhttp://blackfin.uclinux.org/\n\nWe have tested this on LTP, and our test plan (including pass/fails) can\nbe found at:\nhttp://docs.blackfin.uclinux.org/doku.php?id\u003dtesting_the_linux_kernel\n\n[m.kozlowski@tuxland.pl: balance parenthesis in blackfin header files]\nSigned-off-by: Bryan Wu \u003cbryan.wu@analog.com\u003e\nSigned-off-by: Mariusz Kozlowski \u003cm.kozlowski@tuxland.pl\u003e\nSigned-off-by: Aubrey Li \u003caubrey.li@analog.com\u003e\nSigned-off-by: Jie Zhang \u003cjie.zhang@analog.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "73243284463a761e04d69d22c7516b2be7de096c",
      "tree": "1a823a613568b48d3a4db694aa02ce380643a3dc",
      "parents": [
        "906e0be197232c219197d058ef5095baa7764cd4"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Sun May 06 14:50:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "Return EPERM not ECHILD on security_task_wait failure\n\nwait* syscalls return -ECHILD even when an individual PID of a live child\nwas requested explicitly, when security_task_wait denies the operation.\nThis means that something like a broken SELinux policy can produce an\nunexpected failure that looks just like a bug with wait or ptrace or\nsomething.\n\nThis patch makes do_wait return -EACCES (or other appropriate error returned\nfrom security_task_wait() instead of -ECHILD if some children were ruled out\nsolely because security_task_wait failed.\n\n[jmorris@namei.org: switch error code to EACCES]\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nAcked-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "906e0be197232c219197d058ef5095baa7764cd4",
      "tree": "0b2401f5448ddb1b856da8c080e71e0080183c41",
      "parents": [
        "4ab688c51226188f2d4ad4f789032c107944ef89"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:50:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "page migration: Only migrate pages if allocation in the highest zone is possible\n\nAddress spaces contain an allocation flag that specifies restriction on the\nzone for pages placed in the mapping.  I.e.  some device may require pages\nto be allocated from a DMA zone.  Block devices may not be able to use\npages from HIGHMEM.\n\nMemory policies and the common use of page migration works only on the\nhighest zone.  If the address space does not allow allocation from the\nhighest zone then the pages in the address space are not migratable simply\nbecause we can only allocate memory for a specified node if we allow\nallocation for the highest zone on each node.\n\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ab688c51226188f2d4ad4f789032c107944ef89",
      "tree": "f0793bf529ada8da81a764766996db90073a020f",
      "parents": [
        "5bc98594d59672303c4c9c07262ecc373dc374da"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Sun May 06 14:50:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "slob: fix page order calculation on not 4KB page\n\nSLOB doesn\u0027t calculate correct page order when page size is not 4KB.  This\npatch fixes it with using get_order() instead of find_order() which is SLOB\nversion of get_order().\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nAcked-by: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5bc98594d59672303c4c9c07262ecc373dc374da",
      "tree": "bc9855b1448222819d75fb23e26fdcd09382e460",
      "parents": [
        "cfce66047f1893cb7d3abb0d53e65cbbd8d605f0"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Sun May 06 14:50:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "hugetlbfs: add NULL check in hugetlb_zero_setup()\n\nIf hugetlbfs module_init() fails, hugetlbfs_vfsmount is not initialized and\nshmget() with SHM_HUGETLB flag will cause NULL pointer dereference.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nAcked-by: William Irwin \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cfce66047f1893cb7d3abb0d53e65cbbd8d605f0",
      "tree": "b6e533a6b3deee686c42abf6c9117154548c0aaf",
      "parents": [
        "4f104934591ed98534b3a4c3d17d972b790e9c42"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:50:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "Slab allocators: remove useless __GFP_NO_GROW flag\n\nThere is no user remaining and I have never seen any use of that flag.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f104934591ed98534b3a4c3d17d972b790e9c42",
      "tree": "149d7ba5ab6b9b7f8a82eb3ce41cb36f28bccaf9",
      "parents": [
        "50953fe9e00ebbeffa032a565ab2f08312d51a87"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:50:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "slab allocators: Remove SLAB_CTOR_ATOMIC\n\nSLAB_CTOR atomic is never used which is no surprise since I cannot imagine\nthat one would want to do something serious in a constructor or destructor.\n In particular given that the slab allocators run with interrupts disabled.\n Actions in constructors and destructors are by their nature very limited\nand usually do not go beyond initializing variables and list operations.\n\n(The i386 pgd ctor and dtors do take a spinlock in constructor and\ndestructor.....  I think that is the furthest we go at this point.)\n\nThere is no flag passed to the destructor so removing SLAB_CTOR_ATOMIC also\nestablishes a certain symmetry.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "50953fe9e00ebbeffa032a565ab2f08312d51a87",
      "tree": "9f95f56f0b51600959a76cd88ce17f6e9c7a98a3",
      "parents": [
        "4b1d89290b62bb2db476c94c82cf7442aab440c8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:50:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "slab allocators: Remove SLAB_DEBUG_INITIAL flag\n\nI have never seen a use of SLAB_DEBUG_INITIAL.  It is only supported by\nSLAB.\n\nI think its purpose was to have a callback after an object has been freed\nto verify that the state is the constructor state again?  The callback is\nperformed before each freeing of an object.\n\nI would think that it is much easier to check the object state manually\nbefore the free.  That also places the check near the code object\nmanipulation of the object.\n\nAlso the SLAB_DEBUG_INITIAL callback is only performed if the kernel was\ncompiled with SLAB debugging on.  If there would be code in a constructor\nhandling SLAB_DEBUG_INITIAL then it would have to be conditional on\nSLAB_DEBUG otherwise it would just be dead code.  But there is no such code\nin the kernel.  I think SLUB_DEBUG_INITIAL is too problematic to make real\nuse of, difficult to understand and there are easier ways to accomplish the\nsame effect (i.e.  add debug code before kfree).\n\nThere is a related flag SLAB_CTOR_VERIFY that is frequently checked to be\nclear in fs inode caches.  Remove the pointless checks (they would even be\npointless without removeal of SLAB_DEBUG_INITIAL) from the fs constructors.\n\nThis is the last slab flag that SLUB did not support.  Remove the check for\nunimplemented flags from SLUB.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4b1d89290b62bb2db476c94c82cf7442aab440c8",
      "tree": "9db89e2dbf5a0cb222f3d042a5ad167d75df265c",
      "parents": [
        "06abdfb47ee745a4d79721de24260815ec6bca2b"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "get_unmapped_area doesn\u0027t need hugetlbfs hacks anymore\n\nRemove the hugetlbfs specific hacks in toplevel get_unmapped_area() now that\nall archs and hugetlbfs itself do the right thing for both cases.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cwilly@debian.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "06abdfb47ee745a4d79721de24260815ec6bca2b",
      "tree": "afbf3f7a0f020529317ec115d2b5f62f67c84404",
      "parents": [
        "036e08568cbee4b16e14551e9f004c3d490d6271"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "get_unmapped_area handles MAP_FIXED in generic code\n\ngeneric arch_get_unmapped_area() now handles MAP_FIXED.  Now that all\nimplementations have been fixed, change the toplevel get_unmapped_area() to\ncall into arch or drivers for the MAP_FIXED case.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cwilly@debian.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "036e08568cbee4b16e14551e9f004c3d490d6271",
      "tree": "d5dff4ed1a4ed417f36291f9e79eca8ba703c8b3",
      "parents": [
        "11300a64d08ebce03e30cac8eb58e8ce008e4bb7"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "get_unmapped_area handles MAP_FIXED in hugetlbfs\n\nGeneric hugetlb_get_unmapped_area() now handles MAP_FIXED by just calling\nprepare_hugepage_range()\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cwilly@debian.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "11300a64d08ebce03e30cac8eb58e8ce008e4bb7",
      "tree": "fb62175d28d141b51d18b2e94fd109f1d4ee20a5",
      "parents": [
        "ac35ee484df361e1aed89873a458900693effdbe"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:56 2007 -0700"
      },
      "message": "get_unmapped_area handles MAP_FIXED on x86_64\n\nHandle MAP_FIXED in x86_64 arch_get_unmapped_area(), simple case, just return\nthe address as passed in\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac35ee484df361e1aed89873a458900693effdbe",
      "tree": "7a53ac8b5f64d930a0a83ea15b6213a2c225f742",
      "parents": [
        "869e5101728fe2f307f0a3c3cf599c184f81f0ee"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:56 2007 -0700"
      },
      "message": "get_unmapped_area handles MAP_FIXED on sparc64\n\nHandle MAP_FIXED in hugetlb_get_unmapped_area on sparc64 by just using\nprepare_hugepage_range()\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "869e5101728fe2f307f0a3c3cf599c184f81f0ee",
      "tree": "e8e9f753510b78092407bf4bb8aa9387d315089e",
      "parents": [
        "afa37394d6bfc91907b0e08c902d36d848232b99"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:56 2007 -0700"
      },
      "message": "get_unmapped_area handles MAP_FIXED on parisc\n\nHandle MAP_FIXED in parisc arch_get_unmapped_area(), just return the address.\nWe might want to also check for possible cache aliasing issues now that we get\ncalled in that case (like ARM or MIPS), leave a comment for the maintainers to\npick up.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cwilly@debian.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "afa37394d6bfc91907b0e08c902d36d848232b99",
      "tree": "6b43da63c023f441a5f22bd1d767989aabb193cd",
      "parents": [
        "5a8130f2b186ac91190d1dcea875d66d08e6a1de"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:56 2007 -0700"
      },
      "message": "get_unmapped_area handles MAP_FIXED on ia64\n\nHandle MAP_FIXED in ia64 arch_get_unmapped_area and\nhugetlb_get_unmapped_area(), just call prepare_hugepage_range in the later and\nis_hugepage_only_range() in the former.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a8130f2b186ac91190d1dcea875d66d08e6a1de",
      "tree": "21966c95a546c49459211dcf36ca140537ddccda",
      "parents": [
        "2fd3bebaad9da3b3b99c46a3389099424bf7ee35"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:56 2007 -0700"
      },
      "message": "get_unmapped_area handles MAP_FIXED on i386\n\nHandle MAP_FIXED in i386 hugetlb_get_unmapped_area(), just call\nprepare_hugepage_range.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2fd3bebaad9da3b3b99c46a3389099424bf7ee35",
      "tree": "12bdfd3dd36af5d2630582753c0d7676fe2eceea",
      "parents": [
        "acec0ac0a87ca821f9d204780c2d1aa0509a6346"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:56 2007 -0700"
      },
      "message": "get_unmapped_area handles MAP_FIXED on frv\n\nHandle MAP_FIXED in arch_get_unmapped_area on frv.  Trivial case, just return\nthe address.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "acec0ac0a87ca821f9d204780c2d1aa0509a6346",
      "tree": "186b41271ef2b566d40c65bb3db517f33c7f11d5",
      "parents": [
        "4b87b3b2eb1fa2d6ac0a1400ad5fb8f4b7cbfc09"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:56 2007 -0700"
      },
      "message": "get_unmapped_area handles MAP_FIXED on arm\n\nARM already had a case for MAP_FIXED in arch_get_unmapped_area() though it was\nnot called before.  Fix the comment to reflect that it will now be called.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4b87b3b2eb1fa2d6ac0a1400ad5fb8f4b7cbfc09",
      "tree": "c9e9a0b2e5074294f4b3b20d34c57c6fa028a1ae",
      "parents": [
        "d506a7725114aaddbf982fd18621b3e0e5c27f1b"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:06 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:56 2007 -0700"
      },
      "message": "get_unmapped_area handles MAP_FIXED on alpha\n\nHandle MAP_FIXED in alpha\u0027s arch_get_unmapped_area(), simple case, just return\nthe address as passed in\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d506a7725114aaddbf982fd18621b3e0e5c27f1b",
      "tree": "ebebcac1a8d4252a738e0f0edb3e1213f7082dd6",
      "parents": [
        "2b45ab3398a0ba119b1f672c7c56fd5a431b7f0a"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Sun May 06 14:50:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "get_unmapped_area handles MAP_FIXED on powerpc\n\nThe current get_unmapped_area code calls the f_ops-\u003eget_unmapped_area or the\narch one (via the mm) only when MAP_FIXED is not passed.  That makes it\nimpossible for archs to impose proper constraints on regions of the virtual\naddress space.  To work around that, get_unmapped_area() then calls some\nhugetlbfs specific hacks.\n\nThis cause several problems, among others:\n\n- It makes it impossible for a driver or filesystem to do the same thing\n  that hugetlbfs does (for example, to allow a driver to use larger page sizes\n  to map external hardware) if that requires applying a constraint on the\n  addresses (constraining that mapping in certain regions and other mappings\n  out of those regions).\n\n- Some archs like arm, mips, sparc, sparc64, sh and sh64 already want\n  MAP_FIXED to be passed down in order to deal with aliasing issues.  The code\n  is there to handle it...  but is never called.\n\nThis series of patches moves the logic to handle MAP_FIXED down to the various\narch/driver get_unmapped_area() implementations, and then changes the generic\ncode to always call them.  The hugetlbfs hacks then disappear from the generic\ncode.\n\nSince I need to do some special 64K pages mappings for SPEs on cell, I need to\nwork around the first problem at least.  I have further patches thus\nimplementing a \"slices\" layer that handles multiple page sizes through slices\nof the address space for use by hugetlbfs, the SPE code, and possibly others,\nbut it requires that serie of patches first/\n\nThere is still a potential (but not practical) issue due to the fact that\nfilesystems/drivers implemeting g_u_a will effectively bypass all arch checks.\n This is not an issue in practice as the only filesystems/drivers using that\nhook are doing so for arch specific purposes in the first place.\n\nThere is also a problem with mremap that will completely bypass all arch\nchecks.  I\u0027ll try to address that separately, I\u0027m not 100% certain yet how,\npossibly by making it not work when the vma has a file whose f_ops has a\nget_unmapped_area callback, and by making it use is_hugepage_only_range()\nbefore expanding into a new area.\n\nAlso, I want to turn is_hugepage_only_range() into a more generic\nis_normal_page_range() as that\u0027s really what it will end up meaning when used\nin stack grow, brk grow and mremap.\n\nNone of the above \"issues\" however are introduced by this patch, they are\nalready there, so I think the patch can go ini for 2.6.22.\n\nThis patch:\n\nHandle MAP_FIXED in powerpc\u0027s arch_get_unmapped_area() in all 3\nimplementations of it.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cwilly@debian.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b45ab3398a0ba119b1f672c7c56fd5a431b7f0a",
      "tree": "302238b786d2137111244702345acf6d4a17d4b7",
      "parents": [
        "2b744c01a54fe0c9974ff1b29522f25f07084053"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Sun May 06 14:50:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "oom: fix constraint deadlock\n\nFixes a deadlock in the OOM killer for allocations that are not\n__GFP_HARDWALL.\n\nBefore the OOM killer checks for the allocation constraint, it takes\ncallback_mutex.\n\nconstrained_alloc() iterates through each zone in the allocation zonelist\nand calls cpuset_zone_allowed_softwall() to determine whether an allocation\nfor gfp_mask is possible.  If a zone\u0027s node is not in the OOM-triggering\ntask\u0027s mems_allowed, it is not exiting, and we did not fail on a\n__GFP_HARDWALL allocation, cpuset_zone_allowed_softwall() attempts to take\ncallback_mutex to check the nearest exclusive ancestor of current\u0027s cpuset.\n This results in deadlock.\n\nWe now take callback_mutex after iterating through the zonelist since we\ndon\u0027t need it yet.\n\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: Martin J. Bligh \u003cmbligh@mbligh.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b744c01a54fe0c9974ff1b29522f25f07084053",
      "tree": "6f9c7399703ad34ab35f01a55c77a1d34a5c6dc1",
      "parents": [
        "824ebef122153a03925ae0ed211b4e8568d1c8db"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Sun May 06 14:49:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "mm: fix handling of panic_on_oom when cpusets are in use\n\nThe current panic_on_oom may not work if there is a process using\ncpusets/mempolicy, because other nodes\u0027 memory may remain.  But some people\nwant failover by panic ASAP even if they are used.  This patch makes new\nsetting for its request.\n\nThis is tested on my ia64 box which has 3 nodes.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Ethan Solomita \u003csolo@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "824ebef122153a03925ae0ed211b4e8568d1c8db",
      "tree": "2a9ce9acc187b6a6985064c773cbf850ad405a07",
      "parents": [
        "f0f3980b21508bd573eff1746d469436f50a903d"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Sun May 06 14:49:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "fault injection: fix failslab with CONFIG_NUMA\n\nCurrently failslab injects failures into ____cache_alloc().  But with enabling\nCONFIG_NUMA it\u0027s not enough to let actual slab allocator functions (kmalloc,\nkmem_cache_alloc, ...) return NULL.\n\nThis patch moves fault injection hook inside of __cache_alloc() and\n__cache_alloc_node().  These are lower call path than ____cache_alloc() and\nenable to inject faulures to slab allocators with CONFIG_NUMA.\n\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0f3980b21508bd573eff1746d469436f50a903d",
      "tree": "e7e724b7db4c16e34c272c29708874fde5499cb8",
      "parents": [
        "0a31bd5f2bbb6473ef9d24f0063ca91cfa678b64"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "slab allocators: remove multiple alignment specifications\n\nIt is not necessary to tell the slab allocators to align to a cacheline\nif an explicit alignment was already specified. It is rather confusing\nto specify multiple alignments.\n\nMake sure that the call sites only use one form of alignment.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0a31bd5f2bbb6473ef9d24f0063ca91cfa678b64",
      "tree": "a945e829bf6bf7a93bf844b2ee9f2a3a2fa17c5d",
      "parents": [
        "5af60839909b8e3b28ca7cd7912fa0b23475617f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "KMEM_CACHE(): simplify slab cache creation\n\nThis patch provides a new macro\n\nKMEM_CACHE(\u003cstruct\u003e, \u003cflags\u003e)\n\nto simplify slab creation. KMEM_CACHE creates a slab with the name of the\nstruct, with the size of the struct and with the alignment of the struct.\nAdditional slab flags may be specified if necessary.\n\nExample\n\nstruct test_slab {\n\tint a,b,c;\n\tstruct list_head;\n} __cacheline_aligned_in_smp;\n\ntest_slab_cache \u003d KMEM_CACHE(test_slab, SLAB_PANIC)\n\nwill create a new slab named \"test_slab\" of the size sizeof(struct\ntest_slab) and aligned to the alignment of test slab.  If it fails then we\npanic.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5af60839909b8e3b28ca7cd7912fa0b23475617f",
      "tree": "774b068673ad7bb6fc67d29339c9a07bf12a7789",
      "parents": [
        "96018fdacbfcaf6a0694d066b525f67c24025688"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "slab allocators: Remove obsolete SLAB_MUST_HWCACHE_ALIGN\n\nThis patch was recently posted to lkml and acked by Pekka.\n\nThe flag SLAB_MUST_HWCACHE_ALIGN is\n\n1. Never checked by SLAB at all.\n\n2. A duplicate of SLAB_HWCACHE_ALIGN for SLUB\n\n3. Fulfills the role of SLAB_HWCACHE_ALIGN for SLOB.\n\nThe only remaining use is in sparc64 and ppc64 and their use there\nreflects some earlier role that the slab flag once may have had. If\nits specified then SLAB_HWCACHE_ALIGN is also specified.\n\nThe flag is confusing, inconsistent and has no purpose.\n\nRemove it.\n\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "96018fdacbfcaf6a0694d066b525f67c24025688",
      "tree": "074c841a3dfd3fbe5caecf152da58816f1fd54e9",
      "parents": [
        "f9a14399aea13830d8af6798a53207bb0a900945"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sun May 06 14:49:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "mm: optimize acorn partition truncate\n\ninvalidate_bdev() is superfluous when truncate_inode_pages() is also\ncalled.  do call invalidate_bh_lrus() though, to avoid stale pointers.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f9a14399aea13830d8af6798a53207bb0a900945",
      "tree": "b2501f1ce1d2a4564cd9a29c55705e524f594ad1",
      "parents": [
        "f98393a64ca1392130724c3acb4e3f325801d2b6"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sun May 06 14:49:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "mm: optimize kill_bdev()\n\nRemove duplicate work in kill_bdev().\n\nIt currently invalidates and then truncates the bdev\u0027s mapping.\ninvalidate_mapping_pages() will opportunistically remove pages from the\nmapping.  And truncate_inode_pages() will forcefully remove all pages.\n\nThe only thing truncate doesn\u0027t do is flush the bh lrus.  So do that\nexplicitly.  This avoids (very unlikely) but possible invalid lookup\nresults if the same bdev is quickly re-issued.\n\nIt also will prevent extreme kernel latencies which are observed when\nblockdevs which have a large amount of pagecache are unmounted, by avoiding\ninvalidate_mapping_pages() on that path.  invalidate_mapping_pages() has no\ncond_resched (it can be called under spinlock), whereas truncate_inode_pages()\nhas one.\n\n[akpm@linux-foundation.org: restore nrpages\u003d\u003d0 optimisation]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f98393a64ca1392130724c3acb4e3f325801d2b6",
      "tree": "b02838bdf84156ac923bb37b6cf5f5ed6aaa3d48",
      "parents": [
        "0a27a14a62921b438bb6f33772690d345a089be6"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sun May 06 14:49:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "mm: remove destroy_dirty_buffers from invalidate_bdev()\n\nRemove the destroy_dirty_buffers argument from invalidate_bdev(), it hasn\u0027t\nbeen used in 6 years (so akpm says).\n\nfind * -name \\*.[ch] | xargs grep -l invalidate_bdev |\nwhile read file; do\n\tquilt add $file;\n\tsed -ie \u0027s/invalidate_bdev(\\([^,]*\\),[^)]*)/invalidate_bdev(\\1)/g\u0027 $file;\ndone\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0a27a14a62921b438bb6f33772690d345a089be6",
      "tree": "3a0a23880832ded1160b60a93300f4248a7de91f",
      "parents": [
        "b4169525bc2336ea6581c6ff2aa88b2671e3b9f9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sun May 06 14:49:53 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "mm: madvise avoid exclusive mmap_sem\n\nAvoid down_write of the mmap_sem in madvise when we can help it.\n\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b4169525bc2336ea6581c6ff2aa88b2671e3b9f9",
      "tree": "1d436ed4ccfca64e00e5bf5b9d5c373fd7d956d6",
      "parents": [
        "bc0055aee40ba40627361d8ffd8530d315920f18"
      ],
      "author": {
        "name": "matze",
        "email": "matze@riseup.net",
        "time": "Sun May 06 14:49:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "include KERN_* constant in printk() calls in mm/slab.c\n\nSigned-off-by: Matthias Kaehlcke \u003cmatthias.kaehlcke@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bc0055aee40ba40627361d8ffd8530d315920f18",
      "tree": "62e4f2821b7c7202df9d6b9e9ff9c7d01070ae5c",
      "parents": [
        "3a2cba993b0a04f258ab75e15cf3f08ada268dbd"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Sun May 06 14:49:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "slob: handle SLAB_PANIC flag\n\nkmem_cache_create() for slob doesn\u0027t handle SLAB_PANIC.\n\nSigned-off-by: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3a2cba993b0a04f258ab75e15cf3f08ada268dbd",
      "tree": "7f20f6cad40c1efe18dcf5eadfb8abbc3353f9aa",
      "parents": [
        "6225e93735acaa09865bce746958f1046c2e0bc3"
      ],
      "author": {
        "name": "David Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 06 14:49:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "Quicklist support for sparc64\n\nI ported this to sparc64 as per the patch below, tested on UP SunBlade1500 and\n24 cpu Niagara T1000.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6225e93735acaa09865bce746958f1046c2e0bc3",
      "tree": "c741862fbd9f6a1fa350b08debfcfb159bb8bf71",
      "parents": [
        "c09d87517298fd01543739ba26987645deb4e6a9"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "Quicklists for page table pages\n\nOn x86_64 this cuts allocation overhead for page table pages down to a\nfraction (kernel compile / editing load.  TSC based measurement of times spend\nin each function):\n\nno quicklist\n\npte_alloc               1569048 4.3s(401ns/2.7us/179.7us)\npmd_alloc                780988 2.1s(337ns/2.7us/86.1us)\npud_alloc                780072 2.2s(424ns/2.8us/300.6us)\npgd_alloc                260022 1s(920ns/4us/263.1us)\n\nquicklist:\n\npte_alloc                452436 573.4ms(8ns/1.3us/121.1us)\npmd_alloc                196204 174.5ms(7ns/889ns/46.1us)\npud_alloc                195688 172.4ms(7ns/881ns/151.3us)\npgd_alloc                 65228 9.8ms(8ns/150ns/6.1us)\n\npgd allocations are the most complex and there we see the most dramatic\nimprovement (may be we can cut down the amount of pgds cached somewhat?).  But\neven the pte allocations still see a doubling of performance.\n\n1. Proven code from the IA64 arch.\n\n\tThe method used here has been fine tuned for years and\n\tis NUMA aware. It is based on the knowledge that accesses\n\tto page table pages are sparse in nature. Taking a page\n\toff the freelists instead of allocating a zeroed pages\n\tallows a reduction of number of cachelines touched\n\tin addition to getting rid of the slab overhead. So\n\tperformance improves. This is particularly useful if pgds\n\tcontain standard mappings. We can save on the teardown\n\tand setup of such a page if we have some on the quicklists.\n\tThis includes avoiding lists operations that are otherwise\n\tnecessary on alloc and free to track pgds.\n\n2. Light weight alternative to use slab to manage page size pages\n\n\tSlab overhead is significant and even page allocator use\n\tis pretty heavy weight. The use of a per cpu quicklist\n\tmeans that we touch only two cachelines for an allocation.\n\tThere is no need to access the page_struct (unless arch code\n\tneeds to fiddle around with it). So the fast past just\n\tmeans bringing in one cacheline at the beginning of the\n\tpage. That same cacheline may then be used to store the\n\tpage table entry. Or a second cacheline may be used\n\tif the page table entry is not in the first cacheline of\n\tthe page. The current code will zero the page which means\n\ttouching 32 cachelines (assuming 128 byte). We get down\n\tfrom 32 to 2 cachelines in the fast path.\n\n3. x86_64 gets lightweight page table page management.\n\n\tThis will allow x86_64 arch code to faster repopulate pgds\n\tand other page table entries. The list operations for pgds\n\tare reduced in the same way as for i386 to the point where\n\ta pgd is allocated from the page allocator and when it is\n\tfreed back to the page allocator. A pgd can pass through\n\tthe quicklists without having to be reinitialized.\n\n64 Consolidation of code from multiple arches\n\n\tSo far arches have their own implementation of quicklist\n\tmanagement. This patch moves that feature into the core allowing\n\tan easier maintenance and consistent management of quicklists.\n\nPage table pages have the characteristics that they are typically zero or in a\nknown state when they are freed.  This is usually the exactly same state as\nneeded after allocation.  So it makes sense to build a list of freed page\ntable pages and then consume the pages already in use first.  Those pages have\nalready been initialized correctly (thus no need to zero them) and are likely\nalready cached in such a way that the MMU can use them most effectively.  Page\ntable pages are used in a sparse way so zeroing them on allocation is not too\nuseful.\n\nSuch an implementation already exits for ia64.  Howver, that implementation\ndid not support constructors and destructors as needed by i386 / x86_64.  It\nalso only supported a single quicklist.  The implementation here has\nconstructor and destructor support as well as the ability for an arch to\nspecify how many quicklists are needed.\n\nQuicklists are defined by an arch defining CONFIG_QUICKLIST.  If more than one\nquicklist is necessary then we can define NR_QUICK for additional lists.  F.e.\n i386 needs two and thus has\n\nconfig NR_QUICK\n\tint\n\tdefault 2\n\nIf an arch has requested quicklist support then pages can be allocated\nfrom the quicklist (or from the page allocator if the quicklist is\nempty) via:\n\nquicklist_alloc(\u003cquicklist-nr\u003e, \u003cgfpflags\u003e, \u003cconstructor\u003e)\n\nPage table pages can be freed using:\n\nquicklist_free(\u003cquicklist-nr\u003e, \u003cdestructor\u003e, \u003cpage\u003e)\n\nPages must have a definite state after allocation and before\nthey are freed. If no constructor is specified then pages\nwill be zeroed on allocation and must be zeroed before they are\nfreed.\n\nIf a constructor is used then the constructor will establish\na definite page state. F.e. the i386 and x86_64 pgd constructors\nestablish certain mappings.\n\nConstructors and destructors can also be used to track the pages.\ni386 and x86_64 use a list of pgds in order to be able to dynamically\nupdate standard mappings.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c09d87517298fd01543739ba26987645deb4e6a9",
      "tree": "dddbcc938e28787ea1c411e2cc918411ffaae93a",
      "parents": [
        "352434211dad370316155d90d7dab590519f465b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:48 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "slub: add slabinfo tool\n\nAdd the tool which gets reports about slabs to the VM documentation directory.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "352434211dad370316155d90d7dab590519f465b",
      "tree": "cb0644ccbf10736243aac2a6967641197d0a2d9f",
      "parents": [
        "70d71228af9360cc4a0198ecd6351a1b34fa6d01"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "slub: user documentation\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "70d71228af9360cc4a0198ecd6351a1b34fa6d01",
      "tree": "ad85cc79ad684062cbb3cf2e56fafa7d3df65ee1",
      "parents": [
        "2086d26a05a4b5bda4a2f677bc143933bbdfa9f8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "slub: remove object activities out of checking functions\n\nMake sure that the check function really only check things and do not perform\nactivities.  Extract the tracing and object seeding out of the two check\nfunctions and place them into slab_alloc and slab_free\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2086d26a05a4b5bda4a2f677bc143933bbdfa9f8",
      "tree": "7c07b8319f80119066d9dbd0c1a0910c94a1259c",
      "parents": [
        "88a420e4e21c1ff6592a668cf4e8af42eff30bad"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "SLUB: Free slabs and sort partial slab lists in kmem_cache_shrink\n\nAt kmem_cache_shrink check if we have any empty slabs on the partial\nif so then remove them.\n\nAlso--as an anti-fragmentation measure--sort the partial slabs so that\nthe most fully allocated ones come first and the least allocated last.\n\nThe next allocations may fill up the nearly full slabs. Having the\nleast allocated slabs last gives them the maximum chance that their\nremaining objects may be freed. Thus we can hopefully minimize the\npartial slabs.\n\nI think this is the best one can do in terms antifragmentation\nmeasures. Real defragmentation (meaning moving objects out of slabs with\nthe least free objects to those that are almost full) can be implemted\nby reverse scanning through the list produced here but that would mean\nthat we need to provide a callback at slab cache creation that allows\nthe deletion or moving of an object. This will involve slab API\nchanges, so defer for now.\n\nCc: Mel Gorman \u003cmel@skynet.ie\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "88a420e4e21c1ff6592a668cf4e8af42eff30bad",
      "tree": "4e946ac5b187d13382d5e790404f7864b324b28e",
      "parents": [
        "e95eed571e85d7ad4cde73576296c615f305f59f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:45 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "slub: add ability to list alloc / free callers per slab\n\nThis patch enables listing the callers who allocated or freed objects in a\ncache.\n\nFor example to list the allocators for kmalloc-128 do\n\ncat /sys/slab/kmalloc-128/alloc_calls\n      7 sn_io_slot_fixup+0x40/0x700\n      7 sn_io_slot_fixup+0x80/0x700\n      9 sn_bus_fixup+0xe0/0x380\n      6 param_sysfs_setup+0xf0/0x280\n    276 percpu_populate+0xf0/0x1a0\n     19 __register_chrdev_region+0x30/0x360\n      8 expand_files+0x2e0/0x6e0\n      1 sys_epoll_create+0x60/0x200\n      1 __mounts_open+0x140/0x2c0\n     65 kmem_alloc+0x110/0x280\n      3 alloc_disk_node+0xe0/0x200\n     33 as_get_io_context+0x90/0x280\n     74 kobject_kset_add_dir+0x40/0x140\n     12 pci_create_bus+0x2a0/0x5c0\n      1 acpi_ev_create_gpe_block+0x120/0x9e0\n     41 con_insert_unipair+0x100/0x1c0\n      1 uart_open+0x1c0/0xba0\n      1 dma_pool_create+0xe0/0x340\n      2 neigh_table_init_no_netlink+0x260/0x4c0\n      6 neigh_parms_alloc+0x30/0x200\n      1 netlink_kernel_create+0x130/0x320\n      5 fz_hash_alloc+0x50/0xe0\n      2 sn_common_hubdev_init+0xd0/0x6e0\n     28 kernel_param_sysfs_setup+0x30/0x180\n     72 process_zones+0x70/0x2e0\n\ncat /sys/slab/kmalloc-128/free_calls\n    558 \u003cnot-available\u003e\n      3 sn_io_slot_fixup+0x600/0x700\n     84 free_fdtable_rcu+0x120/0x260\n      2 seq_release+0x40/0x60\n      6 kmem_free+0x70/0xc0\n     24 free_as_io_context+0x20/0x200\n      1 acpi_get_object_info+0x3a0/0x3e0\n      1 acpi_add_single_object+0xcf0/0x1e40\n      2 con_release_unimap+0x80/0x140\n      1 free+0x20/0x40\n\nSLAB_STORE_USER must be enabled for a slab cache by either booting with\n\"slab_debug\" or enabling user tracking specifically for the slab of interest.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e95eed571e85d7ad4cde73576296c615f305f59f",
      "tree": "6ee56b3248ccd89db45f6bd8d532005fc61cc00b",
      "parents": [
        "53e15af03be4fdaaf20802d78f141487d7272985"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "SLUB: Add MIN_PARTIAL\n\nWe leave a mininum of partial slabs on nodes when we search for\npartial slabs on other node. Define a constant for that value.\n\nThen modify slub to keep MIN_PARTIAL slabs around.\n\nThis avoids bad situations where a function frees the last object\nin a slab (which results in the page being returned to the page\nallocator) only to then allocate one again (which requires getting\na page back from the page allocator if the partial list was empty).\nKeeping a couple of slabs on the partial list reduces overhead.\n\nEmpty slabs are added to the end of the partial list to insure that\npartially allocated slabs are consumed first (defragmentation).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53e15af03be4fdaaf20802d78f141487d7272985",
      "tree": "d930a2240a9bb28187387377a699b2bf57ea579a",
      "parents": [
        "643b113849d8faa68c9f01c3c9d929bfbffd50bd"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "slub: validation of slabs (metadata and guard zones)\n\nThis enables validation of slab.  Validation means that all objects are\nchecked to see if there are redzone violations, if padding has been\noverwritten or any pointers have been corrupted.  Also checks the consistency\nof slab counters.\n\nValidation enables the detection of metadata corruption without the kernel\nhaving to execute code that actually uses (allocs/frees) and object.  It\nallows one to make sure that the slab metainformation and the guard values\naround an object have not been compromised.\n\nA single slabcache can be checked by writing a 1 to the \"validate\" file.\n\ni.e.\n\necho 1 \u003e/sys/slab/kmalloc-128/validate\n\nor use the slabinfo tool to check all slabs\n\nslabinfo -v\n\nError messages will show up in the syslog.\n\nNote that validation can only reach slabs that are on a list.  This means that\nwe are usually restricted to partial slabs and active slabs unless\nSLAB_STORE_USER is active which will build a full slab list and allows\nvalidation of slabs that are fully in use.  Booting with \"slub_debug\" set will\nenable SLAB_STORE_USER and then full diagnostic are available.\n\nNote that we attempt to push cpu slabs back to the lists when we start the\ncheck.  If the cpu slab is reactivated before we get to it (another processor\ngrabs it before we get to it) then it cannot be checked.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "643b113849d8faa68c9f01c3c9d929bfbffd50bd",
      "tree": "d8eea2326ccee49892acaa970bf015ee69a31e8a",
      "parents": [
        "77c5e2d01af871f4bfbe08feefa3d5118cb1001b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:42 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "slub: enable tracking of full slabs\n\nIf slab tracking is on then build a list of full slabs so that we can verify\nthe integrity of all slabs and are also able to built list of alloc/free\ncallers.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "77c5e2d01af871f4bfbe08feefa3d5118cb1001b",
      "tree": "434fb61e1570f0d8bab479508181e034fc6b6c45",
      "parents": [
        "b49af68ff9fc5d6e0d96704a1843968b91cc73c6"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:42 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "slub: fix object tracking\n\nObject tracking did not work the right way for several call chains. Fix this up\nby adding a new parameter to slub_alloc and slub_free that specifies the\ncaller address explicitly.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b49af68ff9fc5d6e0d96704a1843968b91cc73c6",
      "tree": "eb5e6d9425a9069cdfc45b09a1d0f61f1419d2c2",
      "parents": [
        "6d7779538f765963ced45a3fa4bed7ba8d2c277d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "Add virt_to_head_page and consolidate code in slab and slub\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6d7779538f765963ced45a3fa4bed7ba8d2c277d",
      "tree": "07d47e6ff1ab30309004e2ba0674dcabd83945c1",
      "parents": [
        "d85f33855c303acfa87fa457157cef755b6087df"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "mm: optimize compound_head() by avoiding a shared page flag\n\nThe patch adds PageTail(page) and PageHead(page) to check if a page is the\nhead or the tail of a compound page.  This is done by masking the two bits\ndescribing the state of a compound page and then comparing them.  So one\ncomparision and a branch instead of two bit checks and two branches.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d85f33855c303acfa87fa457157cef755b6087df",
      "tree": "f1184a1a24b432727b0399594ede37c7539db888",
      "parents": [
        "30520864839dc796fd314812e7036e754880b47d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "Make page-\u003eprivate usable in compound pages\n\nIf we add a new flag so that we can distinguish between the first page and the\ntail pages then we can avoid to use page-\u003eprivate in the first page.\npage-\u003eprivate \u003d\u003d page for the first page, so there is no real information in\nthere.\n\nFreeing up page-\u003eprivate makes the use of compound pages more transparent.\nThey become more usable like real pages.  Right now we have to be careful f.e.\n if we are going beyond PAGE_SIZE allocations in the slab on i386 because we\ncan then no longer use the private field.  This is one of the issues that\ncause us not to support debugging for page size slabs in SLAB.\n\nHaving page-\u003eprivate available for SLUB would allow more meta information in\nthe page struct.  I can probably avoid the 16 bit ints that I have in there\nright now.\n\nAlso if page-\u003eprivate is available then a compound page may be equipped with\nbuffer heads.  This may free up the way for filesystems to support larger\nblocks than page size.\n\nWe add PageTail as an alias of PageReclaim.  Compound pages cannot currently\nbe reclaimed.  Because of the alias one needs to check PageCompound first.\n\nThe RFC for the this approach was discussed at\nhttp://marc.info/?t\u003d117574302800001\u0026r\u003d1\u0026w\u003d2\n\n[nacc@us.ibm.com: fix hugetlbfs]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "30520864839dc796fd314812e7036e754880b47d",
      "tree": "52d9bcff74f2cb03b9f491a406fa0c7bb3b83eea",
      "parents": [
        "614410d5892af5f86d0ec14e28f9f6d5f4ac9e9b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "PowerPC: Disable SLUB for configurations in which slab page structs are modified\n\nPowerPC uses the slab allocator to manage the lowest level of the page\ntable.  In high cpu configurations we also use the page struct to split the\npage table lock.  Disallow the selection of SLUB for that case.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "614410d5892af5f86d0ec14e28f9f6d5f4ac9e9b",
      "tree": "616c8437f45590a0ca6e2efdc2a5dfb61799d0ec",
      "parents": [
        "47bfdc0d5a18a4b760ffb6a332932aaa5c0859e0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "SLUB: allocate smallest object size if the user asks for 0 bytes\n\nMakes SLUB behave like SLAB in this area to avoid issues....\n\nThrow a stack dump to alert people.\n\nAt some point the behavior should be switched back.  NULL is no memory as\nfar as I can tell and if the use asked for 0 bytes then he need to get no\nmemory.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "47bfdc0d5a18a4b760ffb6a332932aaa5c0859e0",
      "tree": "721dc3790b5300bad8ca2c011e02f210d5a20bfc",
      "parents": [
        "81819f0fc8285a2a5a921c019e3e3d7b6169d225"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "SLUB: change default alignments\n\nStructures may contain u64 items on 32 bit platforms that are only able to\naddress 64 bit items on 64 bit boundaries.  Change the mininum alignment of\nslabs to conform to those expectations.\n\nARCH_KMALLOC_MINALIGN must be changed for good since a variety of structure\nare mixed in the general slabs.\n\nARCH_SLAB_MINALIGN is changed because currently there is no consistent\nspecification of object alignment.  We may have that in the future when the\nKMEM_CACHE and related macros are used to generate slabs.  These pass the\nalignment of the structure generated by the compiler to the slab.\n\nWith KMEM_CACHE etc we could align structures that do not contain 64\nbit values to 32 bit boundaries potentially saving some memory.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "81819f0fc8285a2a5a921c019e3e3d7b6169d225",
      "tree": "47e3da44d3ef6c74ceae6c3771b191b46467bb48",
      "parents": [
        "543691a6cd70b606dd9bed5e77b120c5d9c5c506"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "SLUB core\n\nThis is a new slab allocator which was motivated by the complexity of the\nexisting code in mm/slab.c. It attempts to address a variety of concerns\nwith the existing implementation.\n\nA. Management of object queues\n\n   A particular concern was the complex management of the numerous object\n   queues in SLAB. SLUB has no such queues. Instead we dedicate a slab for\n   each allocating CPU and use objects from a slab directly instead of\n   queueing them up.\n\nB. Storage overhead of object queues\n\n   SLAB Object queues exist per node, per CPU. The alien cache queue even\n   has a queue array that contain a queue for each processor on each\n   node. For very large systems the number of queues and the number of\n   objects that may be caught in those queues grows exponentially. On our\n   systems with 1k nodes / processors we have several gigabytes just tied up\n   for storing references to objects for those queues  This does not include\n   the objects that could be on those queues. One fears that the whole\n   memory of the machine could one day be consumed by those queues.\n\nC. SLAB meta data overhead\n\n   SLAB has overhead at the beginning of each slab. This means that data\n   cannot be naturally aligned at the beginning of a slab block. SLUB keeps\n   all meta data in the corresponding page_struct. Objects can be naturally\n   aligned in the slab. F.e. a 128 byte object will be aligned at 128 byte\n   boundaries and can fit tightly into a 4k page with no bytes left over.\n   SLAB cannot do this.\n\nD. SLAB has a complex cache reaper\n\n   SLUB does not need a cache reaper for UP systems. On SMP systems\n   the per CPU slab may be pushed back into partial list but that\n   operation is simple and does not require an iteration over a list\n   of objects. SLAB expires per CPU, shared and alien object queues\n   during cache reaping which may cause strange hold offs.\n\nE. SLAB has complex NUMA policy layer support\n\n   SLUB pushes NUMA policy handling into the page allocator. This means that\n   allocation is coarser (SLUB does interleave on a page level) but that\n   situation was also present before 2.6.13. SLABs application of\n   policies to individual slab objects allocated in SLAB is\n   certainly a performance concern due to the frequent references to\n   memory policies which may lead a sequence of objects to come from\n   one node after another. SLUB will get a slab full of objects\n   from one node and then will switch to the next.\n\nF. Reduction of the size of partial slab lists\n\n   SLAB has per node partial lists. This means that over time a large\n   number of partial slabs may accumulate on those lists. These can\n   only be reused if allocator occur on specific nodes. SLUB has a global\n   pool of partial slabs and will consume slabs from that pool to\n   decrease fragmentation.\n\nG. Tunables\n\n   SLAB has sophisticated tuning abilities for each slab cache. One can\n   manipulate the queue sizes in detail. However, filling the queues still\n   requires the uses of the spin lock to check out slabs. SLUB has a global\n   parameter (min_slab_order) for tuning. Increasing the minimum slab\n   order can decrease the locking overhead. The bigger the slab order the\n   less motions of pages between per CPU and partial lists occur and the\n   better SLUB will be scaling.\n\nG. Slab merging\n\n   We often have slab caches with similar parameters. SLUB detects those\n   on boot up and merges them into the corresponding general caches. This\n   leads to more effective memory use. About 50% of all caches can\n   be eliminated through slab merging. This will also decrease\n   slab fragmentation because partial allocated slabs can be filled\n   up again. Slab merging can be switched off by specifying\n   slub_nomerge on boot up.\n\n   Note that merging can expose heretofore unknown bugs in the kernel\n   because corrupted objects may now be placed differently and corrupt\n   differing neighboring objects. Enable sanity checks to find those.\n\nH. Diagnostics\n\n   The current slab diagnostics are difficult to use and require a\n   recompilation of the kernel. SLUB contains debugging code that\n   is always available (but is kept out of the hot code paths).\n   SLUB diagnostics can be enabled via the \"slab_debug\" option.\n   Parameters can be specified to select a single or a group of\n   slab caches for diagnostics. This means that the system is running\n   with the usual performance and it is much more likely that\n   race conditions can be reproduced.\n\nI. Resiliency\n\n   If basic sanity checks are on then SLUB is capable of detecting\n   common error conditions and recover as best as possible to allow the\n   system to continue.\n\nJ. Tracing\n\n   Tracing can be enabled via the slab_debug\u003dT,\u003cslabcache\u003e option\n   during boot. SLUB will then protocol all actions on that slabcache\n   and dump the object contents on free.\n\nK. On demand DMA cache creation.\n\n   Generally DMA caches are not needed. If a kmalloc is used with\n   __GFP_DMA then just create this single slabcache that is needed.\n   For systems that have no ZONE_DMA requirement the support is\n   completely eliminated.\n\nL. Performance increase\n\n   Some benchmarks have shown speed improvements on kernbench in the\n   range of 5-10%. The locking overhead of slub is based on the\n   underlying base allocation size. If we can reliably allocate\n   larger order pages then it is possible to increase slub\n   performance much further. The anti-fragmentation patches may\n   enable further performance increases.\n\nTested on:\ni386 UP + SMP, x86_64 UP + SMP + NUMA emulation, IA64 NUMA + Simulator\n\nSLUB Boot options\n\nslub_nomerge\t\tDisable merging of slabs\nslub_min_order\u003dx\tRequire a minimum order for slab caches. This\n\t\t\tincreases the managed chunk size and therefore\n\t\t\treduces meta data and locking overhead.\nslub_min_objects\u003dx\tMininum objects per slab. Default is 8.\nslub_max_order\u003dx\tAvoid generating slabs larger than order specified.\nslub_debug\t\tEnable all diagnostics for all caches\nslub_debug\u003d\u003coptions\u003e\tEnable selective options for all caches\nslub_debug\u003d\u003co\u003e,\u003ccache\u003e\tEnable selective options for a certain set of\n\t\t\tcaches\n\nAvailable Debug options\nF\t\tDouble Free checking, sanity and resiliency\nR\t\tRed zoning\nP\t\tObject / padding poisoning\nU\t\tTrack last free / alloc\nT\t\tTrace all allocs / frees (only use for individual slabs).\n\nTo use SLUB: Apply this patch and then select SLUB as the default slab\nallocator.\n\n[hugh@veritas.com: fix an oops-causing locking error]\n[akpm@linux-foundation.org: various stupid cleanups and small fixes]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "543691a6cd70b606dd9bed5e77b120c5d9c5c506",
      "tree": "91d1033d6699e28393c7a2cae63727ac22db92ac",
      "parents": [
        "b5637e65ee2cecd344b1f8ff750013f697d3ae16"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Sun May 06 14:49:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "tty_register_driver: only allocate tty instances when defined\n\nIf device-\u003enum is zero we attempt to kmalloc() zero bytes.  When SLUB is\nenabled this returns a null pointer and take that as an allocation failure\nand fail the device register.  Check for no devices and avoid the\nallocation.\n\n[akpm: opportunistic kzalloc() conversion]\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5637e65ee2cecd344b1f8ff750013f697d3ae16",
      "tree": "1916269a4f89ceef3a157bd70368d84071c94a3b",
      "parents": [
        "c596d9f320aaf30d28c1d793ff3a976dee1db8f5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "i386: use page allocator to allocate thread_info structure\n\ni386 uses kmalloc to allocate the threadinfo structure assuming that the\nallocations result in a page sized aligned allocation.  That has worked so\nfar because SLAB exempts page sized slabs from debugging and aligns them in\nspecial ways that goes beyond the restrictions imposed by\nKMALLOC_ARCH_MINALIGN valid for other slabs in the kmalloc array.\n\nSLUB also works fine without debugging since page sized allocations neatly\nalign at page boundaries.  However, if debugging is switched on then SLUB\nwill extend the slab with debug information.  The resulting slab is not\nlonger of page size.  It will only be aligned following the requirements\nimposed by KMALLOC_ARCH_MINALIGN.  As a result the threadinfo structure may\nnot be page aligned which makes i386 fail to boot with SLUB debug on.\n\nReplace the calls to kmalloc with calls into the page allocator.\n\nAn alternate solution may be to create a custom slab cache where the\nalignment is set to PAGE_SIZE.  That would allow slub debugging to be\napplied to the threadinfo structure.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c596d9f320aaf30d28c1d793ff3a976dee1db8f5",
      "tree": "a07a482831077ef0220467fadf77218272638ddb",
      "parents": [
        "a3a02be79114b854acc555e8ed686eb84f44ae2e"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Sun May 06 14:49:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "cpusets: allow TIF_MEMDIE threads to allocate anywhere\n\nOOM killed tasks have access to memory reserves as specified by the\nTIF_MEMDIE flag in the hopes that it will quickly exit.  If such a task has\nmemory allocations constrained by cpusets, we may encounter a deadlock if a\nblocking task cannot exit because it cannot allocate the necessary memory.\n\nWe allow tasks that have the TIF_MEMDIE flag to allocate memory anywhere,\nincluding outside its cpuset restriction, so that it can quickly die\nregardless of whether it is __GFP_HARDWALL.\n\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3a02be79114b854acc555e8ed686eb84f44ae2e",
      "tree": "5d75b3766467558909213bc9d14bc90cf9dc8d62",
      "parents": [
        "3b1d92c56514987010bb0201b5c71aeb633fc4f8"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Sun May 06 14:49:31 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "slab: mark set_up_list3s() __init\n\nIt is only ever used prior to free_initmem().\n\n(It will cause a warning when we run the section checking, but that\u0027s a\nfalse-positive and it simply changes the source of an existing warning, which\nis also a false-positive)\n\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3b1d92c56514987010bb0201b5c71aeb633fc4f8",
      "tree": "f31a72692c35eb27fc94590964ba389776c0439f",
      "parents": [
        "8da3430d8a7f885c2bf65121181d76c9d290a86e"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Sun May 06 14:49:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "Do not disable interrupts when reading min_free_kbytes\n\nThe sysctl handler for min_free_kbytes calls setup_per_zone_pages_min() on\nread or write.  This function iterates through every zone and calls\nspin_lock_irqsave() on the zone LRU lock.  When reading min_free_kbytes,\nthis is a total waste of time that disables interrupts on the local\nprocessor.  It might even be noticable machines with large numbers of zones\nif a process started constantly reading min_free_kbytes.\n\nThis patch only calls setup_per_zone_pages_min() only on write. Tested on\nan x86 laptop and it did the right thing.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8da3430d8a7f885c2bf65121181d76c9d290a86e",
      "tree": "7c5b181f1aaafba569f8c8b7de9cded5dfa9164c",
      "parents": [
        "6310984694c8204ad16a2414cd58808fae68e02b"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun May 06 14:49:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "slab: NUMA kmem_cache diet\n\nSome NUMA machines have a big MAX_NUMNODES (possibly 1024), but fewer\npossible nodes.  This patch dynamically sizes the \u0027struct kmem_cache\u0027 to\nallocate only needed space.\n\nI moved nodelists[] field at the end of struct kmem_cache, and use the\nfollowing computation in kmem_cache_init()\n\ncache_cache.buffer_size \u003d offsetof(struct kmem_cache, nodelists) +\n                                 nr_node_ids * sizeof(struct kmem_list3 *);\n\nOn my two nodes x86_64 machine, kmem_cache.obj_size is now 192 instead of 704\n(This is because on x86_64, MAX_NUMNODES is 64)\n\nOn bigger NUMA setups, this might reduce the gfporder of \"cache_cache\"\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6310984694c8204ad16a2414cd58808fae68e02b",
      "tree": "9579700c6b8b99e873462018cf536c00ab76dfb6",
      "parents": [
        "364fbb29a0105863d76a1f7bbc01783a4af30a75"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun May 06 14:49:28 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "SLAB: don\u0027t allocate empty shared caches\n\nWe can avoid allocating empty shared caches and avoid unecessary check of\ncache-\u003elimit.  We save some memory.  We avoid bringing into CPU cache\nunecessary cache lines.\n\nAll accesses to l3-\u003eshared are already checking NULL pointers so this patch is\nsafe.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "364fbb29a0105863d76a1f7bbc01783a4af30a75",
      "tree": "065828ff023a95daa3b60abbb166e71f10336a64",
      "parents": [
        "6ce745ed39d35f9d547d00d406db2be7c6c175b3"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun May 06 14:49:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "SLAB: use num_possible_cpus() in enable_cpucache()\n\nThe existing comment in mm/slab.c is *perfect*, so I reproduce it :\n\n         /*\n          * CPU bound tasks (e.g. network routing) can exhibit cpu bound\n          * allocation behaviour: Most allocs on one cpu, most free operations\n          * on another cpu. For these cases, an efficient object passing between\n          * cpus is necessary. This is provided by a shared array. The array\n          * replaces Bonwick\u0027s magazine layer.\n          * On uniprocessor, it\u0027s functionally equivalent (but less efficient)\n          * to a larger limit. Thus disabled by default.\n          */\n\nAs most shiped linux kernels are now compiled with CONFIG_SMP, there is no way\na preprocessor #if can detect if the machine is UP or SMP. Better to use\nnum_possible_cpus().\n\nThis means on UP we allocate a \u0027size\u003d0 shared array\u0027, to be more efficient.\n\nAnother patch can later avoid the allocations of \u0027empty shared arrays\u0027, to\nsave some memory.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ce745ed39d35f9d547d00d406db2be7c6c175b3",
      "tree": "16f471389c9f619c37891fdb6e1843e1f2721c78",
      "parents": [
        "ec0f16372277052a29a6c17527c6cae5e898b3fd"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun May 06 14:49:26 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "readahead: code cleanup\n\nRename file_ra_state.prev_page to prev_index and file_ra_state.offset to\nprev_offset.  Also update of prev_index in do_generic_mapping_read() is now\nmoved close to the update of prev_offset.\n\n[wfg@mail.ustc.edu.cn: fix it]\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: WU Fengguang \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ec0f16372277052a29a6c17527c6cae5e898b3fd",
      "tree": "35636edac6ed01baf301f3aca96f090caae82c9d",
      "parents": [
        "b813e931b4c8235bb42e301096ea97dbdee3e8fe"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun May 06 14:49:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "readahead: improve heuristic detecting sequential reads\n\nIntroduce ra.offset and store in it an offset where the previous read\nended.  This way we can detect whether reads are really sequential (and\nthus we should not mark the page as accessed repeatedly) or whether they\nare random and just happen to be in the same page (and the page should\nreally be marked accessed again).\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: WU Fengguang \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b813e931b4c8235bb42e301096ea97dbdee3e8fe",
      "tree": "f8182687bffe8e3b95bac69b2cc7fdfe674ddc53",
      "parents": [
        "f79f177c25016647cc92ffac8afa7cb96ce47011"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Sun May 06 14:49:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "smaps: add clear_refs file to clear reference\n\nAdds /proc/pid/clear_refs.  When any non-zero number is written to this file,\npte_mkold() and ClearPageReferenced() is called for each pte and its\ncorresponding page, respectively, in that task\u0027s VMAs.  This file is only\nwritable by the user who owns the task.\n\nIt is now possible to measure _approximately_ how much memory a task is using\nby clearing the reference bits with\n\n\techo 1 \u003e /proc/pid/clear_refs\n\nand checking the reference count for each VMA from the /proc/pid/smaps output\nat a measured time interval.  For example, to observe the approximate change\nin memory footprint for a task, write a script that clears the references\n(echo 1 \u003e /proc/pid/clear_refs), sleeps, and then greps for Pgs_Referenced and\nextracts the size in kB.  Add the sizes for each VMA together for the total\nreferenced footprint.  Moments later, repeat the process and observe the\ndifference.\n\nFor example, using an efficient Mozilla:\n\n\taccumulated time\t\treferenced memory\n\t----------------\t\t-----------------\n\t\t 0 s\t\t\t\t 408 kB\n\t\t 1 s\t\t\t\t 408 kB\n\t\t 2 s\t\t\t\t 556 kB\n\t\t 3 s\t\t\t\t1028 kB\n\t\t 4 s\t\t\t\t 872 kB\n\t\t 5 s\t\t\t\t1956 kB\n\t\t 6 s\t\t\t\t 416 kB\n\t\t 7 s\t\t\t\t1560 kB\n\t\t 8 s\t\t\t\t2336 kB\n\t\t 9 s\t\t\t\t1044 kB\n\t\t10 s\t\t\t\t 416 kB\n\nThis is a valuable tool to get an approximate measurement of the memory\nfootprint for a task.\n\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\n[akpm@linux-foundation.org: build fixes]\n[mpm@selenic.com: rename for_each_pmd]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f79f177c25016647cc92ffac8afa7cb96ce47011",
      "tree": "b613be041a467fd3ffaed7ad89d8694ede780dfa",
      "parents": [
        "826fad1b93fdb4ffacfd9cd860f06140e852e377"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Sun May 06 14:49:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "smaps: add pages referenced count to smaps\n\nAdds an additional unsigned long field to struct mem_size_stats called\n\u0027referenced\u0027.  For each pte walked in the smaps code, this field is\nincremented by PAGE_SIZE if it has pte-reference bits.\n\nAn additional line was added to the /proc/pid/smaps output for each VMA to\nindicate how many pages within it are currently marked as referenced or\naccessed.\n\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "826fad1b93fdb4ffacfd9cd860f06140e852e377",
      "tree": "8135bd60f839a83521d457904e4d2578203df339",
      "parents": [
        "0013572b2ae535bfd6314f22d9aef53725ea00d8"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Sun May 06 14:49:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "smaps: extract pmd walker from smaps code\n\nExtracts the pmd walker from smaps-specific code in fs/proc/task_mmu.c.\n\nThe new struct pmd_walker includes the struct vm_area_struct of the memory to\nwalk over.  Iteration begins at the vma-\u003evm_start and completes at\nvma-\u003evm_end.  A pointer to another data structure may be stored in the private\nfield such as struct mem_size_stats, which acts as the smaps accumulator.  For\neach pmd in the VMA, the action function is called with a pointer to its\nstruct vm_area_struct, a pointer to the pmd_t, its start and end addresses,\nand the private field.\n\nThe interface for walking pmd\u0027s in a VMA for fs/proc/task_mmu.c is now:\n\n\tvoid for_each_pmd(struct vm_area_struct *vma,\n\t\t\t  void (*action)(struct vm_area_struct *vma,\n\t\t\t\t\t pmd_t *pmd, unsigned long addr,\n\t\t\t\t\t unsigned long end,\n\t\t\t\t\t void *private),\n\t\t\t  void *private);\n\nSince the pmd walker is now extracted from the smaps code, smaps_one_pmd() is\ninvoked for each pmd in the VMA.  Its behavior and efficiency is identical to\nthe existing implementation.\n\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0013572b2ae535bfd6314f22d9aef53725ea00d8",
      "tree": "0c405dfe8a106099696ed9955b4405e6d7caed70",
      "parents": [
        "10a8d6ae4b3182d6588a5809a8366343bc295c20"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Sun May 06 14:49:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "i386: use pte_update_defer in ptep_test_and_clear_{dirty,young}\n\nIf you actually clear the bit, you need to:\n\n+         pte_update_defer(vma-\u003evm_mm, addr, ptep);\n\nThe reason is, when updating PTEs, the hypervisor must be notified.  Using\natomic operations to do this is fine for all hypervisors I am aware of.\nHowever, for hypervisors which shadow page tables, if these PTE\nmodifications are not trapped, you need a post-modification call to fulfill\nthe update of the shadow page table.\n\nAcked-by: Zachary Amsden \u003czach@vmware.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "10a8d6ae4b3182d6588a5809a8366343bc295c20",
      "tree": "37a1d626c350df5f4a4234a0fcaf524f5755fe4a",
      "parents": [
        "9490991482a2091a828d997adbc088e24c310a4d"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Sun May 06 14:49:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "i386: add ptep_test_and_clear_{dirty,young}\n\nAdd ptep_test_and_clear_{dirty,young} to i386.  They advertise that they\nhave it and there is at least one place where it needs to be called without\nthe page table lock: to clear the accessed bit on write to\n/proc/pid/clear_refs.\n\nptep_clear_flush_{dirty,young} are updated to use the new functions.  The\noverall net effect to current users of ptep_clear_flush_{dirty,young} is\nthat we introduce an additional branch.\n\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9490991482a2091a828d997adbc088e24c310a4d",
      "tree": "dcdd9febee63e82cd792250a8a4c4dd8e6aab4be",
      "parents": [
        "a8127717cb24be7b8827a8d9e0ddbfde6b392146"
      ],
      "author": {
        "name": "Borislav Petkov",
        "email": "bbpetkov@yahoo.de",
        "time": "Sun May 06 14:49:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "Add unitialized_var() macro for suppressing gcc warnings\n\nIntroduce a macro for suppressing gcc from generating a warning about a\nprobable uninitialized state of a variable.\n\nExample:\n\n-\tspinlock_t *ptl;\n+\tspinlock_t *uninitialized_var(ptl);\n\nNot a happy solution, but those warnings are obnoxious.\n\n- Using the usual pointlessly-set-it-to-zero approach wastes several\n  bytes of text.\n\n- Using a macro means we can (hopefully) do something else if gcc changes\n  cause the `x \u003d x\u0027 hack to stop working\n\n- Using a macro means that people who are worried about hiding true bugs\n  can easily turn it off.\n\nSigned-off-by: Borislav Petkov \u003cbbpetkov@yahoo.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a8127717cb24be7b8827a8d9e0ddbfde6b392146",
      "tree": "3b7d5556f127263b600bbcb44437c4c1739c000a",
      "parents": [
        "14e072984179d3d421bf9ab75cc67e0961742841"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sun May 06 14:49:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "mm: simplify filemap_nopage\n\nIdentical block is duplicated twice: contrary to the comment, we have been\nre-reading the page *twice* in filemap_nopage rather than once.\n\nIf any retry logic or anything is needed, it belongs in lower levels anyway.\nOnly retry once.  Linus agrees.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "14e072984179d3d421bf9ab75cc67e0961742841"
}
