)]}'
{
  "log": [
    {
      "commit": "b5ff992b09dbe06a4a020fbb702e29ab61290cc5",
      "tree": "b23916d07465dc4a2dbd011d2497491e5e217e5d",
      "parents": [
        "08562cb27da6a1472be15898173105b46801a73b"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Mon Dec 14 18:00:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:32 2009 -0800"
      },
      "message": "vsprintf: reduce code size by avoiding extra check\n\nNo functional change, just refactor the code so that it avoid checking\n\"if (hi)\" two times in a sequence, taking advantage of previous check made.\n\nIt also reduces code size:\n   text    data     bss     dec     hex filename\n  15726       0       8   15734    3d76 vsprintf.o (ex lib/lib.a-BEFORE)\n  15710       0       8   15718    3d66 vsprintf.o (ex lib/lib.a-AFTER)\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@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": "08562cb27da6a1472be15898173105b46801a73b",
      "tree": "738e298e14771b9cf3e98389f2c0ae776f396165",
      "parents": [
        "7b9186f5eb0b1705abf7b2fbf33076a6b83f9d89"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Mon Dec 14 18:00:58 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:29 2009 -0800"
      },
      "message": "vsprintf: use TOLOWER whenever possible\n\nIt decreases code size as well:\n text    data     bss     dec     hex filename\n15758       0       8   15766    3d96 vsprintf.o (ex lib/lib.a-BEFORE)\n15726       0       8   15734    3d76 vsprintf.o (ex lib/lib.a-TOLOWER)\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@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": "7b9186f5eb0b1705abf7b2fbf33076a6b83f9d89",
      "tree": "790d988d0d745ef09f760766e94f8f9a84670aa8",
      "parents": [
        "6c356634111c5a7a48264d7c9ec28559e4be11a2"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Mon Dec 14 18:00:57 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:29 2009 -0800"
      },
      "message": "vsprintf: give it some care to please checkpatch.pl\n\nMost relevant complaints were addressed.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@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": "6c356634111c5a7a48264d7c9ec28559e4be11a2",
      "tree": "580b71e1e3764c4cc92ae9df5275b161c61f3267",
      "parents": [
        "0f4f81dce93774a447da3ceb98cce193ef84a3fa"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Mon Dec 14 18:00:56 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:29 2009 -0800"
      },
      "message": "vsprintf: pre-calculate final string length for later use\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@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": "0f4f81dce93774a447da3ceb98cce193ef84a3fa",
      "tree": "343f83bc9ed704d57f462a729eb91b100edff0c0",
      "parents": [
        "3768f0b1d18369bbb4ddc3adca791d26704e8047"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Mon Dec 14 18:00:55 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:29 2009 -0800"
      },
      "message": "vsprintf: factorize \"(null)\" string\n\nThis patchset reduces lib/lib.a code size by 482 bytes on my Core 2 with\ngcc 4.4.1 even considering that it exports a newly defined function\nskip_spaces() to drivers:\n\n   text    data     bss     dec     hex filename\n  64867     840     592   66299   102fb (TOTALS-lib.a-BEFORE)\n  64641     584     592   65817   10119 (TOTALS-lib.a-AFTER)\nand implements some code tidy up.\n\nBesides reducing lib.a size, it converts many in-tree drivers to use the\nnewly defined function, which makes another small reduction on kernel size\noverall when those drivers are used.\n\nThis patch:\n\nChange \"\u003cNULL\u003e\" to \"(null)\", unifying 3 equal strings.\nglibc also uses \"(null)\" for the same purpose.\n\nIt decreases code size by 7 bytes:\n text    data     bss     dec     hex filename\n15765       0       8   15773    3d9d vsprintf.o (ex lib/lib.a-BEFORE)\n15758       0       8   15766    3d96 vsprintf.o (ex lib/lib.a-AFTER)\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@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": "3768f0b1d18369bbb4ddc3adca791d26704e8047",
      "tree": "4994465e047d836cdf35893d0c5d6514e230db70",
      "parents": [
        "e74b98e58f57d293afa2ab86770b02981f50076e"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Dec 14 18:00:54 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:29 2009 -0800"
      },
      "message": "MAINTAINERS: Update file patterns for WOLFSON MICROELECTRONICS PMIC DRIVERS\n\nOne of the includes pointed to a non-existent directory\nAdd Documentation/hwmon/wm83??\nAdd sound/soc/codecs/wm(8350|8400).h files\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nAcked-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e74b98e58f57d293afa2ab86770b02981f50076e",
      "tree": "cae66071091dcdc1dc6f312c11ba13605d836e6a",
      "parents": [
        "b57fe924740b30cdbaaf20da8b7375f167f6ac35"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Dec 14 18:00:53 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:29 2009 -0800"
      },
      "message": "MAINTAINERS: remove file pattern from KERNEL VIRTUAL MACHINE (KVM) FOR AMD-V\n\nCommit 6c8166a77c98f473eb91e96a61c3cf78ac617278 (\"KVM: SVM: Fold kvm_svm.h\ninfo svm.c\") folded this file away.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b57fe924740b30cdbaaf20da8b7375f167f6ac35",
      "tree": "a25e05317975b175d393bbbbf410e1719f1a4c25",
      "parents": [
        "d1f28953ca338a9af6d91d5896060179142de0d1"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Dec 14 18:00:52 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:29 2009 -0800"
      },
      "message": "MAINTAINERS: rename PALM TREO section and file patterns\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Tomas Cech \u003csleep_walker@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d1f28953ca338a9af6d91d5896060179142de0d1",
      "tree": "7e5e4e484e2e09bd7fc6d34d527dfe598897c72c",
      "parents": [
        "60db31ac11e2fa35b1c343e7182fb59452c4e52e"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Dec 14 18:00:52 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:29 2009 -0800"
      },
      "message": "MAINTAINERS: mark cifs mailing list as \"moderated for non-subscribers\"\n\nIf non-subscribers post bug report to CIFS mailing list, they will get\nfollowing messages.\n\n\tYour mail to \u0027linux-cifs-client\u0027 with the subject\n\n\t    [PATCH x/x] cifs: xxxxxxxxxxxxx\n\n\tIs being held until the list moderator can review it for approval.\n\n\tThe reason it is being held:\n\n\t    Post by non-member to a members-only list\n\n\tEither the message will get posted to the list, or you will receive\n\tnotification of the moderator\u0027s decision.  If you would like to cancel\n\tthis posting, please visit the following URL:\n\nmembers-only list should be written as so in MAINTAINERS file.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Steve French \u003csfrench@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "60db31ac11e2fa35b1c343e7182fb59452c4e52e",
      "tree": "18bb51d505c8f92e6331999a1462b5fbde18cf3f",
      "parents": [
        "a8af2430f3fb997951eff3d0d51cb166b399782b"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Dec 14 18:00:50 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:29 2009 -0800"
      },
      "message": "scripts/get_maintainer.pl: support multiple VCSs - add mercurial\n\nRestructure a bit for multiple version control systems support.\n\nUse a hash for each supported VCS that contains the commands\nand patterns used to find commits, logs, and signers.\n\n--git command line options are still used for hg except for\n--git-since.  Use --hg-since instead.\n\nThe number of commits can differ for git and hg, so --rolestats\nmight be different.\n\nStyle changes: Use common push style push(@foo...), simplify a return\n\nBumped version to 0.23.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Marti Raudsepp \u003cmarti@juffo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a8af2430f3fb997951eff3d0d51cb166b399782b",
      "tree": "e7a82410bd26354ee5888ed54de563d514f85f51",
      "parents": [
        "3c7385b81f721f0e7648d5134afb2088b28f8c69"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Dec 14 18:00:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:28 2009 -0800"
      },
      "message": "scripts/get_maintainer.pl: fix --non with --git-blame and cleanups\n\nFix email matching without name --n and --git-blame\n   Using --non and --git-blame caused maintainer signature\n   matching to fail.  Fixed that by adding 3rd argument to\n   sub format_email to control show/hide name portion of address\nSlurp -f file instead of reading line-by-line for K: pattern matching.\n   Suggested by Wolfram Sang as more efficient\nRefactor git command execution\n   Break into 2 functions, execute/analyze\n   Share code between --git and --git-blame\n   Don\u0027t warn multiple times when git isn\u0027t installed\nImprove stats reporting\n   --git-min-percent and -- rolestats now count the total number of commits\n   for either the period of --git-since or if using --git-blame the commits\n   used by the current file and calculate commit % as\n      # of commits signed / total commits * 100\nCode style cleaning\n   Use consistent sub foo { my (args...) \u003d @_;\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Ben Hutchings \u003cben@decadent.org.uk\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Wolfram Sang \u003cw.sang@pengutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c7385b81f721f0e7648d5134afb2088b28f8c69",
      "tree": "d1bb0060604f39b9fc87c465b2614b22dfbd5005",
      "parents": [
        "5ada918b82399eef3afd6a71e3637697d6bd719f"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Dec 14 18:00:46 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:28 2009 -0800"
      },
      "message": "scripts/get_maintainer.pl: add --roles and --rolestats\n\n--roles shows the role of each email address, i.e. why it was selected.\n--rolestats selects --roles and adds git log/blame signers #\u0027s and %\n\nMultiple roles are possible (supporter, maintainer, git-signer...)\n\n--roles or --rolestats is meant to help identify appropriate maintainers\nto notify and should not be used with \"git send-email --cc-cmd\"\n\nExample output:\n\nExisting:\n\n$ ./scripts/get_maintainer.pl -f arch/x86/kernel/acpi/boot.c\nCorentin Chary \u003ccorentincj@iksaif.net\u003e\nKarol Kozimor \u003csziwan@users.sourceforge.net\u003e\nLen Brown \u003clen.brown@intel.com\u003e\nPavel Machek \u003cpavel@ucw.cz\u003e\nRafael J. Wysocki \u003crjw@sisk.pl\u003e\nThomas Gleixner \u003ctglx@linutronix.de\u003e\nIngo Molnar \u003cmingo@redhat.com\u003e\nH. Peter Anvin \u003chpa@zytor.com\u003e\nx86@kernel.org\nYinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nJeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nacpi4asus-user@lists.sourceforge.net\nlinux-pm@lists.linux-foundation.org\nlinux-kernel@vger.kernel.org\n\nWith --roles\n\n$ ./scripts/get_maintainer.pl --roles -f arch/x86/kernel/acpi/boot.c\nCorentin Chary \u003ccorentincj@iksaif.net\u003e (maintainer:ASUS ACPI EXTRAS...)\nKarol Kozimor \u003csziwan@users.sourceforge.net\u003e (maintainer:ASUS ACPI EXTRAS...)\nLen Brown \u003clen.brown@intel.com\u003e (supporter:SUSPEND TO RAM,git-signer)\nPavel Machek \u003cpavel@ucw.cz\u003e (supporter:SUSPEND TO RAM)\nRafael J. Wysocki \u003crjw@sisk.pl\u003e (supporter:SUSPEND TO RAM)\nThomas Gleixner \u003ctglx@linutronix.de\u003e (maintainer:X86 ARCHITECTURE...)\nIngo Molnar \u003cmingo@redhat.com\u003e (maintainer:X86 ARCHITECTURE...,git-signer)\nH. Peter Anvin \u003chpa@zytor.com\u003e (maintainer:X86 ARCHITECTURE...)\nx86@kernel.org (maintainer:X86 ARCHITECTURE...)\nYinghai Lu \u003cyhlu.kernel@gmail.com\u003e (git-signer)\nJeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e (git-signer)\nacpi4asus-user@lists.sourceforge.net (open list:ASUS ACPI EXTRAS...)\nlinux-pm@lists.linux-foundation.org (open list:SUSPEND TO RAM)\nlinux-kernel@vger.kernel.org (open list)\n\nWith --rolestats\n\n$ ./scripts/get_maintainer.pl --rolestats -f arch/x86/kernel/acpi/boot.c\nCorentin Chary \u003ccorentincj@iksaif.net\u003e (maintainer:ASUS ACPI EXTRAS...)\nKarol Kozimor \u003csziwan@users.sourceforge.net\u003e (maintainer:ASUS ACPI EXTRAS...)\nLen Brown \u003clen.brown@intel.com\u003e (supporter:SUSPEND TO RAM,git-signer:16/79\u003d20%)\nPavel Machek \u003cpavel@ucw.cz\u003e (supporter:SUSPEND TO RAM)\nRafael J. Wysocki \u003crjw@sisk.pl\u003e (supporter:SUSPEND TO RAM)\nThomas Gleixner \u003ctglx@linutronix.de\u003e (maintainer:X86 ARCHITECTURE...)\nIngo Molnar \u003cmingo@redhat.com\u003e (maintainer:X86 ARCHITECTURE...,git-signer:29/79\u003d37%)\nH. Peter Anvin \u003chpa@zytor.com\u003e (maintainer:X86 ARCHITECTURE...)\nx86@kernel.org (maintainer:X86 ARCHITECTURE...)\nYinghai Lu \u003cyhlu.kernel@gmail.com\u003e (git-signer:12/79\u003d15%)\nJeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e (git-signer:6/79\u003d8%)\nacpi4asus-user@lists.sourceforge.net (open list:ASUS ACPI EXTRAS...)\nlinux-pm@lists.linux-foundation.org (open list:SUSPEND TO RAM)\nlinux-kernel@vger.kernel.org (open list)\n\nWith --rolestats and --git-blame\n\n$ ./scripts/get_maintainer.pl --rolestats --git-blame -f arch/x86/kernel/acpi/boot.c\nCorentin Chary \u003ccorentincj@iksaif.net\u003e (maintainer:ASUS ACPI EXTRAS...)\nKarol Kozimor \u003csziwan@users.sourceforge.net\u003e (maintainer:ASUS ACPI EXTRAS...)\nLen Brown \u003clen.brown@intel.com\u003e (supporter:SUSPEND TO RAM,git-signer:16/79\u003d20%,commits:22/154\u003d14%)\nPavel Machek \u003cpavel@ucw.cz\u003e (supporter:SUSPEND TO RAM)\nRafael J. Wysocki \u003crjw@sisk.pl\u003e (supporter:SUSPEND TO RAM)\nThomas Gleixner \u003ctglx@linutronix.de\u003e (maintainer:X86 ARCHITECTURE...)\nIngo Molnar \u003cmingo@redhat.com\u003e (maintainer:X86 ARCHITECTURE...,git-signer:29/79\u003d37%,commits:36/154\u003d23%)\nH. Peter Anvin \u003chpa@zytor.com\u003e (maintainer:X86 ARCHITECTURE...)\nx86@kernel.org (maintainer:X86 ARCHITECTURE...)\nYinghai Lu \u003cyhlu.kernel@gmail.com\u003e (git-signer:12/79\u003d15%,commits:9/154\u003d6%)\nJeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e (git-signer:6/79\u003d8%)\nAndi Kleen \u003cak@suse.de\u003e (commits:11/154\u003d7%)\nAndrew Morton \u003cakpm@osdl.org\u003e (commits:10/154\u003d6%)\nacpi4asus-user@lists.sourceforge.net (open list:ASUS ACPI EXTRAS...)\nlinux-pm@lists.linux-foundation.org (open list:SUSPEND TO RAM)\nlinux-kernel@vger.kernel.org (open list)\n\nOther changes:\n\nFormat git-signers email addresses a bit to reduce bad signatures\nCommand line bad arguments emitted a verbose usage(), just show --help\nVersion number bumped to .22\n\nBen Hutchings had the idea and created a good deal of this implementation.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5ada918b82399eef3afd6a71e3637697d6bd719f",
      "tree": "9bff5251d9d21960726078c2117a0ab19ca25956",
      "parents": [
        "c95d1e53ed89b75a4d7b68d1cbae4607b1479243"
      ],
      "author": {
        "name": "Bernhard Walle",
        "email": "bernhard@bwalle.de",
        "time": "Mon Dec 14 18:00:43 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:28 2009 -0800"
      },
      "message": "vt: introduce and use vt_kmsg_redirect() function\n\nThe kernel offers with TIOCL_GETKMSGREDIRECT ioctl() the possibility to\nredirect the kernel messages to a specific console.\n\nHowever, since it\u0027s not possible to switch to the kernel message console\nafter a panic(), it would be nice if the kernel would print the panic\nmessage on the current console.\n\nThis patch series adds a new interface to access the global kmsg_redirect\nvariable by a function to be able to use it in code where\nCONFIG_VT_CONSOLE is not set (kernel/panic.c).\n\nThis patch:\n\nInstead of using and exporting a global value kmsg_redirect, introduce a\nfunction vt_kmsg_redirect() that both can set and return the console where\nmessages are printed.\n\nChange all users of kmsg_redirect (the VT code itself and kernel/power.c)\nto the new interface.\n\nThe main advantage is that vt_kmsg_redirect() can also be used when\nCONFIG_VT_CONSOLE is not set.\n\nSigned-off-by: Bernhard Walle \u003cbernhard@bwalle.de\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\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": "c95d1e53ed89b75a4d7b68d1cbae4607b1479243",
      "tree": "b82d2ef1e349a3da948fe4c7dbd56ebed0ad0e84",
      "parents": [
        "f3a57a60d3e107d17aebb9e52b61c503e5bc14f9"
      ],
      "author": {
        "name": "Andres Salomon",
        "email": "dilinger@collabora.co.uk",
        "time": "Mon Dec 14 18:00:41 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:28 2009 -0800"
      },
      "message": "cs5535: drop the Geode-specific MFGPT/GPIO code\n\nWith generic modular drivers handling all of this stuff, the\ngeode-specific code can go away.  The cs5535-gpio, cs5535-mfgpt, and\ncs5535-clockevt drivers now handle this.\n\nSigned-off-by: Andres Salomon \u003cdilinger@collabora.co.uk\u003e\nCc: Jordan Crouse \u003cjordan@cosmicpenguin.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Chris Ball \u003ccjb@laptop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f3a57a60d3e107d17aebb9e52b61c503e5bc14f9",
      "tree": "58c34bb90b20e2816ec0018eb3e5660c3ab8b5a5",
      "parents": [
        "f060f27007b393bac6e50ee6fc26d8505acf6fe4"
      ],
      "author": {
        "name": "Andres Salomon",
        "email": "dilinger@collabora.co.uk",
        "time": "Mon Dec 14 18:00:40 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:28 2009 -0800"
      },
      "message": "cs5535: define lxfb/gxfb MSRs in linux/cs5535.h\n\n..and include them in the lxfb/gxfb drivers rather than asm/geode.h (where\npossible).\n\nSigned-off-by: Andres Salomon \u003cdilinger@collabora.co.uk\u003e\nCc: Jordan Crouse \u003cjordan@cosmicpenguin.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Chris Ball \u003ccjb@laptop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f060f27007b393bac6e50ee6fc26d8505acf6fe4",
      "tree": "fd83b0c9550814dfb5fc6a726ce7b5eb1baaa6f3",
      "parents": [
        "2e8c12436f540d3c40137ebf10268803dc972f6a"
      ],
      "author": {
        "name": "Andres Salomon",
        "email": "dilinger@collabora.co.uk",
        "time": "Mon Dec 14 18:00:40 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:28 2009 -0800"
      },
      "message": "cs5535: move VSA2 checks into linux/cs5535.h\n\nSigned-off-by: Andres Salomon \u003cdilinger@collabora.co.uk\u003e\nCc: Jordan Crouse \u003cjordan@cosmicpenguin.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Chris Ball \u003ccjb@laptop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e8c12436f540d3c40137ebf10268803dc972f6a",
      "tree": "136bc34d4c88336f2dc09784406fea40ac6dfb0e",
      "parents": [
        "c30d7d2b9987e189bc6d5ec6635785b91a6ee81e"
      ],
      "author": {
        "name": "Andres Salomon",
        "email": "dilinger@collabora.co.uk",
        "time": "Mon Dec 14 18:00:39 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:28 2009 -0800"
      },
      "message": "cs5535: move the DIVIL MSR definition into linux/cs5535.h\n\nThe only thing that uses this is the reboot_fixups code.\n\nSigned-off-by: Andres Salomon \u003cdilinger@collabora.co.uk\u003e\nCc: Jordan Crouse \u003cjordan@cosmicpenguin.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Chris Ball \u003ccjb@laptop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c30d7d2b9987e189bc6d5ec6635785b91a6ee81e",
      "tree": "521d7185b8612fa6bd9589923d8da5884cc2e53e",
      "parents": [
        "82dca611bb516ec5fb7d04077733d6a4b70f52d1"
      ],
      "author": {
        "name": "Andres Salomon",
        "email": "dilinger@collabora.co.uk",
        "time": "Mon Dec 14 18:00:38 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:28 2009 -0800"
      },
      "message": "cs5535: add a generic clock event MFGPT driver\n\nThis is based on the old code in arch/x86/kernel/mfgpt_32.c, but is\nmodular and not Geode-specific.  There\u0027s no reason why the clock event\ndevice needs to be registered so early at boot; the clockevent code is\nperfectly capable of dynamic switching.\n\n[akpm@linux-foundation.org: add linux/irq.h include]\nSigned-off-by: Andres Salomon \u003cdilinger@collabora.co.uk\u003e\nCc: Jordan Crouse \u003cjordan@cosmicpenguin.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Chris Ball \u003ccjb@laptop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "82dca611bb516ec5fb7d04077733d6a4b70f52d1",
      "tree": "67e085277bcc06e0aa7bf305e586ce856ef11078",
      "parents": [
        "3c55494670745e523f69b56edb66ca0b50a470c2"
      ],
      "author": {
        "name": "Andres Salomon",
        "email": "dilinger@collabora.co.uk",
        "time": "Mon Dec 14 18:00:37 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:28 2009 -0800"
      },
      "message": "cs5535: add a generic MFGPT driver\n\nThis is based on the old code on arch/x86/kernel/mfgpt_32.c, except it\u0027s\nnot x86 specific, it\u0027s modular, and it makes use of a PCI BAR rather than\na random MSR.  Currently module unloading is not supported; it\u0027s uncertain\nwhether or not it can be made work with the hardware.\n\n[akpm@linux-foundation.org: add X86 dependency]\nSigned-off-by: Andres Salomon \u003cdilinger@collabora.co.uk\u003e\nCc: Jordan Crouse \u003cjordan@cosmicpenguin.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Chris Ball \u003ccjb@laptop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c55494670745e523f69b56edb66ca0b50a470c2",
      "tree": "557d7a2cb785a7938068ae8fee83f0b27ab9891d",
      "parents": [
        "1ea3fa7bbfbe81cfbdcc35748a57c35f9b32c5d6"
      ],
      "author": {
        "name": "Andres Salomon",
        "email": "dilinger@collabora.co.uk",
        "time": "Mon Dec 14 18:00:36 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:27 2009 -0800"
      },
      "message": "ALSA: cs5535audio: free OLPC quirks from reliance on MGEODE_LX cpu optimization\n\nPreviously, OLPC support for the mic extensions was only enabled in the\nALSA driver if CONFIG_OLPC and CONFIG_MGEODE_LX were both set.  This was\nbecause the old geode GPIO code was written in a manner that assumed\nCONFIG_MGEODE_LX.  With the new cs553x-gpio driver, this is no longer the\ncase; as such, we can drop the requirement on CONFIG_MGEODE_LX and instead\ninclude a requirement on GPIOLIB.\n\nWe use the generic GPIO API rather than the cs553x-specific API.\n\nSigned-off-by: Andres Salomon \u003cdilinger@collabora.co.uk\u003e\nCc: Takashi Iwai \u003ctiwai@suse.de\u003e\nCc: Jordan Crouse \u003cjordan@cosmicpenguin.net\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": "1ea3fa7bbfbe81cfbdcc35748a57c35f9b32c5d6",
      "tree": "e6a6100062ddfd2c55576243998ac5299376a187",
      "parents": [
        "5f0a96b044d8edaee20f4a32ef6c393599ca55f8"
      ],
      "author": {
        "name": "Tobias Mueller",
        "email": "Tobias_Mueller@twam.info",
        "time": "Mon Dec 14 18:00:35 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:27 2009 -0800"
      },
      "message": "cs5535-gpio: request function, mask \u0026 names added\n\nChanged number of gpio pins to 32 (according to datasheet)\n\nAdded mask to disable some pins\n\nAdded gpio_request for checking mask and disabling special pin functions\n\nAdded pin names\n\n[dilinger@collabora.co.uk: make printk usage consistent]\nSigned-off-by: Tobias Mueller \u003cTobias_Mueller@twam.info\u003e\nSigned-off-by: Andres Salomon \u003cdilinger@collabora.co.uk\u003e\nCc: Takashi Iwai \u003ctiwai@suse.de\u003e\nCc: Jordan Crouse \u003cjordan@cosmicpenguin.net\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Alessandro Zummo \u003calessandro.zummo@towertech.it\u003e\nSigned-off-by: Andres Salomon \u003cdilinger@collabora.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5f0a96b044d8edaee20f4a32ef6c393599ca55f8",
      "tree": "a46994e95854d1771ea6829826793f8bceb39751",
      "parents": [
        "1f2f38d89d1eced2079189cd880eeacee378370a"
      ],
      "author": {
        "name": "Andres Salomon",
        "email": "dilinger@collabora.co.uk",
        "time": "Mon Dec 14 18:00:32 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:27 2009 -0800"
      },
      "message": "cs5535-gpio: add AMD CS5535/CS5536 GPIO driver support\n\nThis creates a CS5535/CS5536 GPIO driver which uses a gpio_chip backend\n(allowing GPIO users to use the generic GPIO API if desired) while also\nallowing architecture-specific users directly (via the cs5535_gpio_*\nfunctions).\n\nTested on an OLPC machine.  Some Leemotes also use CS5536 (with a mips\ncpu), which is why this is in drivers/gpio rather than arch/x86.\nCurrently, it conflicts with older geode GPIO support; once MFGPT support\nis reworked to also be more generic, the older geode code will be removed.\n\nSigned-off-by: Andres Salomon \u003cdilinger@collabora.co.uk\u003e\nCc: Takashi Iwai \u003ctiwai@suse.de\u003e\nCc: Jordan Crouse \u003cjordan@cosmicpenguin.net\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nReviewed-by: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1f2f38d89d1eced2079189cd880eeacee378370a",
      "tree": "143d4219d4249591ef1e74688673f9b78ce06aa7",
      "parents": [
        "4ae717da8d18839487485f6ae608b8542790fdd3"
      ],
      "author": {
        "name": "Thadeu Lima de Souza Cascardo",
        "email": "cascardo@holoscopio.com",
        "time": "Mon Dec 14 18:00:31 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:27 2009 -0800"
      },
      "message": "drivers/char/misc.c: use bitmap/bitops functions for dynamic minor number allocation\n\nUse DECLARE_BITMAP(), find_first_zero_bit(), set_bit() and clear_bit()\ninstead of rewriting code to do it with the minor number dynamic\nallocation bitmap.\n\nWe need to invert the bit position to keep the code behaviour of using the\nlast minor numbers first, since we don\u0027t have a find_last_zero_bit.\n\nSigned-off-by: Thadeu Lima de Souza Cascardo \u003ccascardo@holoscopio.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.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": "4ae717da8d18839487485f6ae608b8542790fdd3",
      "tree": "9db3390a593c0335f6944fd094c8fd8f52455be8",
      "parents": [
        "603c4ba96be998a8dd7a6f9b23681c49acdf4b64"
      ],
      "author": {
        "name": "Thadeu Lima de Souza Cascardo",
        "email": "cascardo@holoscopio.com",
        "time": "Mon Dec 14 18:00:30 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:27 2009 -0800"
      },
      "message": "drivers/char/misc.c: clear allocation bit in minor bitmap when device register fails\n\nIf there\u0027s a failure creating the device (because there\u0027s already one with\nthe same name, for example), the current implementation does not clear the\nbit for the allocated minor and that number is lost for future\nallocations.\n\nSecond, the test currently in misc_deregister is broken, since it does not\ntest for the 0 minor.\n\nSigned-off-by: Thadeu Lima de Souza Cascardo \u003ccascardo@holoscopio.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.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": "603c4ba96be998a8dd7a6f9b23681c49acdf4b64",
      "tree": "1b85fc526219085ceaffca54150eee64c3aba4a0",
      "parents": [
        "9385565e20c4acf97cd8e2fd7155750e578edcc4"
      ],
      "author": {
        "name": "Phil Carmody",
        "email": "ext-phil.2.carmody@nokia.com",
        "time": "Mon Dec 14 18:00:29 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:27 2009 -0800"
      },
      "message": "err.h: add helper function to simplify pointer error checking\n\nThere are quite a few instances in the kernel of checks of pointers both\nagainst NULL and against the errno range, handling both cases identically.\nThis additional helper function would simplify such code.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Phil Carmody \u003cext-phil.2.carmody@nokia.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9385565e20c4acf97cd8e2fd7155750e578edcc4",
      "tree": "55ee76523bb308ef73a2f91942953db6b79fe1c9",
      "parents": [
        "2ea5d35a49f5c89d1d2d677fe90c71ad5a6278b6"
      ],
      "author": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Dec 14 18:00:28 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:27 2009 -0800"
      },
      "message": "ioc3/ioc4: fix error path on driver registration\n\nTwo IOC3 and IOC4 drivers have broken error paths on registration.  Fix\nthem.\n\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\nCc: Pat Gefre \u003cpfg@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": "2ea5d35a49f5c89d1d2d677fe90c71ad5a6278b6",
      "tree": "3e5eb8efe966320b93ec948c8f95674d79912c5e",
      "parents": [
        "e4c570c4cb7a95dbfafa3d016d2739bf3fdfe319"
      ],
      "author": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Mon Dec 14 18:00:27 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:27 2009 -0800"
      },
      "message": "ioc3/ioc4: various section fixes\n\nSeveral IOC3 and IOC4 drivers misuse the __devinit and __devexit section\nmarkers.  Use __init and __exit instead as appropriate, then add __devinit\nand __devexit where they really belong for PCI drivers.\n\nAlso make ioc4_serial_init static.\n\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\nCc: Pat Gefre \u003cpfg@sgi.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.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": "e4c570c4cb7a95dbfafa3d016d2739bf3fdfe319",
      "tree": "ce2be0a79fa2e8d8271426f0fc27b25e83c050b4",
      "parents": [
        "8420e7efa1cf155765c6d77c91d3e3547c7aa557"
      ],
      "author": {
        "name": "Hiroshi Shimamoto",
        "email": "h-shimamoto@ct.jp.nec.com",
        "time": "Mon Dec 14 18:00:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:27 2009 -0800"
      },
      "message": "task_struct: make journal_info conditional\n\njournal_info in task_struct is used in journaling file system only.  So\nintroduce CONFIG_FS_JOURNAL_INFO and make it conditional.\n\nSigned-off-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8420e7efa1cf155765c6d77c91d3e3547c7aa557",
      "tree": "b1de8dd59a06b0399ff94a75d81d0b7b41c92f3f",
      "parents": [
        "8a64f336bc1d4aa203b138d29d5a9c414a9fbb47"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Dec 14 18:00:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:26 2009 -0800"
      },
      "message": "Make DEBUG_BUGVERBOSE default to y\n\nIt\u0027s easy to lose useful DEBUG_BUGVERBOSE by switching EMBEDDED left and right.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\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": "8a64f336bc1d4aa203b138d29d5a9c414a9fbb47",
      "tree": "2614009dbe403eff3a35729e4b725469454faf06",
      "parents": [
        "2643434c1ad400dc417865ac37610e8d3c7c1783"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Dec 14 18:00:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:26 2009 -0800"
      },
      "message": "kernel.h: add printk_ratelimited and pr_\u003clevel\u003e_rl\n\nAdd a printk_ratelimited statement expression macro that uses a per-call\nratelimit_state so that multiple subsystems output messages are not\nsuppressed by a global __ratelimit state.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: s/_rl/_ratelimited/g]\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Naohiro Ooiwa \u003cnooiwa@miraclelinux.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nCc: 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": "2643434c1ad400dc417865ac37610e8d3c7c1783",
      "tree": "235c7cda73e53a87cf7f30e77aed5b13a21db368",
      "parents": [
        "dfc6a736d452a8c308190b618b065c2257d370ff"
      ],
      "author": {
        "name": "Thadeu Lima de Souza Cascardo",
        "email": "cascardo@holoscopio.com",
        "time": "Mon Dec 14 18:00:23 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:26 2009 -0800"
      },
      "message": "misc: remove MAC pmu function declaration from misc device class\n\nCommit 8c8709334cec803368a432a33e0f2e116d48fe07 has removed the\npmu_device_init call from misc_init, but unlike other similar commits,\nhas not removed its declaration.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dfc6a736d452a8c308190b618b065c2257d370ff",
      "tree": "129800fa31f88a5f6d520a2c0d0a64273488a3fa",
      "parents": [
        "948c1e2521979c332b21b623414cf258150f214e"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Mon Dec 14 18:00:22 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:26 2009 -0800"
      },
      "message": "kernel/sys.c: fix \"warning: do-while statement is not a compound statement\" noise\n\ndo_each_thread/while_each_thread wrap a block of code that is in this format:\n\n\tfor (...)\n\t\tdo\n\t\t\t...\n\t\twhile\n\nIf curly braces do not surround the inner loop the following warning is\ngenerated by sparse:\n\n\twarning: do-while statement is not a compound statement\n\nFix the warning by adding the braces.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "948c1e2521979c332b21b623414cf258150f214e",
      "tree": "d59049241d1396c6e7cac170b80c354fd5835f23",
      "parents": [
        "29671f22a8b6522db3b126a3fdfb208759ce46e3"
      ],
      "author": {
        "name": "Amerigo Wang",
        "email": "amwang@redhat.com",
        "time": "Mon Dec 14 18:00:22 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:26 2009 -0800"
      },
      "message": "kallsyms: remove deprecated print_fn_descriptor_symbol()\n\nAccording to feature-removal-schedule.txt, it is the time to remove\nprint_fn_descriptor_symbol().\n\nAnd a quick grep shows that it no longer has any callers.\n\nSigned-off-by: WANG Cong \u003camwang@redhat.com\u003e\nCc: Bjorn Helgaas \u003cbjorn.helgaas@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29671f22a8b6522db3b126a3fdfb208759ce46e3",
      "tree": "c3c434fc07aae30c401fe7662b8e1399b98ffdc2",
      "parents": [
        "118d52da1816471ac875bb9f1ee51737e82b1d71"
      ],
      "author": {
        "name": "Amerigo Wang",
        "email": "amwang@redhat.com",
        "time": "Mon Dec 14 18:00:21 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:26 2009 -0800"
      },
      "message": "rwsem: fix rwsem_is_locked() bugs\n\nrwsem_is_locked() tests -\u003eactivity without locks, so we should always keep\n-\u003eactivity consistent.  However, the code in __rwsem_do_wake() breaks this\nrule, it updates -\u003eactivity after _all_ readers waken up, this may give\nsome reader a wrong -\u003eactivity value, thus cause rwsem_is_locked() behaves\nwrong.\n\nQuote from Andrew:\n\n\"\n- we have one or more processes sleeping in down_read(), waiting for access.\n\n- we wake one or more processes up without altering -\u003eactivity\n\n- they start to run and they do rwsem_is_locked().  This incorrectly\n  returns \"false\", because the waker process is still crunching away in\n  __rwsem_do_wake().\n\n- the waker now alters -\u003eactivity, but it was too late.\n\"\n\nSo we need get a spinlock to protect this.  And rwsem_is_locked() should\nnot block, thus we use spin_trylock_irqsave().\n\n[akpm@linux-foundation.org: simplify code]\nReported-by: Brian Behlendorf \u003cbehlendorf1@llnl.gov\u003e\nCc: Ben Woodard \u003cbwoodard@llnl.gov\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: WANG Cong \u003camwang@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": "118d52da1816471ac875bb9f1ee51737e82b1d71",
      "tree": "b51ac58c1c7af29ea0f64aededef0caac19c8ff5",
      "parents": [
        "0b2749aa6ca40ff3fe12ebb3fdf010ebad2e9085"
      ],
      "author": {
        "name": "Amerigo Wang",
        "email": "amwang@redhat.com",
        "time": "Mon Dec 14 18:00:20 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:26 2009 -0800"
      },
      "message": "rwsem-spinlock: remove useless function exports\n\nThese functions need not to be exported, since no drivers should use them.\n\n__init_rwsem() is an exception, because init_rwsem(), which is a macro,\nis used.\n\nSigned-off-by: WANG Cong \u003camwang@redhat.com\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": "0b2749aa6ca40ff3fe12ebb3fdf010ebad2e9085",
      "tree": "c4c848da19ee1e3f1bd4f8733af7676b5b52984c",
      "parents": [
        "196a15b4ee99f627fbc2c07e58e14aab2065fa80"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Dec 14 18:00:19 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:26 2009 -0800"
      },
      "message": "kernel.h: remove initialization of bool in printk_once\n\nDon\u0027t initialize __print_once.  Invert the test to reduce initialized\ndata.\n\ndefconfig before:\t$size vmlinux\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n6976022\t 679572\t1359668\t9015262\t 898fde\tvmlinux\n\ndefconfig after:\t$size vmlinux\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n6976006\t 679508\t1359700\t9015214\t 898fae\tvmlinux\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "196a15b4ee99f627fbc2c07e58e14aab2065fa80",
      "tree": "6886bf8387be37fac4cd4b9b1e0e8109a8adf155",
      "parents": [
        "4d00928c1f02defc81afcc5cc6198581c4bd03e8"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Mon Dec 14 18:00:18 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:26 2009 -0800"
      },
      "message": "init/main.c: fix symbol shadows noise\n\nThe symbol \u0027call\u0027 is a static symbol used for initcall_debug.  This same\nsymbol name is used locally by a couple functions and produces the\nfollowing sparse warnings:\n\n\twarning: symbol \u0027call\u0027 shadows an earlier one\n\nFix this noise by renaming the local symbols.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4d00928c1f02defc81afcc5cc6198581c4bd03e8",
      "tree": "79d86f033dec3a2c5c9cfb5a9856eb9735ca92d7",
      "parents": [
        "c0f68c2fab4898bcc4671a8fb941f428856b4ad5"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Mon Dec 14 18:00:17 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:25 2009 -0800"
      },
      "message": "drivers/misc: add driver for Texas Instruments DAC7512\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nCc: \"H Hartley Sweeten\" \u003chartleys@visionengravers.com\u003e\nCc: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c0f68c2fab4898bcc4671a8fb941f428856b4ad5",
      "tree": "87cc5addf461b699b3b9c9d1931f77acf947051d",
      "parents": [
        "4eb174bee6f8623fed1af0072f1bebfc3b513a52"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Mon Dec 14 18:00:16 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:25 2009 -0800"
      },
      "message": "generic-ipi: cleanup for generic_smp_call_function_interrupt()\n\nUse smp_processor_id() instead of get_cpu() and put_cpu() in\ngeneric_smp_call_function_interrupt(), It\u0027s no need to disable preempt,\nbecause we must call generic_smp_call_function_interrupt() with interrupts\ndisabled.\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4eb174bee6f8623fed1af0072f1bebfc3b513a52",
      "tree": "9357e122a1fc99a881a0091623acc8fe8ce22112",
      "parents": [
        "00b55864bb37200d7f05143c44f5e2edfc8c4578"
      ],
      "author": {
        "name": "Michael Hennerich",
        "email": "michael.hennerich@analog.com",
        "time": "Mon Dec 14 18:00:15 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:25 2009 -0800"
      },
      "message": "ad525x_dpot: new driver for AD525x digital potentiometers\n\nThis driver supports the non-volatile digital potentiometers via I2C:\nAD5258, AD5259, AD5251, AD5252, AD5253, AD5254, and AD5255\n\nIt provides a sysfs interface to each device for reading/writing which\nis documented in Documentation/misc-devices/ad525x_dpot.txt.\n\nSigned-off-by: Michael Hennerich \u003cmichael.hennerich@analog.com\u003e\nSigned-off-by: Chris Verges \u003cchrisv@cyberswitching.com\u003e\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: Jean Delvare \u003ckhali@linux-fr.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "00b55864bb37200d7f05143c44f5e2edfc8c4578",
      "tree": "e744e54d7422559c3504724dfc85d678bc2996cf",
      "parents": [
        "42f247c83aeb52d2ee7a9fe23fb57e22317f18fd"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Dec 14 18:00:14 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:25 2009 -0800"
      },
      "message": "dynamic_debug.h/kernel.h: Remove KBUILD_MODNAME from dynamic_pr_debug\n\nIf CONFIG_DYNAMIC_DEBUG is enabled and a source file has:\n\n#define pr_fmt(fmt) KBUILD_MODNAME \": \" fmt\n#include \u003clinux/kernel.h\u003e\n\ndynamic_debug.h will duplicate KBUILD_MODNAME\nin the output string.\n\nRemove the use of KBUILD_MODNAME from the\noutput format string generated by dynamic_debug.h\n\nIf CONFIG_DYNAMIC_DEBUG is not enabled, no compile-time\ncheck is done to printk/dev_printk arguments.\n\nAdd it.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Jason Baron \u003cjbaron@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": "42f247c83aeb52d2ee7a9fe23fb57e22317f18fd",
      "tree": "cd48934d6f634ba4f0eec4ed2da37f9bfe3a82c5",
      "parents": [
        "6613c5e8603bc41741487828f48c6a4d701f7814"
      ],
      "author": {
        "name": "Cesar Eduardo Barros",
        "email": "cesarb@cesarb.net",
        "time": "Mon Dec 14 18:00:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:25 2009 -0800"
      },
      "message": "WARN_ONCE(): use bool for boolean flag\n\nCommit 70867453092297be9afb2249e712a1f960ec0a09 (\"printk_once(): use bool\nfor boolean flag\") changed printk_once() to use bool instead of int for\nits guard variable.  Do the same change to WARN_ONCE() and WARN_ON_ONCE(),\nfor the same reasons.\n\nThis resulted in a reduction of 1462 bytes on a x86-64 defconfig:\n\n   text    data     bss     dec     hex filename\n8101271 1207116  992764 10301151         9d2edf vmlinux.before\n8100553 1207148  991988 10299689         9d2929 vmlinux.after\n\nSigned-off-by: Cesar Eduardo Barros \u003ccesarb@cesarb.net\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nCc: Daniel Walker \u003cdwalker@fifo99.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6613c5e8603bc41741487828f48c6a4d701f7814",
      "tree": "821a045f88cbe2a03aed9aa4d8c56b0015b2b208",
      "parents": [
        "2886a8bdfa007053b414ab01741a98c18c376a85"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Dec 14 18:00:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:25 2009 -0800"
      },
      "message": "uml: convert to seq_file/proc_fops\n\nConvert code away from -\u003eread_proc/-\u003ewrite_proc interfaces.  Switch to\nproc_create()/proc_create_data() which make addition of proc entries\nreliable wrt NULL -\u003eproc_fops, NULL -\u003edata and so on.\n\nProblem with -\u003eread_proc et al is described here commit\n786d7e1612f0b0adb6046f19b906609e4fe8b1ba \"Fix rmmod/read/write races in\n/proc entries\"\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2886a8bdfa007053b414ab01741a98c18c376a85",
      "tree": "6b3d10c16393da65f271fe7865feb4bae97e7674",
      "parents": [
        "faa7b7ddca14887ac037f585d2fac7ca6c57037e"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Mon Dec 14 18:00:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:25 2009 -0800"
      },
      "message": "floppy: Add an extra bound check on ioctl arguments\n\ngcc is not convinced that the floppy.c ioctl has sufficient bound checks:\n\nIn function `copy_from_user\u0027,\n    inlined from `fd_copyin\u0027 at drivers/block/floppy.c:3080,\n    inlined from `fd_ioctl\u0027 at drivers/block/floppy.c:3503:\n    arch/x86/include/asm/uaccess_32.h:211:\nwarning: call to `copy_from_user_overflow\u0027 declared with attribute\nwarning: copy_from_user buffer size is not provably correct\n\nAnd frankly, as a human I have a hard time proving the same more or less\n(the size comes from the ioctl argument.  humpf.  maybe.  the code isn\u0027t\nvery nice)\n\nThis patch adds an explicit check to make 100% sure it\u0027s safe, better than\nfinding out later that there indeed was a gap.\n\n[akpm@linux-foundation.org: add WARN_ON()]\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "faa7b7ddca14887ac037f585d2fac7ca6c57037e",
      "tree": "a44e7785a83a9f778fe3acec2f6aa07630292b23",
      "parents": [
        "471452104b8520337ae2fb48c4e61cd4896e025d"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Mon Dec 14 18:00:09 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:25 2009 -0800"
      },
      "message": "drivers/cpuidle: Move dereference after NULL test\n\nIt does not seem possible that ldev can be NULL, so drop the unnecessary\ntest.  If ldev can somehow be NULL, then the initialization of last_idx\nshould be moved below the test.\n\nA simplified version of the semantic match that detects this problem is as\nfollows (http://coccinelle.lip6.fr/):\n\n// \u003csmpl\u003e\n@match exists@\nexpression x, E;\nidentifier fld;\n@@\n\n* x-\u003efld\n  ... when !\u003d \\(x \u003d E\\|\u0026x\\)\n* x \u003d\u003d NULL\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nAcked-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@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": "471452104b8520337ae2fb48c4e61cd4896e025d",
      "tree": "8594ae4a8362014e3cccf72a4e8834cdbb610bdd",
      "parents": [
        "0ead0f84e81a41c3e98aeceab04af8ab1bb08d1f"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Dec 14 18:00:08 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:25 2009 -0800"
      },
      "message": "const: constify remaining dev_pm_ops\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@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": "0ead0f84e81a41c3e98aeceab04af8ab1bb08d1f",
      "tree": "ba5d354818d2ec0a8251b3f4a5c9b9bef1092e07",
      "parents": [
        "4614a696bd1c3a9af3a08f0e5874830a85b889d4"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Dec 14 18:00:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "alpha: convert srm code to seq_file\n\nConvert code away from -\u003eread_proc/-\u003ewrite_proc interfaces.  Switch to\nproc_create()/proc_create_data() which make addition of proc entries\nreliable wrt NULL -\u003eproc_fops, NULL -\u003edata and so on.\n\nProblem with -\u003eread_proc et al is described here commit\n786d7e1612f0b0adb6046f19b906609e4fe8b1ba \"Fix rmmod/read/write races in\n/proc entries\"\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@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": "4614a696bd1c3a9af3a08f0e5874830a85b889d4",
      "tree": "0b363d89ce612ab8557d49ab8b0f49b8520ffa66",
      "parents": [
        "7e1e0ef22c9ba9f797d7c4448feee722584bba5c"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Mon Dec 14 18:00:05 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "procfs: allow threads to rename siblings via /proc/pid/tasks/tid/comm\n\nSetting a thread\u0027s comm to be something unique is a very useful ability\nand is helpful for debugging complicated threaded applications.  However\ncurrently the only way to set a thread name is for the thread to name\nitself via the PR_SET_NAME prctl.\n\nHowever, there may be situations where it would be advantageous for a\nthread dispatcher to be naming the threads its managing, rather then\nhaving the threads self-describe themselves.  This sort of behavior is\navailable on other systems via the pthread_setname_np() interface.\n\nThis patch exports a task\u0027s comm via proc/pid/comm and\nproc/pid/task/tid/comm interfaces, and allows thread siblings to write to\nthese values.\n\n[akpm@linux-foundation.org: cleanups]\nSigned-off-by: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Mike Fulton \u003cfultonm@ca.ibm.com\u003e\nCc: Sean Foley \u003cSean_Foley@ca.ibm.com\u003e\nCc: Darren Hart \u003cdvhltc@us.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7e1e0ef22c9ba9f797d7c4448feee722584bba5c",
      "tree": "892fd5374f4815891065f148617fefc601e19219",
      "parents": [
        "ea637639591def87a54cea811cbac796980cb30d"
      ],
      "author": {
        "name": "Steven J. Magnani",
        "email": "steve@digidescorp.com",
        "time": "Mon Dec 14 18:00:04 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "procfs: use proper units for noMMU statm\n\nOn no-MMU systems, sizes reported in /proc/n/statm have units of bytes.\nPer Documentation/filesystems/proc.txt, these values should be in pages.\n\nSigned-off-by: Steven J. Magnani \u003csteve@digidescorp.com\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\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": "ea637639591def87a54cea811cbac796980cb30d",
      "tree": "7ea3e4baf2ffade539ae30192521d331f8e863fa",
      "parents": [
        "5dc37642cbce34619e4588a9f0bdad1d2f870956"
      ],
      "author": {
        "name": "Jie Zhang",
        "email": "jie.zhang@analog.com",
        "time": "Mon Dec 14 18:00:02 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "nommu: fix malloc performance by adding uninitialized flag\n\nThe NOMMU code currently clears all anonymous mmapped memory.  While this\nis what we want in the default case, all memory allocation from userspace\nunder NOMMU has to go through this interface, including malloc() which is\nallowed to return uninitialized memory.  This can easily be a significant\nperformance penalty.  So for constrained embedded systems were security is\nirrelevant, allow people to avoid clearing memory unnecessarily.\n\nThis also alters the ELF-FDPIC binfmt such that it obtains uninitialised\nmemory for the brk and stack region.\n\nSigned-off-by: Jie Zhang \u003cjie.zhang@analog.com\u003e\nSigned-off-by: Robin Getz \u003crgetz@blackfin.uclinux.org\u003e\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nAcked-by: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5dc37642cbce34619e4588a9f0bdad1d2f870956",
      "tree": "00165a3a0b3d768abaf83cf44642f09398b989cc",
      "parents": [
        "d33b9f45bd24a6391bc05e2b5a13c1b5787ca9c2"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Mon Dec 14 18:00:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "mm hugetlb: add hugepage support to pagemap\n\nThis patch enables extraction of the pfn of a hugepage from\n/proc/pid/pagemap in an architecture independent manner.\n\nDetails\n-------\nMy test program (leak_pagemap) works as follows:\n - creat() and mmap() a file on hugetlbfs (file size is 200MB \u003d\u003d 100 hugepages,)\n - read()/write() something on it,\n - call page-types with option -p,\n - munmap() and unlink() the file on hugetlbfs\n\nWithout my patches\n------------------\n$ ./leak_pagemap\n             flags page-count       MB  symbolic-flags                     long-symbolic-flags\n0x0000000000000000          1        0  __________________________________\n0x0000000000000804          1        0  __R________M______________________ referenced,mmap\n0x000000000000086c         81        0  __RU_lA____M______________________ referenced,uptodate,lru,active,mmap\n0x0000000000005808          5        0  ___U_______Ma_b___________________ uptodate,mmap,anonymous,swapbacked\n0x0000000000005868         12        0  ___U_lA____Ma_b___________________ uptodate,lru,active,mmap,anonymous,swapbacked\n0x000000000000586c          1        0  __RU_lA____Ma_b___________________ referenced,uptodate,lru,active,mmap,anonymous,swapbacked\n             total        101        0\n\nThe output of page-types don\u0027t show any hugepage.\n\nWith my patches\n---------------\n$ ./leak_pagemap\n             flags page-count       MB  symbolic-flags                     long-symbolic-flags\n0x0000000000000000          1        0  __________________________________\n0x0000000000030000      51100      199  ________________TG________________ compound_tail,huge\n0x0000000000028018        100        0  ___UD__________H_G________________ uptodate,dirty,compound_head,huge\n0x0000000000000804          1        0  __R________M______________________ referenced,mmap\n0x000000000000080c          1        0  __RU_______M______________________ referenced,uptodate,mmap\n0x000000000000086c         80        0  __RU_lA____M______________________ referenced,uptodate,lru,active,mmap\n0x0000000000005808          4        0  ___U_______Ma_b___________________ uptodate,mmap,anonymous,swapbacked\n0x0000000000005868         12        0  ___U_lA____Ma_b___________________ uptodate,lru,active,mmap,anonymous,swapbacked\n0x000000000000586c          1        0  __RU_lA____Ma_b___________________ referenced,uptodate,lru,active,mmap,anonymous,swapbacked\n             total      51300      200\n\nThe output of page-types shows 51200 pages contributing to hugepages,\ncontaining 100 head pages and 51100 tail pages as expected.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Andy Whitcroft \u003capw@canonical.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": "d33b9f45bd24a6391bc05e2b5a13c1b5787ca9c2",
      "tree": "c79c7a452a18f513efbbc807440812432778332f",
      "parents": [
        "4f16fc107d9c9b8a72aa19b189a9216e90a7aaef"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Mon Dec 14 17:59:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "mm: hugetlb: fix hugepage memory leak in walk_page_range()\n\nMost callers of pmd_none_or_clear_bad() check whether the target page is\nin a hugepage or not, but walk_page_range() do not check it.  So if we\nread /proc/pid/pagemap for the hugepage on x86 machine, the hugepage\nmemory is leaked as shown below.  This patch fixes it.\n\nDetails\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nMy test program (leak_pagemap) works as follows:\n - creat() and mmap() a file on hugetlbfs (file size is 200MB \u003d\u003d 100 hugepages,)\n - read()/write() something on it,\n - call page-types with option -p (walk around the page tables),\n - munmap() and unlink() the file on hugetlbfs\n\nWithout my patches\n------------------\n$ cat /proc/meminfo |grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:     1000\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ./leak_pagemap\n[snip output]\n$ cat /proc/meminfo |grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:      900\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ls /hugetlbfs/\n$\n\n100 hugepages are accounted as used while there is no file on hugetlbfs.\n\nWith my patches\n---------------\n$ cat /proc/meminfo |grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:     1000\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ./leak_pagemap\n[snip output]\n$ cat /proc/meminfo |grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:     1000\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ls /hugetlbfs\n$\n\nNo memory leaks.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Andy Whitcroft \u003capw@canonical.com\u003e\nCc: 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": "4f16fc107d9c9b8a72aa19b189a9216e90a7aaef",
      "tree": "7d2cd426ab80a30d3fc7584605738ad39a8b24be",
      "parents": [
        "536240f2bde98216feac87b4891d19a536b8884a"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Mon Dec 14 17:59:58 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "mm: hugetlb: fix hugepage memory leak in mincore()\n\nMost callers of pmd_none_or_clear_bad() check whether the target page is\nin a hugepage or not, but mincore() and walk_page_range() do not check it.\n So if we use mincore() on a hugepage on x86 machine, the hugepage memory\nis leaked as shown below.  This patch fixes it by extending mincore()\nsystem call to support hugepages.\n\nDetails\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nMy test program (leak_mincore) works as follows:\n - creat() and mmap() a file on hugetlbfs (file size is 200MB \u003d\u003d 100 hugepages,)\n - read()/write() something on it,\n - call mincore() for first ten pages and printf() the values of *vec\n - munmap() and unlink() the file on hugetlbfs\n\nWithout my patch\n----------------\n$ cat /proc/meminfo| grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:     1000\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ./leak_mincore\nvec[0] 0\nvec[1] 0\nvec[2] 0\nvec[3] 0\nvec[4] 0\nvec[5] 0\nvec[6] 0\nvec[7] 0\nvec[8] 0\nvec[9] 0\n$ cat /proc/meminfo |grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:      999\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ls /hugetlbfs/\n$\n\nReturn values in *vec from mincore() are set to 0, while the hugepage\nshould be in memory, and 1 hugepage is still accounted as used while\nthere is no file on hugetlbfs.\n\nWith my patch\n-------------\n$ cat /proc/meminfo| grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:     1000\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ./leak_mincore\nvec[0] 1\nvec[1] 1\nvec[2] 1\nvec[3] 1\nvec[4] 1\nvec[5] 1\nvec[6] 1\nvec[7] 1\nvec[8] 1\nvec[9] 1\n$ cat /proc/meminfo |grep \"HugePage\"\nHugePages_Total:    1000\nHugePages_Free:     1000\nHugePages_Rsvd:        0\nHugePages_Surp:        0\n$ ls /hugetlbfs/\n$\n\nReturn value in *vec set to 1 and no memory leaks.\n\n[akpm@linux-foundation.org: cleanup]\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Andy Whitcroft \u003capw@canonical.com\u003e\nCc: 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": "536240f2bde98216feac87b4891d19a536b8884a",
      "tree": "e4755bb36c232262a2ebadb055d8947acb39b672",
      "parents": [
        "6927c1dd93fc982140f3a3742ac4b224cd3e02b2"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Dec 14 17:59:56 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:24 2009 -0800"
      },
      "message": "hugetlb: abort a hugepage pool resize if a signal is pending\n\nIf a user asks for a hugepage pool resize but specified a large number,\nthe machine can begin trashing.  In response, they might hit ctrl-c but\nsignals are ignored and the pool resize continues until it fails an\nallocation.  This can take a considerable amount of time so this patch\naborts a pool resize if a signal is pending.\n\nSuggested by Dave Hansen.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6927c1dd93fc982140f3a3742ac4b224cd3e02b2",
      "tree": "c87db39ee74fcc825cf238ec289473f01f476897",
      "parents": [
        "418b27ef50e7e9b0c2fbd88db804bf065e5eb1a6"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Mon Dec 14 17:59:55 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:23 2009 -0800"
      },
      "message": "mlock: replace stale comments in munlock_vma_page()\n\nCleanup stale comments on munlock_vma_page().\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "418b27ef50e7e9b0c2fbd88db804bf065e5eb1a6",
      "tree": "24a4354bfa3bda6c763b859c235669c939c97ce4",
      "parents": [
        "4eb2b1dcd598f8489130405c81c60c289896d92a"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Mon Dec 14 17:59:54 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:23 2009 -0800"
      },
      "message": "mm: remove unevictable_migrate_page function\n\nunevictable_migrate_page() in mm/internal.h is a relic of the since\nremoved UNEVICTABLE_LRU Kconfig option.  This patch removes the function\nand open codes the test in migrate_page_copy().\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4eb2b1dcd598f8489130405c81c60c289896d92a",
      "tree": "87bf0dec35f55688595447de65eb95952eb3dabc",
      "parents": [
        "70da2340fbc68e91e701762f785479ab495a0869"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Dec 14 17:59:53 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:23 2009 -0800"
      },
      "message": "hugetlb: acquire the i_mmap_lock before walking the prio_tree to unmap a page\n\nWhen the owner of a mapping fails COW because a child process is holding a\nreference, the children VMAs are walked and the page is unmapped.  The\ni_mmap_lock is taken for the unmapping of the page but not the walking of\nthe prio_tree.  In theory, that tree could be changing if the lock is not\nheld.  This patch takes the i_mmap_lock properly for the duration of the\nprio_tree walk.\n\n[hugh.dickins@tiscali.co.uk: Spotted the problem in the first place]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "70da2340fbc68e91e701762f785479ab495a0869",
      "tree": "f55055a8fa8cb8e00b72ae8f3629dc884515f5e9",
      "parents": [
        "f096e59e844ba3c5d5a7b54b3deafd2aeeebf921"
      ],
      "author": {
        "name": "Amerigo Wang",
        "email": "amwang@redhat.com",
        "time": "Mon Dec 14 17:59:52 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:23 2009 -0800"
      },
      "message": "\u0027sysctl_max_map_count\u0027 should be non-negative\n\nJan Engelhardt reported we have this problem:\n\nsetting max_map_count to a value large enough results in programs dying at\nfirst try.  This is on 2.6.31.6:\n\n15:59 borg:/proc/sys/vm # echo $[1\u003c\u003c31-1] \u003emax_map_count\n15:59 borg:/proc/sys/vm # cat max_map_count\n1073741824\n15:59 borg:/proc/sys/vm # echo $[1\u003c\u003c31] \u003emax_map_count\n15:59 borg:/proc/sys/vm # cat max_map_count\nKilled\n\nThis is because we have a chance to make \u0027max_map_count\u0027 negative.  but\nit\u0027s meaningless.  Make it only accept non-negative values.\n\nReported-by: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nSigned-off-by: WANG Cong \u003camwang@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Alexey Dobriyan \u003cadobriyan@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": "f096e59e844ba3c5d5a7b54b3deafd2aeeebf921",
      "tree": "8d48bf8456ba98a1f9fe372b7550b2996162da3b",
      "parents": [
        "c9d0bf241451a3ab7d02e1652c22b80cd7d93e8f"
      ],
      "author": {
        "name": "Huang Shijie",
        "email": "shijie8@gmail.com",
        "time": "Mon Dec 14 17:59:51 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:22 2009 -0800"
      },
      "message": "include/linux/mm.h: remove unneeded ifdef\n\nThe check code for CONFIG_SWAP is redundant, because there is a\nnon-CONFIG_SWAP version for PageSwapCache() which just returns 0.\n\nSigned-off-by: Huang Shijie \u003cshijie8@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": "c9d0bf241451a3ab7d02e1652c22b80cd7d93e8f",
      "tree": "f72d7eedf3fee82193407c7190321399833f422c",
      "parents": [
        "62c0c2f198c1f2ead05c961e83ef486c45888325"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@opensource.se",
        "time": "Mon Dec 14 17:59:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:21 2009 -0800"
      },
      "message": "mm: uncached vma support with writenotify\n\nModify the generic mmap() code to keep the cache attribute in\nvma-\u003evm_page_prot regardless if writenotify is enabled or not.  Without\nthis patch the cache configuration selected by f_op-\u003emmap() is overwritten\nif writenotify is enabled, making it impossible to keep the vma uncached.\n\nNeeded by drivers such as drivers/video/sh_mobile_lcdcfb.c which uses\ndeferred io together with uncached memory.\n\nSigned-off-by: Magnus Damm \u003cdamm@opensource.se\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Jaya Kumar \u003cjayakumar.lkml@gmail.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "62c0c2f198c1f2ead05c961e83ef486c45888325",
      "tree": "d880a44df34d3cd14318efd1d5bee186a03cc841",
      "parents": [
        "b39415b2731d7dec5e612d2d12595da82399eedf"
      ],
      "author": {
        "name": "Huang Shijie",
        "email": "shijie8@gmail.com",
        "time": "Mon Dec 14 17:59:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:21 2009 -0800"
      },
      "message": "vmscan: simplify code\n\nSimplify the code for shrink_inactive_list().\n\nSigned-off-by: Huang Shijie \u003cshijie8@gmail.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b39415b2731d7dec5e612d2d12595da82399eedf",
      "tree": "a8c59b1bc820d643d2e969f866a54147d7015c2e",
      "parents": [
        "8aa043d74559556a661cb2eb6e64497eec86ec77"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Mon Dec 14 17:59:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:21 2009 -0800"
      },
      "message": "vmscan: do not evict inactive pages when skipping an active list scan\n\nIn AIM7 runs, recent kernels start swapping out anonymous pages well\nbefore they should.  This is due to shrink_list falling through to\nshrink_inactive_list if !inactive_anon_is_low(zone, sc), when all we\nreally wanted to do is pre-age some anonymous pages to give them extra\ntime to be referenced while on the inactive list.\n\nThe obvious fix is to make sure that shrink_list does not fall through to\nscanning/reclaiming inactive pages when we called it to scan one of the\nactive lists.\n\nThis change should be safe because the loop in shrink_zone ensures that we\nwill still shrink the anon and file inactive lists whenever we should.\n\n[kosaki.motohiro@jp.fujitsu.com: inactive_file_is_low() should be inactive_anon_is_low()]\nReported-by: Larry Woodman \u003clwoodman@redhat.com\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Tomasz Chmielewski \u003cmangoo@wpkg.org\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8aa043d74559556a661cb2eb6e64497eec86ec77",
      "tree": "73559e8b70d2f2d139ca3c404687873d34ff7b36",
      "parents": [
        "9ae49fab239fb49de92a657c7426271e0793c4e1"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Dec 14 17:59:46 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "mm/bootmem.c: properly __init-annotate helper functions\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9ae49fab239fb49de92a657c7426271e0793c4e1",
      "tree": "156f78df3db4dbc408f6839febe7adba148c2c9f",
      "parents": [
        "caed0f486e582eeeb6e3546417fd758230fe4ad9"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Dec 14 17:59:46 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "mm: slab-allocate memory section nodemask for large systems\n\nNodemasks should not be allocated on the stack for large systems (when it\nis larger than 256 bytes) since there is a threat of overflow.\n\nThis patch causes the unregister_mem_sect_under_nodes() nodemask to be\nallocated on the stack for smaller systems and be allocated by slab for\nlarger systems.\n\nGFP_KERNEL is used since remove_memory_block() can block.\n\nCc: Gary Hade \u003cgaryhade@us.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Alex Chiang \u003cachiang@hp.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "caed0f486e582eeeb6e3546417fd758230fe4ad9",
      "tree": "203d4724dcfaae3ad4b349e1971bb3efc0da7db2",
      "parents": [
        "23ce932a5e3ec3b9f06e92c8797d834d43abfb0f"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Dec 14 17:59:45 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "mm: simplify try_to_unmap_one()\n\nSWAP_MLOCK mean \"We marked the page as PG_MLOCK, please move it to\nunevictable-lru\". So, following code is easy confusable.\n\n        if (vma-\u003evm_flags \u0026 VM_LOCKED) {\n                ret \u003d SWAP_MLOCK;\n                goto out_unmap;\n        }\n\nPlus, if the VMA doesn\u0027t have VM_LOCKED, We don\u0027t need to check\nthe needed of calling mlock_vma_page().\n\nAlso, add some commentary to try_to_unmap_one().\n\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "23ce932a5e3ec3b9f06e92c8797d834d43abfb0f",
      "tree": "a966c72393e3f6111e383528055518e251eeda9c",
      "parents": [
        "b76c8cfbff94263fdf2f408e94b78b049c24a9dc"
      ],
      "author": {
        "name": "Rakib Mullick",
        "email": "rakib.mullick@gmail.com",
        "time": "Mon Dec 14 17:59:44 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "mm: fix section mismatch in memory_hotplug.c\n\n__free_pages_bootmem() is a __meminit function - which has been called\nfrom put_pages_bootmem thus causes a section mismatch warning.\n\n We were warned by the following warning:\n\n  LD      mm/built-in.o\nWARNING: mm/built-in.o(.text+0x26b22): Section mismatch in reference\nfrom the function put_page_bootmem() to the function\n.meminit.text:__free_pages_bootmem()\nThe function put_page_bootmem() references\nthe function __meminit __free_pages_bootmem().\nThis is often because put_page_bootmem lacks a __meminit\nannotation or the annotation of __free_pages_bootmem is wrong.\n\nSigned-off-by: Rakib Mullick \u003crakib.mullick@gmail.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b76c8cfbff94263fdf2f408e94b78b049c24a9dc",
      "tree": "2252a29e2cfaddf08060174afd635e5f8ab66c1f",
      "parents": [
        "b4e655a4aaa327810110457cef92681447dd13e4"
      ],
      "author": {
        "name": "Larry Woodman",
        "email": "lwoodman@redhat.com",
        "time": "Mon Dec 14 17:59:37 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "hugetlb: prevent deadlock in __unmap_hugepage_range() when alloc_huge_page() fails\n\nhugetlb_fault() takes the mm-\u003epage_table_lock spinlock then calls\nhugetlb_cow().  If the alloc_huge_page() in hugetlb_cow() fails due to an\ninsufficient huge page pool it calls unmap_ref_private() with the\nmm-\u003epage_table_lock held.  unmap_ref_private() then calls\nunmap_hugepage_range() which tries to acquire the mm-\u003epage_table_lock.\n\n[\u003cffffffff810928c3\u003e] print_circular_bug_tail+0x80/0x9f\n [\u003cffffffff8109280b\u003e] ? check_noncircular+0xb0/0xe8\n [\u003cffffffff810935e0\u003e] __lock_acquire+0x956/0xc0e\n [\u003cffffffff81093986\u003e] lock_acquire+0xee/0x12e\n [\u003cffffffff8111a7a6\u003e] ? unmap_hugepage_range+0x3e/0x84\n [\u003cffffffff8111a7a6\u003e] ? unmap_hugepage_range+0x3e/0x84\n [\u003cffffffff814c348d\u003e] _spin_lock+0x40/0x89\n [\u003cffffffff8111a7a6\u003e] ? unmap_hugepage_range+0x3e/0x84\n [\u003cffffffff8111afee\u003e] ? alloc_huge_page+0x218/0x318\n [\u003cffffffff8111a7a6\u003e] unmap_hugepage_range+0x3e/0x84\n [\u003cffffffff8111b2d0\u003e] hugetlb_cow+0x1e2/0x3f4\n [\u003cffffffff8111b935\u003e] ? hugetlb_fault+0x453/0x4f6\n [\u003cffffffff8111b962\u003e] hugetlb_fault+0x480/0x4f6\n [\u003cffffffff8111baee\u003e] follow_hugetlb_page+0x116/0x2d9\n [\u003cffffffff814c31a7\u003e] ? _spin_unlock_irq+0x3a/0x5c\n [\u003cffffffff81107b4d\u003e] __get_user_pages+0x2a3/0x427\n [\u003cffffffff81107d0f\u003e] get_user_pages+0x3e/0x54\n [\u003cffffffff81040b8b\u003e] get_user_pages_fast+0x170/0x1b5\n [\u003cffffffff81160352\u003e] dio_get_page+0x64/0x14a\n [\u003cffffffff8116112a\u003e] __blockdev_direct_IO+0x4b7/0xb31\n [\u003cffffffff8115ef91\u003e] blkdev_direct_IO+0x58/0x6e\n [\u003cffffffff8115e0a4\u003e] ? blkdev_get_blocks+0x0/0xb8\n [\u003cffffffff810ed2c5\u003e] generic_file_aio_read+0xdd/0x528\n [\u003cffffffff81219da3\u003e] ? avc_has_perm+0x66/0x8c\n [\u003cffffffff81132842\u003e] do_sync_read+0xf5/0x146\n [\u003cffffffff8107da00\u003e] ? autoremove_wake_function+0x0/0x5a\n [\u003cffffffff81211857\u003e] ? security_file_permission+0x24/0x3a\n [\u003cffffffff81132fd8\u003e] vfs_read+0xb5/0x126\n [\u003cffffffff81133f6b\u003e] ? fget_light+0x5e/0xf8\n [\u003cffffffff81133131\u003e] sys_read+0x54/0x8c\n [\u003cffffffff81011e42\u003e] system_call_fastpath+0x16/0x1b\n\nThis can be fixed by dropping the mm-\u003epage_table_lock around the call to\nunmap_ref_private() if alloc_huge_page() fails, its dropped right below in\nthe normal path anyway.  However, earlier in the that function, it\u0027s also\npossible to call into the page allocator with the same spinlock held.\n\nWhat this patch does is drop the spinlock before the page allocator is\npotentially entered.  The check for page allocation failure can be made\nwithout the page_table_lock as well as the copy of the huge page.  Even if\nthe PTE changed while the spinlock was held, the consequence is that a\nhuge page is copied unnecessarily.  This resolves both the double taking\nof the lock and sleeping with the spinlock held.\n\n[mel@csn.ul.ie: Cover also the case where process can sleep with spinlock]\nSigned-off-by: Larry Woodman \u003clwooman@redhat.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\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": "b4e655a4aaa327810110457cef92681447dd13e4",
      "tree": "86f32571acdf688874967c5e597319a4c05ee888",
      "parents": [
        "d0f209f68f80f9a152799760c230019e7f270b2a"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Dec 14 17:59:35 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "mm: memory_hotplug: make offline_pages() static\n\nIt has no references outside memory_hotplug.c.\n\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0f209f68f80f9a152799760c230019e7f270b2a",
      "tree": "83e4a6b2e15f50738572b31cfadb5fc0db17d2b7",
      "parents": [
        "62b61f611eb5e20f7e9f8619bfd03bdfe8af6348"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:34 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "ksm: remove unswappable max_kernel_pages\n\nNow that ksm pages are swappable, and the known holes plugged, remove\nmention of unswappable kernel pages from KSM documentation and comments.\n\nRemove the totalram_pages/4 initialization of max_kernel_pages.  In fact,\nremove max_kernel_pages altogether - we can reinstate it if removal turns\nout to break someone\u0027s script; but if we later want to limit KSM\u0027s memory\nusage, limiting the stable nodes would not be an effective approach.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@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": "62b61f611eb5e20f7e9f8619bfd03bdfe8af6348",
      "tree": "9f06fff7eb6530fbe90b4d998b91071133f6af25",
      "parents": [
        "e9995ef978a7d5296fe04a9a2c5ca6e66d8bb4e5"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:33 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "ksm: memory hotremove migration only\n\nThe previous patch enables page migration of ksm pages, but that soon gets\ninto trouble: not surprising, since we\u0027re using the ksm page lock to lock\noperations on its stable_node, but page migration switches the page whose\nlock is to be used for that.  Another layer of locking would fix it, but\ndo we need that yet?\n\nDo we actually need page migration of ksm pages?  Yes, memory hotremove\nneeds to offline sections of memory: and since we stopped allocating ksm\npages with GFP_HIGHUSER, they will tend to be GFP_HIGHUSER_MOVABLE\ncandidates for migration.\n\nBut KSM is currently unconscious of NUMA issues, happily merging pages\nfrom different NUMA nodes: at present the rule must be, not to use\nMADV_MERGEABLE where you care about NUMA.  So no, NUMA page migration of\nksm pages does not make sense yet.\n\nSo, to complete support for ksm swapping we need to make hotremove safe.\nksm_memory_callback() take ksm_thread_mutex when MEM_GOING_OFFLINE and\nrelease it when MEM_OFFLINE or MEM_CANCEL_OFFLINE.  But if mapped pages\nare freed before migration reaches them, stable_nodes may be left still\npointing to struct pages which have been removed from the system: the\nstable_node needs to identify a page by pfn rather than page pointer, then\nit can safely prune them when MEM_OFFLINE.\n\nAnd make NUMA migration skip PageKsm pages where it skips PageReserved.\nBut it\u0027s only when we reach unmap_and_move() that the page lock is taken\nand we can be sure that raised pagecount has prevented a PageAnon from\nbeing upgraded: so add offlining arg to migrate_pages(), to migrate ksm\npage when offlining (has sufficient locking) but reject it otherwise.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@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": "e9995ef978a7d5296fe04a9a2c5ca6e66d8bb4e5",
      "tree": "df4324273856e06b8277b7e4a0fa9289eb8e6385",
      "parents": [
        "407f9c8b0889ced1dbe2f9157e4e60c61329d5c9"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:31 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "ksm: rmap_walk to remove_migation_ptes\n\nA side-effect of making ksm pages swappable is that they have to be placed\non the LRUs: which then exposes them to isolate_lru_page() and hence to\npage migration.\n\nAdd rmap_walk() for remove_migration_ptes() to use: rmap_walk_anon() and\nrmap_walk_file() in rmap.c, but rmap_walk_ksm() in ksm.c.  Perhaps some\nconsolidation with existing code is possible, but don\u0027t attempt that yet\n(try_to_unmap needs to handle nonlinears, but migration pte removal does\nnot).\n\nrmap_walk() is sadly less general than it appears: rmap_walk_anon(), like\nremove_anon_migration_ptes() which it replaces, avoids calling\npage_lock_anon_vma(), because that includes a page_mapped() test which\nfails when all migration ptes are in place.  That was valid when NUMA page\nmigration was introduced (holding mmap_sem provided the missing guarantee\nthat anon_vma\u0027s slab had not already been destroyed), but I believe not\nvalid in the memory hotremove case added since.\n\nFor now do the same as before, and consider the best way to fix that\nunlikely race later on.  When fixed, we can probably use rmap_walk() on\nhwpoisoned ksm pages too: for now, they remain among hwpoison\u0027s various\nexceptions (its PageKsm test comes before the page is locked, but its\npage_lock_anon_vma fails safely if an anon gets upgraded).\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@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": "407f9c8b0889ced1dbe2f9157e4e60c61329d5c9",
      "tree": "30c0c9ad224a73de621bc23909cd89cd81eda1aa",
      "parents": [
        "80e148226028257ec0a1909d99b2c40d0ffe17f2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:30 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:19 2009 -0800"
      },
      "message": "ksm: mem cgroup charge swapin copy\n\nBut ksm swapping does require one small change in mem cgroup handling.\nWhen do_swap_page()\u0027s call to ksm_might_need_to_copy() does indeed\nsubstitute a duplicate page to accommodate a different anon_vma (or a the\n!PageSwapCache check in mem_cgroup_try_charge_swapin().\n\nThat was returning success without charging, on the assumption that\npte_same() would fail after, which is not the case here.  Originally I\nproposed that success, so that an unshrinkable mem cgroup at its limit\nwould not fail unnecessarily; but that\u0027s a minor point, and there are\nplenty of other places where we may fail an overallocation which might\nlater prove unnecessary.  So just go ahead and do what all the other\nexceptions do: proceed to charge current mm.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@redhat.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "80e148226028257ec0a1909d99b2c40d0ffe17f2",
      "tree": "1e3cae42144f5c80e215ba254e01bd6847ba1b36",
      "parents": [
        "4035c07a895974d0ac06a56fe870ad293fc451a7"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:29 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:19 2009 -0800"
      },
      "message": "ksm: share anon page without allocating\n\nWhen ksm pages were unswappable, it made no sense to include them in mem\ncgroup accounting; but now that they are swappable (although I see no\nstrict logical connection) the principle of least surprise implies that\nthey should be accounted (with the usual dissatisfaction, that a shared\npage is accounted to only one of the cgroups using it).\n\nThis patch was intended to add mem cgroup accounting where necessary; but\nturned inside out, it now avoids allocating a ksm page, instead upgrading\nan anon page to ksm - which brings its existing mem cgroup accounting with\nit.  Thus mem cgroups don\u0027t appear in the patch at all.\n\nThis upgrade from PageAnon to PageKsm takes place under page lock (via a\nsomewhat hacky NULL kpage interface), and audit showed only one place\nwhich needed to cope with the race - page_referenced() is sometimes used\nwithout page lock, so page_lock_anon_vma() needs an ACCESS_ONCE() to be\nsure of getting anon_vma and flags together (no problem if the page goes\nksm an instant after, the integrity of that anon_vma list is unaffected).\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@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": "4035c07a895974d0ac06a56fe870ad293fc451a7",
      "tree": "b0cc7cabeb0b23d97d5bd5080836d57bc5ee4689",
      "parents": [
        "db114b83ab6064d9b1d6ec5650e096c89bd95e25"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:27 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:19 2009 -0800"
      },
      "message": "ksm: take keyhole reference to page\n\nThere\u0027s a lamentable flaw in KSM swapping: the stable_node holds a\nreference to the ksm page, so the page to be freed cannot actually be\nfreed until ksmd works its way around to removing the last rmap_item from\nits stable_node.  Which in some configurations may take minutes: not quite\nresponsive enough for memory reclaim.  And we don\u0027t want to twist KSM and\nits locking more tightly into the rest of mm.  What a pity.\n\nBut although the stable_node needs to hold a pointer to the ksm page, does\nit actually need to raise the reference count of that page?\n\nNo.  It would need to do so if struct pages were ordinary kmalloc\u0027ed\nobjects; but they are more stable than that, and reused in particular ways\naccording to particular rules.\n\nAccess to stable_node from its pointer in struct page is no problem, so\nlong as we never free a stable_node before the ksm page itself has been\nfreed.  Access to struct page from its pointer in stable_node: reintroduce\nget_ksm_page(), and let that peep out through its keyhole (the stable_node\npointer to ksm page), to see if that struct page still holds the right key\nto open it (the ksm page mapping pointer back to this stable_node).\n\nThis relies upon the established way in which free_hot_cold_page() sets an\nanon (including ksm) page-\u003emapping to NULL; and relies upon no other user\nof a struct page to put something which looks like the original\nstable_node pointer (with two low bits also set) into page-\u003emapping.  It\nalso needs get_page_unless_zero() technique pioneered by speculative\npagecache; and uses rcu_read_lock() to keep the guarantees that gives.\n\nThere are several drivers which put pointers of their own into page-\u003e\nmapping; but none of those could coincide with our stable_node pointers,\nsince KSM won\u0027t free a stable_node until it sees that the page has gone.\n\nThe only problem case found is the pagetable spinlock USE_SPLIT_PTLOCKS\nplaces in struct page (my own abuse): to accommodate GENERIC_LOCKBREAK\u0027s\nbreak_lock on 32-bit, that spans both page-\u003eprivate and page-\u003emapping.\nSince break_lock is only 0 or 1, again no confusion for get_ksm_page().\n\nBut what of DEBUG_SPINLOCK on 64-bit bigendian?  When owner_cpu is 3\n(matching PageKsm low bits), it might see 0xdead4ead00000003 in page-\u003e\nmapping, which might coincide?  We could get around that by...  but a\nbetter answer is to suppress USE_SPLIT_PTLOCKS when DEBUG_SPINLOCK or\nDEBUG_LOCK_ALLOC, to stop bloating sizeof(struct page) in their case -\nalready proposed in an earlier mm/Kconfig patch.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@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": "db114b83ab6064d9b1d6ec5650e096c89bd95e25",
      "tree": "15e289b25fec011238f6838c6aafa1ff5e293224",
      "parents": [
        "5ad6468801d28c4d4ac9f48ec19297817c915f6a"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:19 2009 -0800"
      },
      "message": "ksm: hold anon_vma in rmap_item\n\nFor full functionality, page_referenced_one() and try_to_unmap_one() need\nto know the vma: to pass vma down to arch-dependent flushes, or to observe\nVM_LOCKED or VM_EXEC.  But KSM keeps no record of vma: nor can it, since\nvmas get split and merged without its knowledge.\n\nInstead, note page\u0027s anon_vma in its rmap_item when adding to stable tree:\nall the vmas which might map that page are listed by its anon_vma.\n\npage_referenced_ksm() and try_to_unmap_ksm() then traverse the anon_vma,\nfirst to find the probable vma, that which matches rmap_item\u0027s mm; but if\nthat is not enough to locate all instances, traverse again to try the\nothers.  This catches those occasions when fork has duplicated a pte of a\nksm page, but ksmd has not yet come around to assign it an rmap_item.\n\nBut each rmap_item in the stable tree which refers to an anon_vma needs to\ntake a reference to it.  Andrea\u0027s anon_vma design cleverly avoided a\nreference count (an anon_vma was free when its list of vmas was empty),\nbut KSM now needs to add that.  Is a 32-bit count sufficient?  I believe\nso - the anon_vma is only free when both count is 0 and list is empty.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@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": "5ad6468801d28c4d4ac9f48ec19297817c915f6a",
      "tree": "edd8dc48693f43278d6fe1614aca2bf660d4dc10",
      "parents": [
        "73848b4684e84a84cfd1555af78d41158f31e16b"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:19 2009 -0800"
      },
      "message": "ksm: let shared pages be swappable\n\nInitial implementation for swapping out KSM\u0027s shared pages: add\npage_referenced_ksm() and try_to_unmap_ksm(), which rmap.c calls when\nfaced with a PageKsm page.\n\nMost of what\u0027s needed can be got from the rmap_items listed from the\nstable_node of the ksm page, without discovering the actual vma: so in\nthis patch just fake up a struct vma for page_referenced_one() or\ntry_to_unmap_one(), then refine that in the next patch.\n\nAdd VM_NONLINEAR to ksm_madvise()\u0027s list of exclusions: it has always been\nimplicit there (being only set with VM_SHARED, already excluded), but\nlet\u0027s make it explicit, to help justify the lack of nonlinear unmap.\n\nRely on the page lock to protect against concurrent modifications to that\npage\u0027s node of the stable tree.\n\nThe awkward part is not swapout but swapin: do_swap_page() and\npage_add_anon_rmap() now have to allow for new possibilities - perhaps a\nksm page still in swapcache, perhaps a swapcache page associated with one\nlocation in one anon_vma now needed for another location or anon_vma.\n(And the vma might even be no longer VM_MERGEABLE when that happens.)\n\nksm_might_need_to_copy() checks for that case, and supplies a duplicate\npage when necessary, simply leaving it to a subsequent pass of ksmd to\nrediscover the identity and merge them back into one ksm page.\nDisappointingly primitive: but the alternative would have to accumulate\nunswappable info about the swapped out ksm pages, limiting swappability.\n\nRemove page_add_ksm_rmap(): page_add_anon_rmap() now has to allow for the\nparticular case it was handling, so just use it instead.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@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": "73848b4684e84a84cfd1555af78d41158f31e16b",
      "tree": "b71ba30e2b20cbc45740a38e9b5aa51b8c2ea60e",
      "parents": [
        "08beca44dfb0ab008e365163df70dbd302ae1508"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:22 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:19 2009 -0800"
      },
      "message": "ksm: fix mlockfreed to munlocked\n\nWhen KSM merges an mlocked page, it has been forgetting to munlock it:\nthat\u0027s been left to free_page_mlock(), which reports it in /proc/vmstat as\nunevictable_pgs_mlockfreed instead of unevictable_pgs_munlocked (and\nwhinges \"Page flag mlocked set for process\" in mmotm, whereas mainline is\nsilently forgiving).  Call munlock_vma_page() to fix that.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08beca44dfb0ab008e365163df70dbd302ae1508",
      "tree": "33f3ddf5460e139bd7fd37e8c08026a7d852c3da",
      "parents": [
        "7b6ba2c7d3baf8cd9f888e05563dcc32e368baab"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:21 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:19 2009 -0800"
      },
      "message": "ksm: stable_node point to page and back\n\nAdd a pointer to the ksm page into struct stable_node, holding a reference\nto the page while the node exists.  Put a pointer to the stable_node into\nthe ksm page\u0027s -\u003emapping.\n\nThen we don\u0027t need get_ksm_page() while traversing the stable tree: the\npage to compare against is sure to be present and correct, even if it\u0027s no\nlonger visible through any of its existing rmap_items.\n\nAnd we can handle the forked ksm page case more efficiently: no need to\nmemcmp our way through the tree to find its match.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b6ba2c7d3baf8cd9f888e05563dcc32e368baab",
      "tree": "89e62613a37d803e4a83b96559acca29526f9638",
      "parents": [
        "6514d511dbe5a77b4bdc0a7e26fd679585112e1e"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:20 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:19 2009 -0800"
      },
      "message": "ksm: separate stable_node\n\nThough we still do well to keep rmap_items in the unstable tree without a\nseparate tree_item at the node, for several reasons it becomes awkward to\nkeep rmap_items in the stable tree without a separate stable_node: lack of\nspace in the nicely-sized rmap_item, the need for an anchor as rmap_items\nare removed, the need for a node even when temporarily no rmap_items are\nattached to it.\n\nSo declare struct stable_node (rb_node to place it in the tree and\nhlist_head for the rmap_items hanging off it), and convert stable tree\nhandling to use it: without yet taking advantage of it.  Note how one\nstable_tree_insert() of a node now has _two_ stable_tree_append()s of the\ntwo rmap_items being merged.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6514d511dbe5a77b4bdc0a7e26fd679585112e1e",
      "tree": "a3fcf75191b7900043172d147fc7ed8ea97f3b4a",
      "parents": [
        "8dd3557a52f0bc8c960307721da307370ccad6fd"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:19 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:19 2009 -0800"
      },
      "message": "ksm: singly-linked rmap_list\n\nFree up a pointer in struct rmap_item, by making the mm_slot\u0027s rmap_list a\nsingly-linked list: we always traverse that list sequentially, and we\ndon\u0027t even lose any prefetches (but should consider adding a few later).\nName it rmap_list throughout.\n\nDo we need to free up that pointer?  Not immediately, and in the end, we\ncould continue to avoid it with a union; but having done the conversion,\nlet\u0027s keep it this way, since there\u0027s no downside, and maybe we\u0027ll want\nmore in future (struct rmap_item is a cache-friendly 32 bytes on 32-bit\nand 64 bytes on 64-bit, so we shall want to avoid expanding it).\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8dd3557a52f0bc8c960307721da307370ccad6fd",
      "tree": "711a15d188b6679026ae818bd0635d271820ea7e",
      "parents": [
        "31e855ea7173bdb0520f9684580423a9560f66e0"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:18 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:19 2009 -0800"
      },
      "message": "ksm: cleanup some function arguments\n\nCleanup: make argument names more consistent from cmp_and_merge_page()\ndown to replace_page(), so that it\u0027s easier to follow the rmap_item\u0027s page\nand the matching tree_page and the merged kpage through that code.\n\nIn some places, e.g.  break_cow(), pass rmap_item instead of separate mm\nand address.\n\ncmp_and_merge_page() initialize tree_page to NULL, to avoid a \"may be used\nuninitialized\" warning seen in one config by Anil SB.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "31e855ea7173bdb0520f9684580423a9560f66e0",
      "tree": "20ff327e2a58929696946971a8201da559785338",
      "parents": [
        "93d17715a5b960d34220f2edba3e6cee9b5b1c58"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:17 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:18 2009 -0800"
      },
      "message": "ksm: remove redundancies when merging page\n\nThere is no need for replace_page() to calculate a write-protected prot\nvm_page_prot must already be write-protected for an anonymous page (see\nmm/memory.c do_anonymous_page() for similar reliance on vm_page_prot).\n\nThere is no need for try_to_merge_one_page() to get_page and put_page on\nnewpage and oldpage: in every case we already hold a reference to each of\nthem.\n\nBut some instinct makes me move try_to_merge_one_page()\u0027s unlock_page of\noldpage down after replace_page(): that doesn\u0027t increase contention on the\nksm page, and makes thinking about the transition easier.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "93d17715a5b960d34220f2edba3e6cee9b5b1c58",
      "tree": "9ab08ff4169464bf5b8d86c8082296fd6e3d069b",
      "parents": [
        "338fde90930eaa02f6f394daa23d35a410af5852"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:16 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:18 2009 -0800"
      },
      "message": "ksm: three remove_rmap_item_from_tree cleanups\n\n1. remove_rmap_item_from_tree() is called as a precaution from\n   various places: don\u0027t dirty the rmap_item cacheline unnecessarily,\n   just mask the flags out of the address when they have been set.\n\n2. First get_next_rmap_item() removes an unstable rmap_item from its tree,\n   then shortly afterwards cmp_and_merge_page() removes a stable rmap_item\n   from its tree: it\u0027s easier just to do both at once (but definitely keep\n   the BUG_ON(age \u003e 1) which guards against a future omission).\n\n3. When cmp_and_merge_page() moves an rmap_item from unstable to stable\n   tree, it does its own rb_erase() and accounting: that\u0027s better\n   expressed by remove_rmap_item_from_tree().\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "338fde90930eaa02f6f394daa23d35a410af5852",
      "tree": "6a230b458d12e33b4b3d531f977636d1a4813102",
      "parents": [
        "ece74b2e7acfb71453f3f39948cc667434550dbb"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Dec 14 17:59:15 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:18 2009 -0800"
      },
      "message": "vmscan: make consistent of reclaim bale out between do_try_to_free_page and shrink_zone\n\nFix small inconsistent of \"\u003e\" and \"\u003e\u003d\".\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ece74b2e7acfb71453f3f39948cc667434550dbb",
      "tree": "08749bc2d0a6169d1c1525c502a2faf13e84b244",
      "parents": [
        "4f0ddfdffc8bef3a5eb9154734d68a6053194948"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Dec 14 17:59:14 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:18 2009 -0800"
      },
      "message": "vmscan: kill sc.swap_cluster_max\n\nNow, All caller of reclaim use swap_cluster_max as SWAP_CLUSTER_MAX.\nThen, we can remove it perfectly.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f0ddfdffc8bef3a5eb9154734d68a6053194948",
      "tree": "ae86c67cbb9290b8f090a13022736c2b862f3630",
      "parents": [
        "7b51755c3b38483b574d363d5ee587283c3f7999"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Dec 14 17:59:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:18 2009 -0800"
      },
      "message": "vmscan: zone_reclaim() don\u0027t use insane swap_cluster_max\n\nIn old days, we didn\u0027t have sc.nr_to_reclaim and it brought\nsc.swap_cluster_max misuse.\n\nhuge sc.swap_cluster_max might makes unnecessary OOM risk and no\nperformance benefit.\n\nNow, we can stop its insane thing.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b51755c3b38483b574d363d5ee587283c3f7999",
      "tree": "29ac6d3b73f0a28488dabff03a7df948c0333906",
      "parents": [
        "22fba33545b731408deab6e96b6e231ee05fd10b"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Dec 14 17:59:12 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:18 2009 -0800"
      },
      "message": "vmscan: kill hibernation specific reclaim logic and unify it\n\nshrink_all_zone() was introduced by commit d6277db4ab (swsusp: rework\nmemory shrinker) for hibernate performance improvement.  and\nsc.swap_cluster_max was introduced by commit a06fe4d307 (Speed freeing\nmemory for suspend).\n\ncommit a06fe4d307 said\n\n   Without the patch:\n   Freed  14600 pages in  1749 jiffies \u003d 32.61 MB/s (Anomolous!)\n   Freed  88563 pages in 14719 jiffies \u003d 23.50 MB/s\n   Freed 205734 pages in 32389 jiffies \u003d 24.81 MB/s\n\n   With the patch:\n   Freed  68252 pages in   496 jiffies \u003d 537.52 MB/s\n   Freed 116464 pages in   569 jiffies \u003d 798.54 MB/s\n   Freed 209699 pages in   705 jiffies \u003d 1161.89 MB/s\n\nAt that time, their patch was pretty worth.  However, Modern Hardware\ntrend and recent VM improvement broke its worth.  From several reason, I\nthink we should remove shrink_all_zones() at all.\n\ndetail:\n\n1) Old days, shrink_zone()\u0027s slowness was mainly caused by stupid io-throttle\n  at no i/o congestion.\n  but current shrink_zone() is sane, not slow.\n\n2) shrink_all_zone() try to shrink all pages at a time. but it doesn\u0027t works\n  fine on numa system.\n  example)\n    System has 4GB memory and each node have 2GB. and hibernate need 1GB.\n\n    optimal)\n       steal 500MB from each node.\n    shrink_all_zones)\n       steal 1GB from node-0.\n\n  Oh, Cache balancing logic was broken. ;)\n  Unfortunately, Desktop system moved ahead NUMA at nowadays.\n  (Side note, if hibernate require 2GB, shrink_all_zones() never success\n   on above machine)\n\n3) if the node has several I/O flighting pages, shrink_all_zones() makes\n  pretty bad result.\n\n  schenario) hibernate need 1GB\n\n  1) shrink_all_zones() try to reclaim 1GB from Node-0\n  2) but it only reclaimed 990MB\n  3) stupidly, shrink_all_zones() try to reclaim 1GB from Node-1\n  4) it reclaimed 990MB\n\n  Oh, well. it reclaimed twice much than required.\n  In the other hand, current shrink_zone() has sane baling out logic.\n  then, it doesn\u0027t make overkill reclaim. then, we lost shrink_zones()\u0027s risk.\n\n4) SplitLRU VM always keep active/inactive ratio very carefully. inactive list only\n  shrinking break its assumption. it makes unnecessary OOM risk. it obviously suboptimal.\n\nNow, shrink_all_memory() is only the wrapper function of do_try_to_free_pages().\nit bring good reviewability and debuggability, and solve above problems.\n\nside note: Reclaim logic unificication makes two good side effect.\n - Fix recursive reclaim bug on shrink_all_memory().\n   it did forgot to use PF_MEMALLOC. it mean the system be able to stuck into deadlock.\n - Now, shrink_all_memory() got lockdep awareness. it bring good debuggability.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "22fba33545b731408deab6e96b6e231ee05fd10b",
      "tree": "a522c19e19c2ce82f53ab781ec7901e3bdb8b200",
      "parents": [
        "cba5dd7fa535b7684cba68e17ac8be5b0083dc3d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Dec 14 17:59:10 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:18 2009 -0800"
      },
      "message": "vmscan: separate sc.swap_cluster_max and sc.nr_max_reclaim\n\nCurrently, sc.scap_cluster_max has double meanings.\n\n 1) reclaim batch size as isolate_lru_pages()\u0027s argument\n 2) reclaim baling out thresolds\n\nThe two meanings pretty unrelated. Thus, Let\u0027s separate it.\nthis patch doesn\u0027t change any behavior.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cba5dd7fa535b7684cba68e17ac8be5b0083dc3d",
      "tree": "33d9db04ab06bcdaf6e71003ae29220fe1df7ed4",
      "parents": [
        "1830794ae6392ce12d36dbcc5ff52f11298ddab6"
      ],
      "author": {
        "name": "Alex Chiang",
        "email": "achiang@hp.com",
        "time": "Mon Dec 14 17:59:09 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:18 2009 -0800"
      },
      "message": "Documentation: ABI: /sys/devices/system/cpu/cpu#/node\n\nDescribe NUMA node symlink created for CPUs when CONFIG_NUMA is set.\n\nSigned-off-by: Alex Chiang \u003cachiang@hp.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Gary Hade \u003cgaryhade@us.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1830794ae6392ce12d36dbcc5ff52f11298ddab6",
      "tree": "b1ebda5a62d2b8d904840f041fc334fecc274b18",
      "parents": [
        "b9d52dad9447d0db4b52d67d5e9e9d339b5e8302"
      ],
      "author": {
        "name": "Alex Chiang",
        "email": "achiang@hp.com",
        "time": "Mon Dec 14 17:59:08 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:18 2009 -0800"
      },
      "message": "mm: add numa node symlink for cpu devices in sysfs\n\nYou can discover which CPUs belong to a NUMA node by examining\n/sys/devices/system/node/node#/\n\nHowever, it\u0027s not convenient to go in the other direction, when looking at\n/sys/devices/system/cpu/cpu#/\n\nYes, you can muck about in sysfs, but adding these symlinks makes life a\nlot more convenient.\n\nSigned-off-by: Alex Chiang \u003cachiang@hp.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Gary Hade \u003cgaryhade@us.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b9d52dad9447d0db4b52d67d5e9e9d339b5e8302",
      "tree": "a3b58ae9c722e21567429b71dfc9b7abeee409c6",
      "parents": [
        "f8246f3159dfdf97b8b40f9e03e715bafedd22fc"
      ],
      "author": {
        "name": "Alex Chiang",
        "email": "achiang@hp.com",
        "time": "Mon Dec 14 17:59:07 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:17 2009 -0800"
      },
      "message": "mm: refactor unregister_cpu_under_node()\n\nBy returning early if the node is not online, we can unindent the\ninteresting code by two levels.\n\nNo functional change.\n\nSigned-off-by: Alex Chiang \u003cachiang@hp.com\u003e\nCc: Gary Hade \u003cgaryhade@us.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f8246f3159dfdf97b8b40f9e03e715bafedd22fc",
      "tree": "1e0b87b800a6efbba7c963665c1f129e208a6293",
      "parents": [
        "dee5d0d518defd0337a41f1a504428c9acc87be5"
      ],
      "author": {
        "name": "Alex Chiang",
        "email": "achiang@hp.com",
        "time": "Mon Dec 14 17:59:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:17 2009 -0800"
      },
      "message": "mm: refactor register_cpu_under_node()\n\nBy returning early if the node is not online, we can unindent the\ninteresting code by one level.\n\nNo functional change.\n\nSigned-off-by: Alex Chiang \u003cachiang@hp.com\u003e\nCc: Gary Hade \u003cgaryhade@us.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dee5d0d518defd0337a41f1a504428c9acc87be5",
      "tree": "deb540b5ccc58f0e83114509e17dacb281fc12e5",
      "parents": [
        "d99be1a8ecf377c2c9b3372d36411ad6547bbd4c"
      ],
      "author": {
        "name": "Alex Chiang",
        "email": "achiang@hp.com",
        "time": "Mon Dec 14 17:59:05 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:17 2009 -0800"
      },
      "message": "mm: add numa node symlink for memory section in sysfs\n\nCommit c04fc586c (mm: show node to memory section relationship with\nsymlinks in sysfs) created symlinks from nodes to memory sections, e.g.\n\n/sys/devices/system/node/node1/memory135 -\u003e ../../memory/memory135\n\nIf you\u0027re examining the memory section though and are wondering what node\nit might belong to, you can find it by grovelling around in sysfs, but\nit\u0027s a little cumbersome.\n\nAdd a reverse symlink for each memory section that points back to the\nnode to which it belongs.\n\nSigned-off-by: Alex Chiang \u003cachiang@hp.com\u003e\nCc: Gary Hade \u003cgaryhade@us.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d99be1a8ecf377c2c9b3372d36411ad6547bbd4c",
      "tree": "844a156da951783a46f9cfd0e66858eae12e5f54",
      "parents": [
        "a70caa8ba48f21f46d3b4e71b6b8d14080bbd57a"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:04 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:17 2009 -0800"
      },
      "message": "mm: sigbus instead of abusing oom\n\nWhen do_nonlinear_fault() realizes that the page table must have been\ncorrupted for it to have been called, it does print_bad_pte() and returns\n...  VM_FAULT_OOM, which is hard to understand.\n\nIt made some sense when I did it for 2.6.15, when do_page_fault() just\nkilled the current process; but nowadays it lets the OOM killer decide who\nto kill - so page table corruption in one process would be liable to kill\nanother.\n\nChange it to return VM_FAULT_SIGBUS instead: that doesn\u0027t guarantee that\nthe process will be killed, but is good enough for such a rare\nabnormality, accompanied as it is by the \"BUG: Bad page map\" message.\n\nAnd recent HWPOISON work has copied that code into do_swap_page(), when it\nfinds an impossible swap entry: fix that to VM_FAULT_SIGBUS too.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a70caa8ba48f21f46d3b4e71b6b8d14080bbd57a",
      "tree": "2f6ab917400f82b9d16f1e945ba101a25f5d6281",
      "parents": [
        "1cb1729b1385884648170d9d1d3aa0c66780d64b"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:02 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:17 2009 -0800"
      },
      "message": "mm: stop ptlock enlarging struct page\n\nCONFIG_DEBUG_SPINLOCK adds 12 or 16 bytes to a 32- or 64-bit spinlock_t,\nand CONFIG_DEBUG_LOCK_ALLOC adds another 12 or 24 bytes to it: lockdep\nenables both of those, and CONFIG_LOCK_STAT adds 8 or 16 bytes to that.\n\nWhen 2.6.15 placed the split page table lock inside struct page (usually\nsized 32 or 56 bytes), only CONFIG_DEBUG_SPINLOCK was a possibility, and\nwe ignored the enlargement (but fitted in CONFIG_GENERIC_LOCKBREAK\u0027s 4 by\nletting the spinlock_t occupy both page-\u003eprivate and page-\u003emapping).\n\nShould these debugging options be allowed to double the size of a struct\npage, when only one minority use of the page (as a page table) needs to\nfit a spinlock in there?  Perhaps not.\n\nTake the easy way out: switch off SPLIT_PTLOCK_CPUS when DEBUG_SPINLOCK or\nDEBUG_LOCK_ALLOC is in force.  I\u0027ve sometimes tried to be cleverer,\nkmallocing a cacheline for the spinlock when it doesn\u0027t fit, but given up\neach time.  Falling back to mm-\u003epage_table_lock (as we do when ptlock is\nnot split) lets lockdep check out the strictest path anyway.\n\nAnd now that some arches allow 8192 cpus, use 999999 for infinity.\n\n(What has this got to do with KSM swapping?  It doesn\u0027t care about the\nsize of struct page, but may care about random junk in page-\u003emapping - to\nbe explained separately later.)\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1cb1729b1385884648170d9d1d3aa0c66780d64b",
      "tree": "57b9e58d70f791f2737997bf56a2dad98378d54d",
      "parents": [
        "af8e3354b4bbd1ee5a3a55d11a5e1fe37e77f0ba"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:17 2009 -0800"
      },
      "message": "mm: pass address down to rmap ones\n\nKSM swapping will know where page_referenced_one() and try_to_unmap_one()\nshould look.  It could hack page-\u003eindex to get them to do what it wants,\nbut it seems cleaner now to pass the address down to them.\n\nMake the same change to page_mkclean_one(), since it follows the same\npattern; but there\u0027s no real need in its case.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af8e3354b4bbd1ee5a3a55d11a5e1fe37e77f0ba",
      "tree": "8dc0ece80878d00409d4662c5fd1e28cd7fbbdd8",
      "parents": [
        "53f79acb6ecb648afd63e0f13deba167f1a934df"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:58:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:17 2009 -0800"
      },
      "message": "mm: CONFIG_MMU for PG_mlocked\n\nRemove three degrees of obfuscation, left over from when we had\nCONFIG_UNEVICTABLE_LRU.  MLOCK_PAGES is CONFIG_HAVE_MLOCKED_PAGE_BIT is\nCONFIG_HAVE_MLOCK is CONFIG_MMU.  rmap.o (and memory-failure.o) are only\nbuilt when CONFIG_MMU, so don\u0027t need such conditions at all.\n\nSomehow, I feel no compulsion to remove the CONFIG_HAVE_MLOCK* lines from\n169 defconfigs: leave those to evolve in due course.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53f79acb6ecb648afd63e0f13deba167f1a934df",
      "tree": "48d9b998fa45c4fe510447d17cdc050f31be5e23",
      "parents": [
        "3ca7b3c5b64d35fe02c35b5d44c2c58b49499fee"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:58:58 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:17 2009 -0800"
      },
      "message": "mm: mlocking in try_to_unmap_one\n\nThere\u0027s contorted mlock/munlock handling in try_to_unmap_anon() and\ntry_to_unmap_file(), which we\u0027d prefer not to repeat for KSM swapping.\nSimplify it by moving it all down into try_to_unmap_one().\n\nOne thing is then lost, try_to_munlock()\u0027s distinction between when no vma\nholds the page mlocked, and when a vma does mlock it, but we could not get\nmmap_sem to set the page flag.  But its only caller takes no interest in\nthat distinction (and is better testing SWAP_MLOCK anyway), so let\u0027s keep\nthe code simple and return SWAP_AGAIN for both cases.\n\ntry_to_unmap_file()\u0027s TTU_MUNLOCK nonlinear handling was particularly\namusing: once unravelled, it turns out to have been choosing between two\ndifferent ways of doing the same nothing.  Ah, no, one way was actually\nreturning SWAP_FAIL when it meant to return SWAP_SUCCESS.\n\n[kosaki.motohiro@jp.fujitsu.com: comment adding to mlocking in try_to_unmap_one]\n[akpm@linux-foundation.org: remove test of MLOCK_PAGES]\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ca7b3c5b64d35fe02c35b5d44c2c58b49499fee",
      "tree": "bb6af24d3683788ef658282f8794af19d2232663",
      "parents": [
        "bb3ab596832b920c703d1aea1ce76d69c0f71fb7"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:58:57 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:17 2009 -0800"
      },
      "message": "mm: define PAGE_MAPPING_FLAGS\n\nAt present we define PageAnon(page) by the low PAGE_MAPPING_ANON bit set\nin page-\u003emapping, with the higher bits a pointer to the anon_vma; and have\ndefined PageKsm(page) as that with NULL anon_vma.\n\nBut KSM swapping will need to store a pointer there: so in preparation for\nthat, now define PAGE_MAPPING_FLAGS as the low two bits, including\nPAGE_MAPPING_KSM (always set along with PAGE_MAPPING_ANON, until some\nother use for the bit emerges).\n\nDeclare page_rmapping(page) to return the pointer part of page-\u003emapping,\nand page_anon_vma(page) to return the anon_vma pointer when that\u0027s what it\nis.  Use these in a few appropriate places: notably, unuse_vma() has been\ntesting page-\u003emapping, but is better to be testing page_anon_vma() (cases\nmay be added in which flag bits are set without any pointer).\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bb3ab596832b920c703d1aea1ce76d69c0f71fb7",
      "tree": "048162bf5081e7bd9802eba012e8b680a4444da8",
      "parents": [
        "f50de2d3811081957156b5d736778799379c29de"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Dec 14 17:58:55 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:16 2009 -0800"
      },
      "message": "vmscan: stop kswapd waiting on congestion when the min watermark is not being met\n\nIf reclaim fails to make sufficient progress, the priority is raised.\nOnce the priority is higher, kswapd starts waiting on congestion.\nHowever, if the zone is below the min watermark then kswapd needs to\ncontinue working without delay as there is a danger of an increased rate\nof GFP_ATOMIC allocation failure.\n\nThis patch changes the conditions under which kswapd waits on congestion\nby only going to sleep if the min watermarks are being met.\n\n[mel@csn.ul.ie: add stats to track how relevant the logic is]\n[mel@csn.ul.ie: make kswapd only check its own zones and rename the relevant counters]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "f50de2d3811081957156b5d736778799379c29de"
}
