)]}'
{
  "log": [
    {
      "commit": "dd14f71cc62dd07b588cc6de935155e6fd3911c9",
      "tree": "d046369dd130cf4ce16c75d61377e0dda79ce9ea",
      "parents": [
        "7cade31cabec33c396b1dfd9c2842e793c2648ef"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:28 2009 -0700"
      },
      "message": "cirrusfb: fix clock doubling\n\nCirrus\u0027 Alpine and Picasso4 chips uses DAC clock doubling to achieve full\nrange of pixclock frequencies.\n\n[akpm@linux-foundation.org: fix spelling, use usual comment layout]\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7cade31cabec33c396b1dfd9c2842e793c2648ef",
      "tree": "b9faabfd7470e657670bbd794286fb80e6c8d13a",
      "parents": [
        "527410ff7fc5d45fe41523c0ba061113dea22017"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:28 2009 -0700"
      },
      "message": "cirrusfb: use 24bpp instead of 32bpp\n\nThe 32bpp is supported only on the latest Cirrus Logic chips.  Use the\n24bpp which is supported at least since Alpine chips (GD543x).\n\nChange 32bpp mode setting to 24bpp mode.  Change acceleration as well.\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "527410ff7fc5d45fe41523c0ba061113dea22017",
      "tree": "d10016fad7c224f09b572dcab4e3ab46c7ec8f86",
      "parents": [
        "bc5d8ac02f24d68efe8e267c96dd75c0531009ab"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:28 2009 -0700"
      },
      "message": "cirrusfb: GD5446 fixes\n\nVarious fixes to make Cirrus GD5446 chip work.\n\nAnother Cirrus chip works with the cirrusfb.  The gd5446 seems very\nsimilar to Alpine chips.\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bc5d8ac02f24d68efe8e267c96dd75c0531009ab",
      "tree": "0876991e7a956532428169a10939588e9399a395",
      "parents": [
        "9e848062533207130667f6eaa748549367ccbedf"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:28 2009 -0700"
      },
      "message": "cirrusfb: fix error paths in cirrusfb_xxx_register()\n\nBalance iomap and iounmap and alloc and free calls in case of error druing\ndevice register (probing).\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e848062533207130667f6eaa748549367ccbedf",
      "tree": "ad651331ecaf303dd94490a57cc4c5271f8095ba",
      "parents": [
        "8343c89c4f1aac4fced7bb6919b0bdd0c13edcdc"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:28 2009 -0700"
      },
      "message": "cirrusfb: add imageblit function\n\nAdd hardware color expansion (imageblit) function.  It roughly doubles\nscrolling speed of my Alpine card (GD5430).\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8343c89c4f1aac4fced7bb6919b0bdd0c13edcdc",
      "tree": "7ab000f00e0a12706b110091dc5f16a5cfd340bb",
      "parents": [
        "78d780e07247d52d3943b019bf9459bc9e95de1e"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:28 2009 -0700"
      },
      "message": "cirrusfb: acceleration improvements\n\n- Fix color expansion for 16bpp and 32bpp modes in the\n  cirrusfb_RectFill().\n\n- Make a function with a common blitter code (cirrusfb_set_blitter).\n\n- Add fb_sync function to allow a higher layer synchronize with the\n  blitter.\n\n- Kill one redundant blitter reset.\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "78d780e07247d52d3943b019bf9459bc9e95de1e",
      "tree": "87e7f4f973fe7cf4ab2332afb354cbc9135c58a5",
      "parents": [
        "99a4584752bb41330342a427d014482525de7433"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:28 2009 -0700"
      },
      "message": "cirrusfb: various Laguna fixes\n\n- The Laguna GD5465 (AGP) has one register more than non-AGP chips.\n  Recognize the AGP version and write a tile control register only on the\n  AGP version.  Tested only on an AGP card.\n\n- Bump up RAMDAC frequencies after X11 code.  This allow to drive a flat\n  panel resolution 1680x1050 at 16bpp from the 4MB card.\n\n- Fix screen start address overflow bits on Laguna cards (CRT1D\n  register).\n\n- Fix exit path in the cirrusfb_pci_register() in case of error.\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "99a4584752bb41330342a427d014482525de7433",
      "tree": "5a705f234f5ace69c028578102919394dfc0bf26",
      "parents": [
        "1b48cb563d59e03dbf530174f30c0ed3b6fba513"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:27 2009 -0700"
      },
      "message": "cirrusfb: check_var improvements\n\nBreak cirrusfb_decode_var() function into two parts:\ncirrusfb_check_pixclock() which can be called from the\ncirrusfb_check_var() aand merge rest into the cirrusfb_set_par_foo().\nThis allows rejecting modes with too high pixclock before before any\nchange to hardware state (and a console is messed up).\n\nAlso, fix RGB field\u0027s lengths for 8bpp modes to correct ones so X11 works\nwith fbdev driver with cirrusfb.\n\nKill some redundant function calls or register loads.\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b48cb563d59e03dbf530174f30c0ed3b6fba513",
      "tree": "cef000929c4366c6a92b5456981a88a41e461d4f",
      "parents": [
        "48c329e906f834711906ab4b0986ea0e857aff16"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:08 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:27 2009 -0700"
      },
      "message": "cirrusfb: Laguna chipset 8bpp fix\n\nFix 8bpp mode by adding handling of the Laguna chipsets to various places\nand stop trashing a HDR register which probably does not exist on the\nLaguna.\n\nFix compilation warnings about uninitialized variables also.\n\nFinally, all 8bpp, 16bpp and 32bpp modes work on the Laguna chipset.\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "48c329e906f834711906ab4b0986ea0e857aff16",
      "tree": "37ba1eb85da5b884ee206b2c4f30b07e782f9798",
      "parents": [
        "c4dec3962d6bff26010fcfc61500c1241469a6e0"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:08 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:27 2009 -0700"
      },
      "message": "cirrusfb: various improvements\n\nVarious improvements to the code:\n- kill a structure with only one\n  field: multiplexing and use the\n  field directly\n- move the cirrusfb_ops structure\n  down the file to kill forward\n  declarations\n- move cirrusfb_init() to kill\n  forward declaration\n- kill register loads done already\n  in the init_vgachip()\n- kill assigments done by higher\n  layer in the cirrusfb_pan_display()\n- do not overwrite line pitch bit in\n  the CL_CRT1D register\n- kill btype variables if they were\n  used only once or twice\n- add cpu_relax() in the busy waiting\n  loop\n\nThe fix to the CL_CRT1D register handling makess the 1024x768 32bpp mode\nwork.  Previously, only lower resolution modes have worked with 32bpp.\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@poczta.fm\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c4dec3962d6bff26010fcfc61500c1241469a6e0",
      "tree": "3d143c5965d565c7b451aa3cef6d1ebb25f41803",
      "parents": [
        "6683e01e2c950f635a6c0e2bbc80db1b1838311f"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:07 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:27 2009 -0700"
      },
      "message": "cirrusfb: use 5-6-5 RGB for 16bpp mode\n\nUse the 5-6-5 RGB mode instead of the 5-5-5 mode at 16bpp depth.\n\nIt fixes colors in the 16bpp modes on Cirrus Laguna chips.\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nCc: Geert Uytterhoeven \u003cgeert.uytterhoeven@gmail.com\u003e\nCc: Arthur Marsh \u003carthur.marsh@internode.on.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6683e01e2c950f635a6c0e2bbc80db1b1838311f",
      "tree": "eb28f4a41326da8133d16665618d80c52b2e3c23",
      "parents": [
        "6e30fc086d000d15abfe5550cc8b286335f7e132"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:06 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:27 2009 -0700"
      },
      "message": "cirrusfb: do not calculate line length twice\n\nA line length is calculated twice: first in the cirrusfb_decode_var() then\nin the cirrusfb_set_par_foo().\n\nUse the first calculated value.  A nice side effect is that 32bpp mode\nworks now.\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nCc: Geert Uytterhoeven \u003cgeert.uytterhoeven@gmail.com\u003e\nCc: Arthur Marsh \u003carthur.marsh@internode.on.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6e30fc086d000d15abfe5550cc8b286335f7e132",
      "tree": "82e92def6ce4ed71634e0a14f458229bf81682c5",
      "parents": [
        "213d4bdd8cd405d9ba59ee78165b8c870f83a018"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:05 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:27 2009 -0700"
      },
      "message": "cirrusfb: add mmio registers for Laguna chipsets\n\nThe Laguna chipsets use special registers which are available through the\nmmio area.  The cirrusfb driver does not use memory mapped registers for\nthe PCI cards.\n\nAdd the memory mapped area for Laguna chipsets and add basic usage of the\nspecial Laguna registers after SVGALIB code.\n\nThis gives readable console at 16bpp on the GD-5465 (Laguna AGP).  The\n8bpp and 32bpp depths are still broken.\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "213d4bdd8cd405d9ba59ee78165b8c870f83a018",
      "tree": "ee9f4cdf2d8a964f2d75b5948b059ada6e62fe94",
      "parents": [
        "55a4ea6ab0fff0c02f101a60d2ba4f1794990499"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:27 2009 -0700"
      },
      "message": "cirrusfb: add Laguna additional overflow register\n\nAdd additional overflow register setting for Laguna chips.\n\nAlso, simplify some code in the cirrusfb_pan_display() and\ncirrusfb_blank().\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "55a4ea6ab0fff0c02f101a60d2ba4f1794990499",
      "tree": "d96c20273c540c41cfc91dc59197dad534060d2d",
      "parents": [
        "75ed3a17a5bc0ecff5c256cfb81ed06f8a6fbb54"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@wp.pl",
        "time": "Tue Mar 31 15:25:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:26 2009 -0700"
      },
      "message": "cirrusfb: fix Laguna chipset memory detection and clock setting\n\nFix memory detection and clock setting for Cirrus Laguna chipsets\n(GD5464/GD5465).  The changes are done after the Xorg code.\n\nThe driver still does not display anything on the GD5465 but it switches\nresolutions correctly at least.\n\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "75ed3a17a5bc0ecff5c256cfb81ed06f8a6fbb54",
      "tree": "63f6c71c2c2e94373e3ba2d4eb86c72e4bac7cba",
      "parents": [
        "d5cb78feee7b6631f578e12bda1e86eea7923637"
      ],
      "author": {
        "name": "Krzysztof Helt",
        "email": "krzysztof.h1@poczta.fm",
        "time": "Tue Mar 31 15:25:03 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:26 2009 -0700"
      },
      "message": "cirrusfb: convert printks to dev_foo\n\nConvert all printks to dev_dbg, dev_info or dev_err.  Kill some excessive\ndebug information and code in the process.\n\n[akpm@linux-foundation.org: printk fixes]\n[akpm@linux-foundation.org: cleanups]\nSigned-off-by: Krzysztof Helt \u003ckrzysztof.h1@poczta.fm\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d5cb78feee7b6631f578e12bda1e86eea7923637",
      "tree": "7d47de49ab57b6ec5bbc49b0a3e32220acae5233",
      "parents": [
        "6e6fe42227e23a379d3c70f6ff257131399e4075"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue Mar 31 15:25:02 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:26 2009 -0700"
      },
      "message": "atyfb: fix header file trailing whitespace\n\nFix trailing whitespace because quilt complained about it.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6e6fe42227e23a379d3c70f6ff257131399e4075",
      "tree": "4d45805d093696a61cf19639b7ad298eb4046a5e",
      "parents": [
        "fa7af8b1bb6dfca7a0c8541683a9bfffbc8dd345"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Mar 31 15:25:01 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:26 2009 -0700"
      },
      "message": "drivers/video/uvesafb.c: don\u0027t use gfp_any()\n\nGFP_KERNEL is legal here - we don\u0027t need to use gfp_any().\n\nCc: Evgeniy Polyakov \u003cjohnpol@2ka.mipt.ru\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\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": "fa7af8b1bb6dfca7a0c8541683a9bfffbc8dd345",
      "tree": "e13f984d52f16ab82f5842d1f2267e13b8c06e36",
      "parents": [
        "c08cf9daf66844c60ebe9f89885d3a3e1893e61f"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Tue Mar 31 15:25:00 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:26 2009 -0700"
      },
      "message": "rtc: test before subtraction on unsigned\n\nnew_alarm is unsigned so test before the subtraction.\n\n[akpm@linux-foundation.org: time-wrapping fix]\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: 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": "c08cf9daf66844c60ebe9f89885d3a3e1893e61f",
      "tree": "add5564b6e5e81208eb1ff7c46741aef141726f3",
      "parents": [
        "62da659a7057f7227a99a42eea6aa606b09c1e8c"
      ],
      "author": {
        "name": "Mike Rapoport",
        "email": "mike@compulab.co.il",
        "time": "Tue Mar 31 15:24:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:26 2009 -0700"
      },
      "message": "rtc-v3020: coding style cleanup\n\nSigned-off-by: Mike Rapoport \u003cmike@compulab.co.il\u003e\nAcked-by: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "62da659a7057f7227a99a42eea6aa606b09c1e8c",
      "tree": "580881d892f50d919ae885e9e7cc220be66b8868",
      "parents": [
        "a216685818a54b4f15235068b53908f954850251"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Tue Mar 31 15:24:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:26 2009 -0700"
      },
      "message": "rtc-wm8350: retries will reach -1\n\nWith a postfix decrement retries will reach -1 rather than 0, so the\nwarning and error-out will not occur.\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nAcked-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nCc: 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": "a216685818a54b4f15235068b53908f954850251",
      "tree": "c44c65ac4c71637e088e3527b8ef55eaa6938552",
      "parents": [
        "30e7b039b1f9a6d5a4e50df5469a4f347ea1aa77"
      ],
      "author": {
        "name": "Matthias Fuchs",
        "email": "matthias.fuchs@esd-electronics.com",
        "time": "Tue Mar 31 15:24:58 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:25 2009 -0700"
      },
      "message": "rtc: add EPSON RX8025 support to DS1307 RTC driver\n\nAdd support for the EPSON RX8025 RTC.  The date/time registers of this\nchip are compatible with the DS1307.\n\nSigned-off-by: Matthias Fuchs \u003cmatthias.fuchs@esd-electronics.com\u003e\nSigned-off-by: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "30e7b039b1f9a6d5a4e50df5469a4f347ea1aa77",
      "tree": "901a186c2e97ff83804992ecaf4f9e52be8aadff",
      "parents": [
        "b250c96ea9d7bc0b9ac3ff6e878b254b0b0b6abc"
      ],
      "author": {
        "name": "Ed Swierk",
        "email": "eswierk@aristanetworks.com",
        "time": "Tue Mar 31 15:24:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:25 2009 -0700"
      },
      "message": "rtc-ds1307: true SMBus compatibility\n\nAllow the rtc-ds1307 driver to work with SMBus controllers like nforce2\nthat do not support i2c block transfers.\n\nSigned-off-by: Ed Swierk \u003ceswierk@aristanetworks.com\u003e\nAcked-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\nAcked-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: BARRE Sebastien \u003csbarre@sdelcc.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b250c96ea9d7bc0b9ac3ff6e878b254b0b0b6abc",
      "tree": "327e396f437150e334859e3ac9fde55c78af8824",
      "parents": [
        "a8c20cd3f7e2e223898c53adfb74420db5d9ac47"
      ],
      "author": {
        "name": "dann frazier",
        "email": "dannf@hp.com",
        "time": "Tue Mar 31 15:24:55 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:25 2009 -0700"
      },
      "message": "rtc-parisc: rename p pointer to rtc\n\nSigned-off-by: dann frazier \u003cdannf@hp.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a8c20cd3f7e2e223898c53adfb74420db5d9ac47",
      "tree": "63193b6fd5ccdd2e489870eb036eea957a19ffb3",
      "parents": [
        "cd875d4767f821dabd0feb668623a42e9d48158a"
      ],
      "author": {
        "name": "dann frazier",
        "email": "dannf@hp.com",
        "time": "Tue Mar 31 15:24:55 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:25 2009 -0700"
      },
      "message": "rtc-parisc: remove a couple unnecessary variables\n\nSigned-off-by: dann frazier \u003cdannf@hp.com\u003e\nReviewed-by: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cd875d4767f821dabd0feb668623a42e9d48158a",
      "tree": "8f39946ce5b14bf685e5e2446149f873cb3f981d",
      "parents": [
        "d09c091b6a8b2b73381e514d68c73580f2294b03"
      ],
      "author": {
        "name": "dann frazier",
        "email": "dannf@hp.com",
        "time": "Tue Mar 31 15:24:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:25 2009 -0700"
      },
      "message": "rtc-parisc: remove unnecessary ret variable\n\nSigned-off-by: dann frazier \u003cdannf@hp.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d09c091b6a8b2b73381e514d68c73580f2294b03",
      "tree": "8344dafca09c29053a7c443e44a201a7c9f77ed0",
      "parents": [
        "2b93cff4dc184bf7b4858dc7a9bd2e8d33c1a3eb"
      ],
      "author": {
        "name": "dann frazier",
        "email": "dannf@hp.com",
        "time": "Tue Mar 31 15:24:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:25 2009 -0700"
      },
      "message": "rtc-parisc: declare rtc_parisc_dev as static\n\nSigned-off-by: dann frazier \u003cdannf@hp.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b93cff4dc184bf7b4858dc7a9bd2e8d33c1a3eb",
      "tree": "4a07200a2a3e3b4f9b6adaab121e05f73bc71aef",
      "parents": [
        "f62bacd4d48a1a6b8931a0140fb2324a06dd89fe"
      ],
      "author": {
        "name": "dann frazier",
        "email": "dannf@hp.com",
        "time": "Tue Mar 31 15:24:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:25 2009 -0700"
      },
      "message": "rtc-parisc: use platform_driver_probe\n\nThis isn\u0027t a hotpluggable device, so call platform_driver_probe\ndirectly in parisc_rtc_init\n\nSigned-off-by: dann frazier \u003cdannf@hp.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f62bacd4d48a1a6b8931a0140fb2324a06dd89fe",
      "tree": "e6c9f437975d2ec96eeebb503ce66fabec0cf1ee",
      "parents": [
        "6b318f66dca829a72c974083cc10fd5556eec6f1"
      ],
      "author": {
        "name": "dann frazier",
        "email": "dannf@hp.com",
        "time": "Tue Mar 31 15:24:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:24 2009 -0700"
      },
      "message": "rtc-parisc: use rtc_valid_tm() in parisc_get_time\n\nUse the return value of rtc_valid_tm() instead of just returning 0.\n\nSigned-off-by: dann frazier \u003cdannf@hp.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6b318f66dca829a72c974083cc10fd5556eec6f1",
      "tree": "d093c8b50a8a28af03e678322eca1bdc6ef5c70e",
      "parents": [
        "05439f1f89aebbdb791c49e980f0f31652e4055b"
      ],
      "author": {
        "name": "dann frazier",
        "email": "dannf@hp.com",
        "time": "Tue Mar 31 15:24:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:24 2009 -0700"
      },
      "message": "rtc-parisc: remove struct parisc_rtc\n\nparisc_rtc now only includes an rtc_device pointer, so let\u0027s\njust use the rtc_device type directly.\n\nSigned-off-by: dann frazier \u003cdannf@hp.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "05439f1f89aebbdb791c49e980f0f31652e4055b",
      "tree": "b5febd4d45e55e14ccd804f875d2373c36452b99",
      "parents": [
        "93d456d9802a40859ecc3d67be8c759b03aa487d"
      ],
      "author": {
        "name": "dann frazier",
        "email": "dannf@hp.com",
        "time": "Tue Mar 31 15:24:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:24 2009 -0700"
      },
      "message": "rtc-parisc: remove redundant locking\n\nThe RTC subsystem proides ops locking, no need to implement our own\n\nSigned-off-by: dann frazier \u003cdannf@hp.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "93d456d9802a40859ecc3d67be8c759b03aa487d",
      "tree": "d617fda6933c22fd5a6b4304355ebf8df4894f78",
      "parents": [
        "5e3fd9e5810f141c9c70c36992d4ed72b3aa1fed"
      ],
      "author": {
        "name": "dann frazier",
        "email": "dannf@hp.com",
        "time": "Tue Mar 31 15:24:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:24 2009 -0700"
      },
      "message": "rtc-parisc: add a missing include for linux/rtc.h\n\nSigned-off-by: dann frazier \u003cdannf@hp.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5e3fd9e5810f141c9c70c36992d4ed72b3aa1fed",
      "tree": "002025896b9ec87f14a98a82a8a80055e7b2daae",
      "parents": [
        "78d89ef40c2ff7265df077e20c4d76be7d415204"
      ],
      "author": {
        "name": "dann frazier",
        "email": "dannf@dannf.org",
        "time": "Tue Mar 31 15:24:48 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:24 2009 -0700"
      },
      "message": "rtc: add platform driver for EFI\n\nMunge Stephane Eranian\u0027s efirtc.c code into an rtc platform driver\n\n[akpm@linux-foundation.org: use is_leap_year()]\nSigned-off-by: dann frazier \u003cdannf@hp.com\u003e\nCc: Alessandro Zummo \u003calessandro.zummo@towertech.it\u003e\nCc: stephane eranian \u003ceranian@googlemail.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "78d89ef40c2ff7265df077e20c4d76be7d415204",
      "tree": "68503b0252682a496495b7adb46f6aa278db88ae",
      "parents": [
        "47367a3ba425d70467af0009782098235ddbf204"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Mar 31 15:24:48 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:24 2009 -0700"
      },
      "message": "rtc: convert LEAP_YEAR into an inline\n\n- the LEAP_YEAR macro is buggy - it references its arg multiple times.\n  Fix this by turning it into a C function.\n\n- give it a more approriate name\n\n- Move it to rtc.h so that other .c files can use it, instead of copying it.\n\nCc: dann frazier \u003cdannf@hp.com\u003e\nAcked-by: Alessandro Zummo \u003calessandro.zummo@towertech.it\u003e\nCc: stephane eranian \u003ceranian@googlemail.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "47367a3ba425d70467af0009782098235ddbf204",
      "tree": "c929140bc7d6a68c0e0f6b6a531ba4cd864022b7",
      "parents": [
        "79955898f961a870cbcc58f6ae13f3741a909da5"
      ],
      "author": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Tue Mar 31 15:24:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:24 2009 -0700"
      },
      "message": "rtc: convert wm8350 use new alarm and update operations\n\nThese are the only two ioctls so the ioctl() function is also removed.\n\nSigned-off-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nCc: Acked-by: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "79955898f961a870cbcc58f6ae13f3741a909da5",
      "tree": "f1b1110446e7df4382f23eddd874ee875e4ed26d",
      "parents": [
        "8f63aaa8b9239475fc580d4450f1141496655305"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Mar 31 15:24:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "autofs4: fix kernel includes\n\nautofs_dev-ioctl.h is included by both the kernel module and user space tools\nand it includes two kernel header files.  Compiles work if the kernel headers\nare installed but fail otherwise.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8f63aaa8b9239475fc580d4450f1141496655305",
      "tree": "eca8552ab842a7a2eecea104e5842f7bccadf09b",
      "parents": [
        "56fcef75117a153f298b3fe54af31053f53997dd"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Mar 31 15:24:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "autofs4: fix lookup deadlock\n\nA deadlock can occur when user space uses a signal (autofs version 4 uses\nSIGCHLD for this) to effect expire completion.\n\nThe order of events is:\n\nExpire process completes, but before being able to send SIGCHLD to it\u0027s parent\n...\n\nAnother process walks onto a different mount point and drops the directory\ninode semaphore prior to sending the request to the daemon as it must ...\n\nA third process does an lstat on on the expired mount point causing it to wait\non expire completion (unfortunately) holding the directory semaphore.\n\nThe mount request then arrives at the daemon which does an lstat and,\ndeadlock.\n\nFor some time I was concerned about releasing the directory semaphore around\nthe expire wait in autofs4_lookup as well as for the mount call back.  I\nfinally realized that the last round of changes in this function made the\nexpiring dentry and the lookup dentry separate and distinct so the check and\npossible wait can be done anywhere prior to the mount call back.  This patch\nmoves the check to just before the mount call back and inside the directory\ninode mutex release.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56fcef75117a153f298b3fe54af31053f53997dd",
      "tree": "56b7a86c811e5f83c232b0f21c5fcf894795fd42",
      "parents": [
        "00fcf2cb6f6bb421851c3ba062c0a36760ea6e53"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Mar 31 15:24:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "autofs4: cleanup expire code duplication\n\nA significant portion of the autofs_dev_ioctl_expire() and\nautofs4_expire_multi() functions is duplicated code.  This patch cleans that\nup.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Jeff Moyer \u003cjmoyer@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": "00fcf2cb6f6bb421851c3ba062c0a36760ea6e53",
      "tree": "741afc144a87af1aa7915d812924da7d7418611f",
      "parents": [
        "e2801806de1c9c1d03b7d1bfcb2e01dd4d389e80"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Mar 31 15:24:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "ecryptfs: use kzfree()\n\nUse kzfree() instead of memset() + kfree().\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Tyler Hicks \u003ctyhicks@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": "e2801806de1c9c1d03b7d1bfcb2e01dd4d389e80",
      "tree": "db061987cacc20ba4962605188248b17c67a69c0",
      "parents": [
        "754582853120a9ec8b8293b5147b605b1c6a39f1"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "avorontsov@ru.mvista.com",
        "time": "Tue Mar 31 15:24:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "powerpc/fsl_soc: isolate legacy fsl_spi support to mpc832x_rdb boards\n\nThe advantages of this:\n- Don\u0027t encourage legacy support;\n- Less external symbols, less code to compile-in for !MPC832x_RDB\n  platforms.\n\nSigned-off-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Kumar Gala \u003cgalak@gate.crashing.org\u003e\nCc: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "754582853120a9ec8b8293b5147b605b1c6a39f1",
      "tree": "38495bf24d655d49dd26a14e3cfb7b75f9ddef14",
      "parents": [
        "3f1c6ebf57b815ad709e89291e446935fee78f75"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "avorontsov@ru.mvista.com",
        "time": "Tue Mar 31 15:24:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "powerpc/83xx: add mmc-spi support via the device tree for MPC8323E-RDB\n\n- Add gpio-controller node to manage QE GPIO Bank D;\n- Add mmc-spi node;\n- Modify board file so that it won\u0027t use legacy SPI support with the new\n  device trees.\n\nSigned-off-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Kumar Gala \u003cgalak@gate.crashing.org\u003e\nCc: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3f1c6ebf57b815ad709e89291e446935fee78f75",
      "tree": "f80e2cc24cf7cab1fc4b33c6f32de125073e57b0",
      "parents": [
        "35b4b3c0c1265f1a7342574be393c157601401f0"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "avorontsov@ru.mvista.com",
        "time": "Tue Mar 31 15:24:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "powerpc: add mmc-spi-slot bindings\n\nThe bindings describes a case where MMC/SD/SDIO slot directly connected to\na SPI bus.  Such setups are widely used on embedded PowerPC boards.\n\nThe patch also adds the mmc-spi-slot entry to the OpenFirmware modalias\ntable.\n\nSigned-off-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Kumar Gala \u003cgalak@gate.crashing.org\u003e\nCc: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "35b4b3c0c1265f1a7342574be393c157601401f0",
      "tree": "ca12b33dbe911f1ba02cff197fcfb5928ab5763b",
      "parents": [
        "364fdbc00fbdd409ade63500710123fe323aa164"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "avorontsov@ru.mvista.com",
        "time": "Tue Mar 31 15:24:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:22 2009 -0700"
      },
      "message": "spi_mpc83xx: add OF platform driver bindings\n\nImplement full support for OF SPI bindings.  Now the driver can manage its\nown chip selects without any help from the board files and/or fsl_soc\nconstructors.\n\nThe \"legacy\" code is well isolated and could be removed as time goes by.\n\nSigned-off-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Kumar Gala \u003cgalak@gate.crashing.org\u003e\nCc: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "364fdbc00fbdd409ade63500710123fe323aa164",
      "tree": "0a2c4c85f5dd3b6e91ff5d68f419069178e5a9bb",
      "parents": [
        "34c8a20c6ee6af25ee35da9ca15ba81faacfc73d"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "avorontsov@ru.mvista.com",
        "time": "Tue Mar 31 15:24:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:22 2009 -0700"
      },
      "message": "spi_mpc83xx: rework chip selects handling\n\nThe main purpose of this patch is to pass \u0027struct spi_device\u0027 to the chip\nselect handling routines.  This is needed so that we could implement\nfull-fledged OpenFirmware support for this driver.\n\nWhile at it, also:\n- Replace two {de,activate}_cs routines by single cs_contol().\n- Don\u0027t duplicate platform data callbacks in mpc83xx_spi struct.\n\nSigned-off-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Kumar Gala \u003cgalak@gate.crashing.org\u003e\nCc: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "34c8a20c6ee6af25ee35da9ca15ba81faacfc73d",
      "tree": "6d6ad66575877a04f57a1e0706fa2b256331e8e7",
      "parents": [
        "c3b1b1cbf002e65a3cabd479e68b5f35886a26db"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "avorontsov@ru.mvista.com",
        "time": "Tue Mar 31 15:24:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:22 2009 -0700"
      },
      "message": "spi_mpc83xx: fix sparse warnings\n\nThe patch fixes following sparse warnings:\n\n  CHECK   spi_mpc83xx.c\nspi_mpc83xx.c:145:1: warning: symbol \u0027mpc83xx_spi_rx_buf_u8\u0027 was not declared. Should it be static?\nspi_mpc83xx.c:146:1: warning: symbol \u0027mpc83xx_spi_rx_buf_u16\u0027 was not declared. Should it be static?\nspi_mpc83xx.c:147:1: warning: symbol \u0027mpc83xx_spi_rx_buf_u32\u0027 was not declared. Should it be static?\nspi_mpc83xx.c:148:1: warning: symbol \u0027mpc83xx_spi_tx_buf_u8\u0027 was not declared. Should it be static?\nspi_mpc83xx.c:149:1: warning: symbol \u0027mpc83xx_spi_tx_buf_u16\u0027 was not declared. Should it be static?\nspi_mpc83xx.c:150:1: warning: symbol \u0027mpc83xx_spi_tx_buf_u32\u0027 was not declared. Should it be static?\nspi_mpc83xx.c:175:32: warning: incorrect type in initializer (different address spaces)\nspi_mpc83xx.c:175:32:    expected void *tmp_ptr\nspi_mpc83xx.c:175:32:    got unsigned int [noderef] \u003casn:2\u003e*\u003cnoident\u003e\nspi_mpc83xx.c:183:26: warning: incorrect type in argument 1 (different address spaces)\nspi_mpc83xx.c:183:26:    expected unsigned int [noderef] [usertype] \u003casn:2\u003e*reg\nspi_mpc83xx.c:183:26:    got void *tmp_ptr\nspi_mpc83xx.c:184:26: warning: incorrect type in argument 1 (different address spaces)\nspi_mpc83xx.c:184:26:    expected unsigned int [noderef] [usertype] \u003casn:2\u003e*reg\nspi_mpc83xx.c:184:26:    got void *tmp_ptr\nspi_mpc83xx.c:287:31: warning: incorrect type in initializer (different address spaces)\nspi_mpc83xx.c:287:31:    expected void *tmp_ptr\nspi_mpc83xx.c:287:31:    got unsigned int [noderef] \u003casn:2\u003e*\u003cnoident\u003e\nspi_mpc83xx.c:295:25: warning: incorrect type in argument 1 (different address spaces)\nspi_mpc83xx.c:295:25:    expected unsigned int [noderef] [usertype] \u003casn:2\u003e*reg\nspi_mpc83xx.c:295:25:    got void *tmp_ptr\nspi_mpc83xx.c:296:25: warning: incorrect type in argument 1 (different address spaces)\nspi_mpc83xx.c:296:25:    expected unsigned int [noderef] [usertype] \u003casn:2\u003e*reg\nspi_mpc83xx.c:296:25:    got void *tmp_ptr\nspi_mpc83xx.c:486:13: warning: symbol \u0027mpc83xx_spi_irq\u0027 was not declared. Should it be static?\n\nSigned-off-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Kumar Gala \u003cgalak@gate.crashing.org\u003e\nCc: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c3b1b1cbf002e65a3cabd479e68b5f35886a26db",
      "tree": "20286cf60de629dc00eaff4cd712347f9d9a2278",
      "parents": [
        "bb233fdfc7b7cefe45bfa2e8d1b24e79c60a48e5"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Mar 31 15:24:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:22 2009 -0700"
      },
      "message": "ramfs: add support for \"mode\u003d\" mount option\n\nAddresses http://bugzilla.kernel.org/show_bug.cgi?id\u003d12843\n\n\"I use ramfs instead of tmpfs for /tmp because I don\u0027t use swap on my\nlaptop.  Some apps need 1777 mode for /tmp directory, but ramfs does not\nsupport \u0027mode\u003d\u0027 mount option.\"\n\nReported-by: Avan Anishchuk \u003cmatimatik@gmail.com\u003e\nSigned-off-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": "bb233fdfc7b7cefe45bfa2e8d1b24e79c60a48e5",
      "tree": "b95c8f5b1a26f807755ca18d99b09627e184b33e",
      "parents": [
        "a38da2ed74f628c1f3e907c772be21a66eccab9c"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Tue Mar 31 15:24:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:22 2009 -0700"
      },
      "message": "lis3: SPI transport layer\n\nMake use of the new abstraction layer and add a new transport layer for\nspi.  Works fine on a PXA based board.\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nAcked-by: Eric Piel \u003ceric.piel@tremplin-utc.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": "a38da2ed74f628c1f3e907c772be21a66eccab9c",
      "tree": "e89697d25518dcca9861d6f65933fc3327cd5933",
      "parents": [
        "ab337a632783c251a3c3852aec0ead8a0281cbdd"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Tue Mar 31 15:24:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:22 2009 -0700"
      },
      "message": "lis3: solve dependency between core and ACPI\n\nThis solves the dependency between lis3lv02d.[ch] and ACPI specific\nmethods.  It introduces a -\u003ebus_priv pointer to the device struct which is\ncasted to \u0027struct acpi_device\u0027 in the ACIP layer.  Changed hp_accel.c\naccordingly.\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nAcked-by: Eric Piel \u003ceric.piel@tremplin-utc.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ab337a632783c251a3c3852aec0ead8a0281cbdd",
      "tree": "98a644e1c14a47164c52ed08e35e0a0e0d13f869",
      "parents": [
        "12a324b6a3758f04a952b99d75a625732d767585"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Tue Mar 31 15:24:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:22 2009 -0700"
      },
      "message": "lis3: reorder functions to make forward decl obsolete\n\nMove lis3lv02d_init_device() down so that the forward declaration of\nlis3lv02d_add_fs() becomes unnecessary.\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nAcked-by: Eric Piel \u003ceric.piel@tremplin-utc.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "12a324b6a3758f04a952b99d75a625732d767585",
      "tree": "aebfc7fae40f8bfd28edeb2d152398318c541ad3",
      "parents": [
        "9d7639d33a348d5637daa50bba27497e9f5dac64"
      ],
      "author": {
        "name": "Luca Cappa",
        "email": "lcappa@gmail.com",
        "time": "Tue Mar 31 15:24:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:21 2009 -0700"
      },
      "message": "hp_accel: axis conversion for hp compaq 8710w\n\nI have a laptop HP Compaq 8710W, I compiled into my kernel the LIS3LV02DL\nand HP_ACCEL module drivers.  While loading it cannot recognize the laptop\nmodel, so i am sending the necessary information to update the database of\naxis orientations.\n\n\u003eWhen the laptop is horizontal the position reported is about 0 for X and Y\n\u003eand a positive value for Z\nYes, it is about 0,0,1000, the actual reading says: (-17,-26,1018);\n\n\u003e If the left side is elevated, X increases (becomes positive)\nYes, X goes toward to positive 1000.\n\n\u003eIf the front side (where the touchpad is) is elevated, Y decreases (becomes negative)\nNo, Y goes toward to positive 1000.\n\n\u003eIf the laptop is put upside-down, Z becomes negative\nYes, the laptop on a table Z gives 1000, and if upsidedown the Z reads\n-1000.\n\nSo in few words the Y axis is inverted.\n\nCc: Eric Piel \u003ceric.piel@tremplin-utc.net\u003e\nSigned-off-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9d7639d33a348d5637daa50bba27497e9f5dac64",
      "tree": "c44485bedfbb2c618e2fdf0787c9215e3ea52c8b",
      "parents": [
        "72f5de92e199f96cfcea125aefc76c138d8c553c"
      ],
      "author": {
        "name": "Pavel Machek",
        "email": "pavel@ucw.cz",
        "time": "Tue Mar 31 15:24:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:21 2009 -0700"
      },
      "message": "hp_accel: add two more axis information\n\nAdd two more laptops to whitelist.\n\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\nSigned-off-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Daniel Mack \u003cdaniel@caiaq.de\u003e\nCc: Eric Piel \u003ceric.piel@tremplin-utc.net\u003e\nCc: Vladimir Botka \u003cvbotka@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": "72f5de92e199f96cfcea125aefc76c138d8c553c",
      "tree": "ef24990f791801283f520b5f96a4ea1e592bf37b",
      "parents": [
        "061603275814544842e7df77d1157eff18565997"
      ],
      "author": {
        "name": "Ira Snyder",
        "email": "iws@ovro.caltech.edu",
        "time": "Tue Mar 31 15:24:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:21 2009 -0700"
      },
      "message": "hwmon: Add LTC4215 driver\n\nAdd Linux support for the Linear Technology LTC4215 Hot Swap controller\nI2C monitoring interface.\n\nI have tested the driver with my board, and it appears to work fine.  With\nthe power supplies disabled, it reads 11.93V input, 1.93V output, no\ncurrent and no power.  With the supplies enabled, it reads 11.93V input,\n11.98V output, no current, no power.  I\u0027m not drawing any current at the\nmoment, so this is reasonable.  The value in the sense register never\nreads anything except 0, so I expect to get zero from the current and\npower calculations.\n\nI didn\u0027t attempt to support changing any of the chip\u0027s settings or\nenabling the FET.  I\u0027m not sure even how to do that and still fit within\nthe hwmon framework.  :)\n\nSigned-off-by: Ira W. Snyder \u003ciws@ovro.caltech.edu\u003e\nCc: Jean Delvare \u003ckhali@linux-fr.org\u003e\nCc: \"Mark M. Hoffman\" \u003cmhoffman@lightlink.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "061603275814544842e7df77d1157eff18565997",
      "tree": "4582b2e3e156eb2f0984df34e5469c96c3c4f9c0",
      "parents": [
        "be84cfc588b19f14764d78556dc7b630ee8c914c"
      ],
      "author": {
        "name": "Davide Rizzo",
        "email": "elpa.rizzo@gmail.com",
        "time": "Tue Mar 31 15:24:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:21 2009 -0700"
      },
      "message": "hwmon: LM95241 driver\n\nAn hwmon driver for the National Semiconductor LM95241 triple temperature\nsensors chip\n\nSigned-off-by: Davide Rizzo \u003celpa-rizzo@gmail.com\u003e\nCc: Jean Delvare \u003ckhali@linux-fr.org\u003e\nCc: \"Mark M. Hoffman\" \u003cmhoffman@lightlink.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "be84cfc588b19f14764d78556dc7b630ee8c914c",
      "tree": "eb9e812f10199e8a8bddf8dd8f9dfa2f02b04e62",
      "parents": [
        "2b872903c5d66bccdf4306a35e3e94d4da8555d3"
      ],
      "author": {
        "name": "Pavel Machek",
        "email": "pavel@ucw.cz",
        "time": "Tue Mar 31 15:24:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:21 2009 -0700"
      },
      "message": "hp_accel: adev is poor name of exported symbol\n\nAs Andrew noted, adev is pretty poor name for symbol being exported.\nRename it to lis3.\n\nSigned-off-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Eric Piel \u003ceric.piel@tremplin-utc.net\u003e\nCc: Vladimir Botka \u003cvbotka@suse.cz\u003e\nCc: \u003cQuoc.Pham@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": "2b872903c5d66bccdf4306a35e3e94d4da8555d3",
      "tree": "5af8d1d6831238c51d9a206042c14815a221cd52",
      "parents": [
        "4b19449db074eec86ae31a96d3cdca4aa7f138ab"
      ],
      "author": {
        "name": "Pavel Machek",
        "email": "pavel@ucw.cz",
        "time": "Tue Mar 31 15:24:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:21 2009 -0700"
      },
      "message": "hp_accel: small documentation updates\n\nFix english in Documentation, add \"how to test\" description.\n\nSigned-off-by: Pavel Machek \u003cpavel@suse.cz\u003e\nCc: Eric Piel \u003ceric.piel@tremplin-utc.net\u003e\nCc: Vladimir Botka \u003cvbotka@suse.cz\u003e\nCc: \u003cQuoc.Pham@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": "4b19449db074eec86ae31a96d3cdca4aa7f138ab",
      "tree": "3316e76279fee09aff54ad18c6f808919b93a472",
      "parents": [
        "395108880efff4a4ffa1ffa554477f7f5ba6a031"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:21 2009 -0700"
      },
      "message": "epoll keyed wakeups: make tty use keyed wakeups\n\nIntroduce keyed event wakeups inside the TTY code.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: William Lee Irwin III \u003cwli@movementarian.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "395108880efff4a4ffa1ffa554477f7f5ba6a031",
      "tree": "7d5797145d54b6cd8752eb2a6b1fd934336a005f",
      "parents": [
        "2dfa4eeab0fc7e8633974f2770945311b31eedf6"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll keyed wakeups: make eventfd use keyed wakeups\n\nIntroduce keyed event wakeups inside the eventfd code.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: William Lee Irwin III \u003cwli@movementarian.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2dfa4eeab0fc7e8633974f2770945311b31eedf6",
      "tree": "de372dc3955bb8ab2dec1b50f4292f367fa4e22f",
      "parents": [
        "37e5540b3c9d838eb20f2ca8ea2eb8072271e403"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll keyed wakeups: teach epoll about hints coming with the wakeup key\n\nUse the events hint now sent by some devices, to avoid unnecessary wakeups\nfor events that are of no interest for the caller.  This code handles both\ndevices that are sending keyed events, and the ones that are not (and\nevent the ones that sometimes send events, and sometimes don\u0027t).\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: William Lee Irwin III \u003cwli@movementarian.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "37e5540b3c9d838eb20f2ca8ea2eb8072271e403",
      "tree": "f1788aef6d73d2334e739da7ca87f2900285c262",
      "parents": [
        "c0da37753695e010776ccf2200a5731e0f88a9f3"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll keyed wakeups: make sockets use keyed wakeups\n\nAdd support for event-aware wakeups to the sockets code.  Events are\ndelivered to the wakeup target, so that epoll can avoid spurious wakeups\nfor non-interesting events.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nAcked-by: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: William Lee Irwin III \u003cwli@movementarian.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c0da37753695e010776ccf2200a5731e0f88a9f3",
      "tree": "4bcc83b718a284808d01929b662ee95fb0c49e8b",
      "parents": [
        "4ede816ac36e027db5fe0051ad9c73f76db63772"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll keyed wakeups: introduce new *_poll() wakeup macros\n\nIntroduce new wakeup macros that allow passing an event mask to the wakeup\ntargets.  They exactly mimic their non-_poll() counterpart, with the added\nevent mask passing capability.  I did add only the ones currently\nrequested, avoiding the _nr() and _all() for the moment.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: William Lee Irwin III \u003cwli@movementarian.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ede816ac36e027db5fe0051ad9c73f76db63772",
      "tree": "6c79eae26067c2355a2d4c7e65bca84208a76c40",
      "parents": [
        "bcd0b235bf3808dec5115c381cd55568f63b85f0"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll keyed wakeups: add __wake_up_locked_key() and __wake_up_sync_key()\n\nThis patchset introduces wakeup hints for some of the most popular (from\nepoll POV) devices, so that epoll code can avoid spurious wakeups on its\nwaiters.\n\nThe problem with epoll is that the callback-based wakeups do not, ATM,\ncarry any information about the events the wakeup is related to.  So the\nonly choice epoll has (not being able to call f_op-\u003epoll() from inside the\ncallback), is to add the file* to a ready-list and resolve the real events\nlater on, at epoll_wait() (or its own f_op-\u003epoll()) time.  This can cause\nspurious wakeups, since the wake_up() itself might be for an event the\ncaller is not interested into.\n\nThe rate of these spurious wakeup can be pretty high in case of many\nnetwork sockets being monitored.\n\nBy allowing devices to report the events the wakeups refer to (at least\nthe two major classes - POLLIN/POLLOUT), we are able to spare useless\nwakeups by proper handling inside the epoll\u0027s poll callback.\n\nEpoll will have in any case to call f_op-\u003epoll() on the file* later on,\nsince the change to be done in order to have the full event set sent via\nwakeup, is too invasive for the way our f_op-\u003epoll() system works (the\nfull event set is calculated inside the poll function - there are too many\nof them to even start thinking the change - also poll/select would need\nchange too).\n\nEpoll is changed in a way that both devices which send event hints, and\nthe ones that don\u0027t, are correctly handled.  The former will gain some\nefficiency though.\n\nAs a general rule for devices, would be to add an event mask by using\nkey-aware wakeup macros, when making up poll wait queues.  I tested it\n(together with the epoll\u0027s poll fix patch Andrew has in -mm) and wakeups\nfor the supported devices are correctly filtered.\n\nTest program available here:\n\nhttp://www.xmailserver.org/epoll_test.c\n\nThis patch:\n\nNothing revolutionary here.  Just using the available \"key\" that our\nwakeup core already support.  The __wake_up_locked_key() was no brainer,\nsince both __wake_up_locked() and __wake_up_locked_key() are thin wrappers\naround __wake_up_common().\n\nThe __wake_up_sync() function had a body, so the choice was between\nborrowing the body for __wake_up_sync_key() and calling it from\n__wake_up_sync(), or make an inline and calling it from both.  I chose the\nformer since in most archs it all resolves to \"mov $0, REG; jmp ADDR\".\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: William Lee Irwin III \u003cwli@movementarian.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bcd0b235bf3808dec5115c381cd55568f63b85f0",
      "tree": "d73c4aa83dcd5321d2c48e070020576098b9705e",
      "parents": [
        "4f0989dbfa8d18dd17c32120aac1eb3e906a62a2"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "eventfd: improve support for semaphore-like behavior\n\nPeople started using eventfd in a semaphore-like way where before they\nwere using pipes.\n\nThat is, counter-based resource access.  Where a \"wait()\" returns\nimmediately by decrementing the counter by one, if counter is greater than\nzero.  Otherwise will wait.  And where a \"post(count)\" will add count to\nthe counter releasing the appropriate amount of waiters.  If eventfd the\n\"post\" (write) part is fine, while the \"wait\" (read) does not dequeue 1,\nbut the whole counter value.\n\nThe problem with eventfd is that a read() on the fd returns and wipes the\nwhole counter, making the use of it as semaphore a little bit more\ncumbersome.  You can do a read() followed by a write() of COUNTER-1, but\nIMO it\u0027s pretty easy and cheap to make this work w/out extra steps.  This\npatch introduces a new eventfd flag that tells eventfd to only dequeue 1\nfrom the counter, allowing simple read/write to make it behave like a\nsemaphore.  Simple test here:\n\nhttp://www.xmailserver.org/eventfd-sem.c\n\nTo be back-compatible with earlier kernels, userspace applications should\nprobe for the availability of this feature via\n\n#ifdef EFD_SEMAPHORE\n\tfd \u003d eventfd2 (CNT, EFD_SEMAPHORE);\n\tif (fd \u003d\u003d -1 \u0026\u0026 errno \u003d\u003d EINVAL)\n\t\t\u003cfallback\u003e\n#else\n\t\t\u003cfallback\u003e\n#endif\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nTested-by: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: Ulrich Drepper \u003cdrepper@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": "4f0989dbfa8d18dd17c32120aac1eb3e906a62a2",
      "tree": "8b81c45c23ff2a598ed67c5732dfb0ca69693aa0",
      "parents": [
        "e057e15ff66a620eda4c407486cbb8f8fbb7d878"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:16 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll: use real type instead of void *\n\neventpoll.c uses void * in one place for no obvious reason; change it to\nuse the real type instead.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e057e15ff66a620eda4c407486cbb8f8fbb7d878",
      "tree": "aa9e15c13ce5882ca0f0b442eec71d99fec8a4ff",
      "parents": [
        "d1bc90dd5d037079f96b3327f943eb6ae8ef7491"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: clean up ep_modify\n\nep_modify() doesn\u0027t need to set event.data from within the ep-\u003elock\nspinlock as the comment suggests.  The only place event.data is used is\nep_send_events_proc(), and this is protected by ep-\u003emtx instead of\nep-\u003elock.  Also update the comment for mutex_lock() at the top of\nep_scan_ready_list(), which mentions epoll_ctl(EPOLL_CTL_DEL) but not\nepoll_ctl(EPOLL_CTL_MOD).\n\nep_modify() can also use spin_lock_irq() instead of spin_lock_irqsave().\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d1bc90dd5d037079f96b3327f943eb6ae8ef7491",
      "tree": "0380bd32cee23815b214d81a12b618140c544799",
      "parents": [
        "d0305882825784e74f68a56eee6c3a812a99f235"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: remove unnecessary xchg\n\nxchg in ep_unregister_pollwait() is unnecessary because it is protected by\neither epmutex or ep-\u003emtx (the same protection as ep_remove()).\n\nIf xchg was necessary, it would be insufficient to protect against\nproblems: if multiple concurrent calls to ep_unregister_pollwait() were\npossible then a second caller that returns without doing anything because\nnwait \u003d\u003d 0 could return before the waitqueues are removed by the first\ncaller, which looks like it could lead to problematic races with\nep_poll_callback().\n\nSo remove xchg and add comments about the locking.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0305882825784e74f68a56eee6c3a812a99f235",
      "tree": "a4dcfea753279e1f8f4e7cc8256a8f5c195341ce",
      "parents": [
        "abff55cee1039b5a3b96f7a5eb6e65b9f247a274"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: remember the event if epoll_wait returns -EFAULT\n\nIf epoll_wait returns -EFAULT, the event that was being returned when the\nfault was encountered will be forgotten.  This is not a big deal since\nEFAULT will happen only if a buggy userspace program passes in a bad\naddress, in which case what happens later usually doesn\u0027t matter.\nHowever, it is easy to remember the event for later, and this patch makes\na simple change to do that.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "abff55cee1039b5a3b96f7a5eb6e65b9f247a274",
      "tree": "dfbcc71256c2129d2e0ee3e077461103338b9591",
      "parents": [
        "bb57c3edcd2fc51d95914c39448f36e43af9d6af"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: don\u0027t use current in irq context\n\nep_call_nested() (formerly ep_poll_safewake()) uses \"current\" (without\ndereferencing it) to detect callback recursion, but it may be called from\nirq context where the use of current is generally discouraged.  It would\nbe better to use get_cpu() and put_cpu() to detect the callback recursion.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bb57c3edcd2fc51d95914c39448f36e43af9d6af",
      "tree": "8d38edcdc5ef1f2694c3607829952f04ce266292",
      "parents": [
        "296e236e96dddef351a1809c0d414bcddfcf3800"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: remove debugging code\n\nRemove debugging code from epoll.  There\u0027s no need for it to be included\ninto mainline code.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "296e236e96dddef351a1809c0d414bcddfcf3800",
      "tree": "279d6eb3f0114a49897cd4bbc0eaf43fffd46c6e",
      "parents": [
        "5071f97ec6d74f006072de0ce89b67c8792fe5a1"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: fix epoll\u0027s own poll (update)\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Pavel Pisa \u003cpisa@cmp.felk.cvut.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5071f97ec6d74f006072de0ce89b67c8792fe5a1",
      "tree": "cb20ebd79c6c146c73d321b4558f8176a0cf06c9",
      "parents": [
        "3cdbbeebb77348176bd6a03fd86e11bc281c529e"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:18 2009 -0700"
      },
      "message": "epoll: fix epoll\u0027s own poll\n\nFix a bug inside the epoll\u0027s f_op-\u003epoll() code, that returns POLLIN even\nthough there are no actual ready monitored fds.  The bug shows up if you\nadd an epoll fd inside another fd container (poll, select, epoll).\n\nThe problem is that callback-based wake ups used by epoll does not carry\n(patches will follow, to fix this) any information about the events that\nactually happened.  So the callback code, since it can\u0027t call the file*\n-\u003epoll() inside the callback, chains the file* into a ready-list.\n\nSo, suppose you added an fd with EPOLLOUT only, and some data shows up on\nthe fd, the file* mapped by the fd will be added into the ready-list (via\nwakeup callback).  During normal epoll_wait() use, this condition is\nsorted out at the time we\u0027re actually able to call the file*\u0027s\nf_op-\u003epoll().\n\nInside the old epoll\u0027s f_op-\u003epoll() though, only a quick check\n!list_empty(ready-list) was performed, and this could have led to\nreporting POLLIN even though no ready fds would show up at a following\nepoll_wait().  In order to correctly report the ready status for an epoll\nfd, the ready-list must be checked to see if any really available fd+event\nwould be ready in a following epoll_wait().\n\nOperation (calling f_op-\u003epoll() from inside f_op-\u003epoll()) that, like wake\nups, must be handled with care because of the fact that epoll fds can be\nadded to other epoll fds.\n\nTest code:\n\n/*\n *  epoll_test by Davide Libenzi (Simple code to test epoll internals)\n *  Copyright (C) 2008  Davide Libenzi\n *\n *  This program is free software; you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation; either version 2 of the License, or\n *  (at your option) any later version.\n *\n *  This program is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with this program; if not, write to the Free Software\n *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n *  Davide Libenzi \u003cdavidel@xmailserver.org\u003e\n *\n */\n\n#include \u003csys/types.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cstring.h\u003e\n#include \u003cerrno.h\u003e\n#include \u003csignal.h\u003e\n#include \u003climits.h\u003e\n#include \u003cpoll.h\u003e\n#include \u003csys/epoll.h\u003e\n#include \u003csys/wait.h\u003e\n\n#define EPWAIT_TIMEO\t(1 * 1000)\n#ifndef POLLRDHUP\n#define POLLRDHUP 0x2000\n#endif\n\n#define EPOLL_MAX_CHAIN\t100L\n\n#define EPOLL_TF_LOOP (1 \u003c\u003c 0)\n\nstruct epoll_test_cfg {\n\tlong size;\n\tlong flags;\n};\n\nstatic int xepoll_create(int n) {\n\tint epfd;\n\n\tif ((epfd \u003d epoll_create(n)) \u003d\u003d -1) {\n\t\tperror(\"epoll_create\");\n\t\texit(2);\n\t}\n\n\treturn epfd;\n}\n\nstatic void xepoll_ctl(int epfd, int cmd, int fd, struct epoll_event *evt) {\n\tif (epoll_ctl(epfd, cmd, fd, evt) \u003c 0) {\n\t\tperror(\"epoll_ctl\");\n\t\texit(3);\n\t}\n}\n\nstatic void xpipe(int *fds) {\n\tif (pipe(fds)) {\n\t\tperror(\"pipe\");\n\t\texit(4);\n\t}\n}\n\nstatic pid_t xfork(void) {\n\tpid_t pid;\n\n\tif ((pid \u003d fork()) \u003d\u003d (pid_t) -1) {\n\t\tperror(\"pipe\");\n\t\texit(5);\n\t}\n\n\treturn pid;\n}\n\nstatic int run_forked_proc(int (*proc)(void *), void *data) {\n\tint status;\n\tpid_t pid;\n\n\tif ((pid \u003d xfork()) \u003d\u003d 0)\n\t\texit((*proc)(data));\n\tif (waitpid(pid, \u0026status, 0) !\u003d pid) {\n\t\tperror(\"waitpid\");\n\t\treturn -1;\n\t}\n\n\treturn WIFEXITED(status) ? WEXITSTATUS(status): -2;\n}\n\nstatic int check_events(int fd, int timeo) {\n\tstruct pollfd pfd;\n\n\tfprintf(stdout, \"Checking events for fd %d\\n\", fd);\n\tmemset(\u0026pfd, 0, sizeof(pfd));\n\tpfd.fd \u003d fd;\n\tpfd.events \u003d POLLIN | POLLOUT;\n\tif (poll(\u0026pfd, 1, timeo) \u003c 0) {\n\t\tperror(\"poll()\");\n\t\treturn 0;\n\t}\n\tif (pfd.revents \u0026 POLLIN)\n\t\tfprintf(stdout, \"\\tPOLLIN\\n\");\n\tif (pfd.revents \u0026 POLLOUT)\n\t\tfprintf(stdout, \"\\tPOLLOUT\\n\");\n\tif (pfd.revents \u0026 POLLERR)\n\t\tfprintf(stdout, \"\\tPOLLERR\\n\");\n\tif (pfd.revents \u0026 POLLHUP)\n\t\tfprintf(stdout, \"\\tPOLLHUP\\n\");\n\tif (pfd.revents \u0026 POLLRDHUP)\n\t\tfprintf(stdout, \"\\tPOLLRDHUP\\n\");\n\n\treturn pfd.revents;\n}\n\nstatic int epoll_test_tty(void *data) {\n\tint epfd, ifd \u003d fileno(stdin), res;\n\tstruct epoll_event evt;\n\n\tif (check_events(ifd, 0) !\u003d POLLOUT) {\n\t\tfprintf(stderr, \"Something is cooking on STDIN (%d)\\n\", ifd);\n\t\treturn 1;\n\t}\n\tepfd \u003d xepoll_create(1);\n\tfprintf(stdout, \"Created epoll fd (%d)\\n\", epfd);\n\tmemset(\u0026evt, 0, sizeof(evt));\n\tevt.events \u003d EPOLLIN;\n\txepoll_ctl(epfd, EPOLL_CTL_ADD, ifd, \u0026evt);\n\tif (check_events(epfd, 0) \u0026 POLLIN) {\n\t\tres \u003d epoll_wait(epfd, \u0026evt, 1, 0);\n\t\tif (res \u003d\u003d 0) {\n\t\t\tfprintf(stderr, \"Epoll fd (%d) is ready when it shouldn\u0027t!\\n\",\n\t\t\t\tepfd);\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\treturn 0;\n}\n\nstatic int epoll_wakeup_chain(void *data) {\n\tstruct epoll_test_cfg *tcfg \u003d data;\n\tint i, res, epfd, bfd, nfd, pfds[2];\n\tpid_t pid;\n\tstruct epoll_event evt;\n\n\tmemset(\u0026evt, 0, sizeof(evt));\n\tevt.events \u003d EPOLLIN;\n\n\tepfd \u003d bfd \u003d xepoll_create(1);\n\n\tfor (i \u003d 0; i \u003c tcfg-\u003esize; i++) {\n\t\tnfd \u003d xepoll_create(1);\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, nfd, \u0026evt);\n\t\tbfd \u003d nfd;\n\t}\n\txpipe(pfds);\n\tif (tcfg-\u003eflags \u0026 EPOLL_TF_LOOP)\n\t{\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, epfd, \u0026evt);\n\t\t/*\n\t\t * If we\u0027re testing for loop, we want that the wakeup\n\t\t * triggered by the write to the pipe done in the child\n\t\t * process, triggers a fake event. So we add the pipe\n\t\t * read size with EPOLLOUT events. This will trigger\n\t\t * an addition to the ready-list, but no real events\n\t\t * will be there. The the epoll kernel code will proceed\n\t\t * in calling f_op-\u003epoll() of the epfd, triggering the\n\t\t * loop we want to test.\n\t\t */\n\t\tevt.events \u003d EPOLLOUT;\n\t}\n\txepoll_ctl(bfd, EPOLL_CTL_ADD, pfds[0], \u0026evt);\n\n\t/*\n\t * The pipe write must come after the poll(2) call inside\n\t * check_events(). This tests the nested wakeup code in\n\t * fs/eventpoll.c:ep_poll_safewake()\n\t * By having the check_events() (hence poll(2)) happens first,\n\t * we have poll wait queue filled up, and the write(2) in the\n\t * child will trigger the wakeup chain.\n\t */\n\tif ((pid \u003d xfork()) \u003d\u003d 0) {\n\t\tsleep(1);\n\t\twrite(pfds[1], \"w\", 1);\n\t\texit(0);\n\t}\n\n\tres \u003d check_events(epfd, 2000) \u0026 POLLIN;\n\n\tif (waitpid(pid, NULL, 0) !\u003d pid) {\n\t\tperror(\"waitpid\");\n\t\treturn -1;\n\t}\n\n\treturn res;\n}\n\nstatic int epoll_poll_chain(void *data) {\n\tstruct epoll_test_cfg *tcfg \u003d data;\n\tint i, res, epfd, bfd, nfd, pfds[2];\n\tpid_t pid;\n\tstruct epoll_event evt;\n\n\tmemset(\u0026evt, 0, sizeof(evt));\n\tevt.events \u003d EPOLLIN;\n\n\tepfd \u003d bfd \u003d xepoll_create(1);\n\n\tfor (i \u003d 0; i \u003c tcfg-\u003esize; i++) {\n\t\tnfd \u003d xepoll_create(1);\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, nfd, \u0026evt);\n\t\tbfd \u003d nfd;\n\t}\n\txpipe(pfds);\n\tif (tcfg-\u003eflags \u0026 EPOLL_TF_LOOP)\n\t{\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, epfd, \u0026evt);\n\t\t/*\n\t\t * If we\u0027re testing for loop, we want that the wakeup\n\t\t * triggered by the write to the pipe done in the child\n\t\t * process, triggers a fake event. So we add the pipe\n\t\t * read size with EPOLLOUT events. This will trigger\n\t\t * an addition to the ready-list, but no real events\n\t\t * will be there. The the epoll kernel code will proceed\n\t\t * in calling f_op-\u003epoll() of the epfd, triggering the\n\t\t * loop we want to test.\n\t\t */\n\t\tevt.events \u003d EPOLLOUT;\n\t}\n\txepoll_ctl(bfd, EPOLL_CTL_ADD, pfds[0], \u0026evt);\n\n\t/*\n\t * The pipe write mush come before the poll(2) call inside\n\t * check_events(). This tests the nested f_op-\u003epoll calls code in\n\t * fs/eventpoll.c:ep_eventpoll_poll()\n\t * By having the pipe write(2) happen first, we make the kernel\n\t * epoll code to load the ready lists, and the following poll(2)\n\t * done inside check_events() will test nested poll code in\n\t * ep_eventpoll_poll().\n\t */\n\tif ((pid \u003d xfork()) \u003d\u003d 0) {\n\t\twrite(pfds[1], \"w\", 1);\n\t\texit(0);\n\t}\n\tsleep(1);\n\tres \u003d check_events(epfd, 1000) \u0026 POLLIN;\n\n\tif (waitpid(pid, NULL, 0) !\u003d pid) {\n\t\tperror(\"waitpid\");\n\t\treturn -1;\n\t}\n\n\treturn res;\n}\n\nint main(int ac, char **av) {\n\tint error;\n\tstruct epoll_test_cfg tcfg;\n\n\tfprintf(stdout, \"\\n********** Testing TTY events\\n\");\n\terror \u003d run_forked_proc(epoll_test_tty, NULL);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing short wakeup chain\\n\");\n\terror \u003d run_forked_proc(epoll_wakeup_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d POLLIN ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d EPOLL_MAX_CHAIN;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing long wakeup chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_wakeup_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing short poll chain\\n\");\n\terror \u003d run_forked_proc(epoll_poll_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d POLLIN ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d EPOLL_MAX_CHAIN;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing long poll chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_poll_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d EPOLL_TF_LOOP;\n\tfprintf(stdout, \"\\n********** Testing loopy wakeup chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_wakeup_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d EPOLL_TF_LOOP;\n\tfprintf(stdout, \"\\n********** Testing loopy poll chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_poll_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\treturn 0;\n}\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Pavel Pisa \u003cpisa@cmp.felk.cvut.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3cdbbeebb77348176bd6a03fd86e11bc281c529e",
      "tree": "079d84c58cdb0e6f4d43eee69d42d26d5a48af35",
      "parents": [
        "891f7d73ea30f925596b90bcf21020bfc5d90f3f"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Tue Mar 31 15:23:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:18 2009 -0700"
      },
      "message": "drivers/misc/isl29003.c: driver for the ISL29003 ambient light sensor\n\nAdd a driver for Intersil\u0027s ISL29003 ambient light sensor device plus some\ndocumentation.  Inspired by tsl2550.c, a driver for a similar device.\n\nIt is put in drivers/misc for now until the industrial I/O framework gets\nmerged.\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nAcked-by: Jonathan Cameron \u003cjic23@cam.ac.uk\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": "891f7d73ea30f925596b90bcf21020bfc5d90f3f",
      "tree": "ee2cf87038f657ead8e6df62acaa47f9805f0215",
      "parents": [
        "63cd885426872254e82dac2d9e13ea4f720c21dc"
      ],
      "author": {
        "name": "David Altobelli",
        "email": "david.altobelli@hp.com",
        "time": "Tue Mar 31 15:23:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:18 2009 -0700"
      },
      "message": "hpilo: reduce frequency of IO operations\n\nChange hpilo open and close logic to spin for 10usec between checking device,\nrather than every usec.\n\nBecause the loop is coded to take up to 10ms, it seemed prudent to\nincrease the interval between polling the device, to reduce the load on\nthe system and allow more other work to happen.\n\nSigned-off-by: David Altobelli \u003cdavid.altobelli@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": "63cd885426872254e82dac2d9e13ea4f720c21dc",
      "tree": "addd6687abbbcd428c179260737fc97b25b7aa64",
      "parents": [
        "311d07611e8b354cc1ee6546e4c574c01111adc8"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Tue Mar 31 15:23:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:18 2009 -0700"
      },
      "message": "ntfs: remove private wrapper of endian helpers\n\nThe base versions handle constant folding now and are shorter than these\nprivate wrappers, use them directly.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "311d07611e8b354cc1ee6546e4c574c01111adc8",
      "tree": "ec9cf9a12527a2239163b06ec61bad76ac2abadd",
      "parents": [
        "acdd052a285a7b4cc7da4fa7d34ef9fd0a67b2f8"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@gmail.com",
        "time": "Tue Mar 31 15:23:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:18 2009 -0700"
      },
      "message": "introduce pr_cont() macro\n\nWe cover all log-levels by pr_...  macros except KERN_CONT one.  Add it\nfor convenience.\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "acdd052a285a7b4cc7da4fa7d34ef9fd0a67b2f8",
      "tree": "4fc380d7556327cb65ec8441504f90df85a96cd4",
      "parents": [
        "e0f7ad5f4f5056b20914a35d31abcf29036ca364"
      ],
      "author": {
        "name": "Hannes Eder",
        "email": "hannes@hanneseder.net",
        "time": "Tue Mar 31 15:23:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:18 2009 -0700"
      },
      "message": "init/main.c: fix sparse warnings: context imbalance\n\nImpact: Attribute function \u0027init_post\u0027 with __releases(...).\n\nFix these sparse warnings:\n  init/main.c:805:21: warning: context imbalance in \u0027init_post\u0027 - unexpected unlock\n  init/main.c:899:9: warning: context imbalance in \u0027kernel_init\u0027 - wrong count at exit\n\nSigned-off-by: Hannes Eder \u003channes@hanneseder.net\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": "e0f7ad5f4f5056b20914a35d31abcf29036ca364",
      "tree": "f1f5579c10c59a65a58e163325909537c01d92de",
      "parents": [
        "c0aa24ba8962bd1db98938fb2f3773f870896036"
      ],
      "author": {
        "name": "Michael Buesch",
        "email": "mb@bu3sch.de",
        "time": "Tue Mar 31 15:23:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:17 2009 -0700"
      },
      "message": "bcm47xx: fix GPIO API return codes\n\nThe GPIO API is supposed to return 0 or a negative error code,\nbut the SSB GPIO functions return the bitmask of the GPIO register.\nFix this by ignoring the bitmask and always returning 0. The SSB GPIO functions can\u0027t fail.\n\nSigned-off-by: Michael Buesch \u003cmb@bu3sch.de\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\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": "c0aa24ba8962bd1db98938fb2f3773f870896036",
      "tree": "a748cb5e4326c446611d30619366713cad5876f1",
      "parents": [
        "fcd5e16286024360340eda61da4e2f5ec152b087"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hsweeten@visionengravers.com",
        "time": "Tue Mar 31 15:23:48 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:17 2009 -0700"
      },
      "message": "auxdisplay: remove PARPORT dependency\n\nRemove PARPORT dependency for Auxiliary Display support.\n\nThis is not needed since the dependency for the KS0108 driver is\nPARPORT_PC.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Miguel Ojeda Sandonis \u003cmiguel.ojeda.sandonis@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": "fcd5e16286024360340eda61da4e2f5ec152b087",
      "tree": "edee20b502da23aee95a36e2c6daa35fb45b04d0",
      "parents": [
        "c2d7543851849a6923680cdd7e1047ed1a84a1c5"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Tue Mar 31 15:23:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:17 2009 -0700"
      },
      "message": "remove unused include/asm-generic/dma-mapping.h\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2d7543851849a6923680cdd7e1047ed1a84a1c5",
      "tree": "bf3038819d4be83a1d1e64d7b95bbb3d9d908544",
      "parents": [
        "55a63998b8967615a15e2211ba0ff3a84a565824"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Mar 31 15:23:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:17 2009 -0700"
      },
      "message": "filesystem freeze: allow SysRq emergency thaw to thaw frozen filesystems\n\nNow that the filesystem freeze operation has been elevated to the VFS, and\nis just an ioctl away, some sort of safety net for unintentionally frozen\nroot filesystems may be in order.\n\nThe timeout thaw originally proposed did not get merged, but perhaps\nsomething like this would be useful in emergencies.\n\nFor example, freeze /path/to/mountpoint may freeze your root filesystem if\nyou forgot that you had that unmounted.\n\nI chose \u0027j\u0027 as the last remaining character other than \u0027h\u0027 which is sort\nof reserved for help (because help is generated on any unknown character).\n\nI\u0027ve tested this on a non-root fs with multiple (nested) freezers, as well\nas on a system rendered unresponsive due to a frozen root fs.\n\n[randy.dunlap@oracle.com: emergency thaw only if CONFIG_BLOCK enabled]\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Takashi Sato \u003ct-sato@yk.jp.nec.com\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "55a63998b8967615a15e2211ba0ff3a84a565824",
      "tree": "a83905577b60496a3ea9174bf29596f927354746",
      "parents": [
        "53d6660836f233df66490707365ab177e5fb2bb4"
      ],
      "author": {
        "name": "Wolfram Strepp",
        "email": "wstrepp@gmx.de",
        "time": "Tue Mar 31 15:23:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:17 2009 -0700"
      },
      "message": "lib/rbtree.c: optimize rb_erase()\n\nTfour 4 redundant if-conditions in function __rb_erase_color() in\nlib/rbtree.c are removed.\n\nIn pseudo-source-code, the structure of the code is as follows:\n\nif ((!A || B) \u0026\u0026 (!C || D)) {\n\t.\n\t.\n\t.\n} else {\n\tif (!C || D) {//if this is true, it implies: (A \u003d\u003d true) \u0026\u0026 (B \u003d\u003d false)\n\t\tif (A) {//hence this always evaluates to \u0027true\u0027...\n\t\t\t.\n\t\t}\n\t\t.\n\t\t//at this point, C always becomes true, because of:\n\t\t__rb_rotate_right/left();\n\t\t//and:\n\t\tother \u003d parent-\u003erb_right/left;\n\t}\n\t.\n\t.\n\tif (C) {//...and this too !\n\t\t.\n\t}\n}\n\nSigned-off-by: Wolfram Strepp \u003cwstrepp@gmx.de\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53d6660836f233df66490707365ab177e5fb2bb4",
      "tree": "dad7eae486c0928af039f4bb47ee3dd7bb0ff87d",
      "parents": [
        "65bd6a9bc7be3f5841dad12f77ce4b3210bd82c5"
      ],
      "author": {
        "name": "J. R. Okajima",
        "email": "hooanon05@yahoo.co.jp",
        "time": "Tue Mar 31 15:23:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:17 2009 -0700"
      },
      "message": "loop: add ioctl to resize a loop device\n\nAdd the ability to \u0027resize\u0027 the loop device on the fly.\n\nOne practical application is a loop file with XFS filesystem, already\nmounted: You can easily enlarge the file (append some bytes) and then call\nioctl(fd, LOOP_SET_CAPACITY, new); The loop driver will learn about the\nnew size and you can use xfs_growfs later on, which will allow you to use\nfull capacity of the loop file without the need to unmount.\n\nTest app:\n\n#include \u003clinux/fs.h\u003e\n#include \u003clinux/loop.h\u003e\n#include \u003csys/ioctl.h\u003e\n#include \u003csys/stat.h\u003e\n#include \u003csys/types.h\u003e\n#include \u003cassert.h\u003e\n#include \u003cerrno.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cunistd.h\u003e\n\n#define _GNU_SOURCE\n#include \u003cgetopt.h\u003e\n\nchar *me;\n\nvoid usage(FILE *f)\n{\n\tfprintf(f, \"%s [options] loop_dev [backend_file]\\n\"\n\t\t\"-s, --set new_size_in_bytes\\n\"\n\t\t\"\\twhen backend_file is given, \"\n\t\t\"it will be expanded too while keeping the original contents\\n\",\n\t\tme);\n}\n\nstruct option opts[] \u003d {\n\t{\n\t\t.name\t\t\u003d \"set\",\n\t\t.has_arg\t\u003d 1,\n\t\t.flag\t\t\u003d NULL,\n\t\t.val\t\t\u003d \u0027s\u0027\n\t},\n\t{\n\t\t.name\t\t\u003d \"help\",\n\t\t.has_arg\t\u003d 0,\n\t\t.flag\t\t\u003d NULL,\n\t\t.val\t\t\u003d \u0027h\u0027\n\t}\n};\n\nvoid err_size(char *name, __u64 old)\n{\n\tfprintf(stderr, \"size must be larger than current %s (%llu)\\n\",\n\t\tname, old);\n}\n\nint main(int argc, char *argv[])\n{\n\tint fd, err, c, i, bfd;\n\tssize_t ssz;\n\tsize_t sz;\n\t__u64 old, new, append;\n\tchar a[BUFSIZ];\n\tstruct stat st;\n\tFILE *out;\n\tchar *backend, *dev;\n\n\terr \u003d EINVAL;\n\tout \u003d stderr;\n\tme \u003d argv[0];\n\tnew \u003d 0;\n\twhile ((c \u003d getopt_long(argc, argv, \"s:h\", opts, \u0026i)) !\u003d -1) {\n\t\tswitch (c) {\n\t\tcase \u0027s\u0027:\n\t\t\terrno \u003d 0;\n\t\t\tnew \u003d strtoull(optarg, NULL, 0);\n\t\t\tif (errno) {\n\t\t\t\terr \u003d errno;\n\t\t\t\tperror(argv[i]);\n\t\t\t\tgoto out;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \u0027h\u0027:\n\t\t\terr \u003d 0;\n\t\t\tout \u003d stdout;\n\t\t\tgoto err;\n\n\t\tdefault:\n\t\t\tperror(argv[i]);\n\t\t\tgoto err;\n\t\t}\n\t}\n\n\tif (optind \u003c argc)\n\t\tdev \u003d argv[optind++];\n\telse\n\t\tgoto err;\n\n\tfd \u003d open(dev, O_RDONLY);\n\tif (fd \u003c 0) {\n\t\terr \u003d errno;\n\t\tperror(dev);\n\t\tgoto out;\n\t}\n\n\terr \u003d ioctl(fd, BLKGETSIZE64, \u0026old);\n\tif (err) {\n\t\terr \u003d errno;\n\t\tperror(\"ioctl BLKGETSIZE64\");\n\t\tgoto out;\n\t}\n\n\tif (!new) {\n\t\tprintf(\"%llu\\n\", old);\n\t\tgoto out;\n\t}\n\n\tif (new \u003c old) {\n\t\terr \u003d EINVAL;\n\t\terr_size(dev, old);\n\t\tgoto out;\n\t}\n\n\tif (optind \u003c argc) {\n\t\tbackend \u003d argv[optind++];\n\t\tbfd \u003d open(backend, O_WRONLY|O_APPEND);\n\t\tif (bfd \u003c 0) {\n\t\t\terr \u003d errno;\n\t\t\tperror(backend);\n\t\t\tgoto out;\n\t\t}\n\t\terr \u003d fstat(bfd, \u0026st);\n\t\tif (err) {\n\t\t\terr \u003d errno;\n\t\t\tperror(backend);\n\t\t\tgoto out;\n\t\t}\n\t\tif (new \u003c st.st_size) {\n\t\t\terr \u003d EINVAL;\n\t\t\terr_size(backend, st.st_size);\n\t\t\tgoto out;\n\t\t}\n\t\tappend \u003d new - st.st_size;\n\t\tsz \u003d sizeof(a);\n\t\twhile (append \u003e 0) {\n\t\t\tif (append \u003c sz)\n\t\t\t\tsz \u003d append;\n\t\t\tssz \u003d write(bfd, a, sz);\n\t\t\tif (ssz !\u003d sz) {\n\t\t\t\terr \u003d errno;\n\t\t\t\tperror(backend);\n\t\t\t\tgoto out;\n\t\t\t}\n\t\t\tappend -\u003d sz;\n\t\t}\n\t\terr \u003d fsync(bfd);\n\t\tif (err) {\n\t\t\terr \u003d errno;\n\t\t\tperror(backend);\n\t\t\tgoto out;\n\t\t}\n\t}\n\n\terr \u003d ioctl(fd, LOOP_SET_CAPACITY, new);\n\tif (err) {\n\t\terr \u003d errno;\n\t\tperror(\"ioctl LOOP_SET_CAPACITY\");\n\t}\n\tgoto out;\n\n err:\n\tusage(out);\n out:\n\treturn err;\n}\n\nSigned-off-by: J. R. Okajima \u003chooanon05@yahoo.co.jp\u003e\nSigned-off-by: Tomas Matejicek \u003ctomas@slax.org\u003e\nCc: \u003cutil-linux-ng@vger.kernel.org\u003e\nCc: Karel Zak \u003ckzak@redhat.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "65bd6a9bc7be3f5841dad12f77ce4b3210bd82c5",
      "tree": "53b748ed9df7594c48d9987a2363f6bc69ad5f31",
      "parents": [
        "5062910a06ee979002edbf58ab65481c81242df4"
      ],
      "author": {
        "name": "WANG Cong",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 31 15:23:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:17 2009 -0700"
      },
      "message": "uml: remove useless comments\n\nThese comments are useless now, remove them.\n\nSigned-off-by: WANG Cong \u003cxiyou.wangcong@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": "5062910a06ee979002edbf58ab65481c81242df4",
      "tree": "b3c961d2fc0058d400cf78617d11714af19d1180",
      "parents": [
        "dc71768742b39bca298e9ca6c91e575cd4b140e6"
      ],
      "author": {
        "name": "WANG Cong",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 31 15:23:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:16 2009 -0700"
      },
      "message": "uml: improve error messages\n\nThese error messages are from check_sysemu(), not check_ptrace().\n\nSigned-off-by: WANG Cong \u003cxiyou.wangcong@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": "dc71768742b39bca298e9ca6c91e575cd4b140e6",
      "tree": "366c9c3890d791b45987cbf8279a5bf8323362cd",
      "parents": [
        "792dd4fc317e1f94a6af111a0979c1c0d8c14453"
      ],
      "author": {
        "name": "WANG Cong",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 31 15:23:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:16 2009 -0700"
      },
      "message": "uml: don\u0027t use a too long string literal\n\numl uses a concatenated string literal to store the contents of .config,\nbut .config file content is varaible, it can be very long.\n\nUse an array of string literals instead.\n\nSigned-off-by: WANG Cong \u003cxiyou.wangcong@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": "792dd4fc317e1f94a6af111a0979c1c0d8c14453",
      "tree": "c8dd4560554cf3bffd991c24d7f18fc6729ffaa0",
      "parents": [
        "bf9ed57d35d64dac5d5651478b5530a89b20ea1e"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Mar 31 15:23:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:16 2009 -0700"
      },
      "message": "ubd: stop defintining MAJOR_NR\n\nMAJOR_NR isn\u0027t needed anymore since very early 2.5 kernels.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\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": "bf9ed57d35d64dac5d5651478b5530a89b20ea1e",
      "tree": "5a9a14b7b67fb7eb0b554fd13bbe07022b07f448",
      "parents": [
        "a8af78982ff4c0b3731527b0217d286a343a3089"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@igel.co.jp",
        "time": "Tue Mar 31 15:23:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:16 2009 -0700"
      },
      "message": "pm: cleanup includes\n\nRemove unused/duplicate cruft from asm/suspend.h:\n\n - x86_32: remove unused acpi code\n - powerpc: remove duplicate prototypes, see linux/suspend.h\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nAcked-by: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a8af78982ff4c0b3731527b0217d286a343a3089",
      "tree": "10f0ebe13c999dd54efdf79ff606b65e7952b69d",
      "parents": [
        "5f0e3da6e186598bbd2569410ab60fa645ba00c9"
      ],
      "author": {
        "name": "Magnus Damm",
        "email": "damm@igel.co.jp",
        "time": "Tue Mar 31 15:23:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:16 2009 -0700"
      },
      "message": "pm: rework includes, remove arch ifdefs\n\nMake the following header file changes:\n\n - remove arch ifdefs and asm/suspend.h from linux/suspend.h\n - add asm/suspend.h to disk.c (for arch_prepare_suspend())\n - add linux/io.h to swsusp.c (for ioremap())\n - x86 32/64 bit compile fixes\n\nSigned-off-by: Magnus Damm \u003cdamm@igel.co.jp\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nAcked-by: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5f0e3da6e186598bbd2569410ab60fa645ba00c9",
      "tree": "bccceb64fd0e81080733a1595a66979bcd999e3c",
      "parents": [
        "a6209d6d71f2ab8c63cc1587ef65490d83022baf"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue Mar 31 15:23:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:16 2009 -0700"
      },
      "message": "alpha: convert u64 to unsigned long long\n\nConvert alpha architecture to use u64 as unsigned long long.  This is\nbeing done so that (a) all arches use u64 as unsigned long long and (b)\nprintk of a u64 as %ll[ux] will not generate format warnings by gcc.\n\nThe only gcc cross-compiler that I have is 4.0.2, which generates errors\nabout miscompiling __weak references, so I have commented out that line in\ncompiler-gcc4.h so that most of these compile, but more builds and real\nmachine testing would be Real Good.\n\n[akpm@linux-foundation.org: fix warning]\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nFrom: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a6209d6d71f2ab8c63cc1587ef65490d83022baf",
      "tree": "2490d7adf757c9ea00c30fb8f75171d6b8772d3a",
      "parents": [
        "a94066992b3050a7bd9a82bf73bf19f6052d2f82"
      ],
      "author": {
        "name": "Ivan Kokshaysky",
        "email": "ink@jurassic.park.msu.ru",
        "time": "Tue Mar 31 15:23:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:16 2009 -0700"
      },
      "message": "alpha: xchg/cmpxchg cleanup and fixes\n\n- \"_local\" versions of xchg/cmpxchg functions duplicate code\n  of non-local ones (quite a few pages of assembler), except\n  memory barriers. We can generate these two variants from a\n  single header file using simple macros;\n\n- convert xchg macro back to inline function using always_inline\n  attribute;\n\n- use proper argument types for cmpxchg_u8/u16 functions\n  to fix a problem with negative arguments.\n\nSigned-off-by: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a94066992b3050a7bd9a82bf73bf19f6052d2f82",
      "tree": "fa7c64f727805f4850124d737dec9fd1d3e3a133",
      "parents": [
        "0b42afd0a3051952924ed373dcda61beb23fcb58"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Tue Mar 31 15:23:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "MAINTAINERS: add the missing linux alpha port mailling list\n\nSigned-off-by: Cheng Renquan \u003ccrquan@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": "0b42afd0a3051952924ed373dcda61beb23fcb58",
      "tree": "e9973473c5ec0455047c91ed7591bf0b91ba862a",
      "parents": [
        "9fab5619bdd7f84cdd22cc760778f759f9819a33"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Tue Mar 31 15:23:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "alpha: fix macros\n\nWhen this macros isn\u0027t called with \u0027fixup\u0027, e.g.  with foo this will\nincorectly expand to foo-\u003efoo.bits.errreg\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9fab5619bdd7f84cdd22cc760778f759f9819a33",
      "tree": "4a7010f3ba43896c266032f8b287d6bd55b72c85",
      "parents": [
        "327c0e968645f2601a43f5ea7c19c7b3a5fa0a34"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 31 15:23:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "shmem: writepage directly to swap\n\nSynopsis: if shmem_writepage calls swap_writepage directly, most shmem\nswap loads benefit, and a catastrophic interaction between SLUB and some\nflash storage is avoided.\n\nshmem_writepage() has always been peculiar in making no attempt to write:\nit has just transferred a shmem page from file cache to swap cache, then\nlet that page make its way around the LRU again before being written and\nfreed.\n\nThe idea was that people use tmpfs because they want those pages to stay\nin RAM; so although we give it an overflow to swap, we should resist\nwriting too soon, giving those pages a second chance before they can be\nreclaimed.\n\nThat was always questionable, and I\u0027ve toyed with this patch for years;\nbut never had a clear justification to depart from the original design.\n\nIt became more questionable in 2.6.28, when the split LRU patches classed\nshmem and tmpfs pages as SwapBacked rather than as file_cache: that in\nitself gives them more resistance to reclaim than normal file pages.  I\nprepared this patch for 2.6.29, but the merge window arrived before I\u0027d\ncompleted gathering statistics to justify sending it in.\n\nThen while comparing SLQB against SLUB, running SLUB on a laptop I\u0027d\nhabitually used with SLAB, I found SLUB to run my tmpfs kbuild swapping\ntests five times slower than SLAB or SLQB - other machines slower too, but\nnowhere near so bad.  Simpler \"cp -a\" swapping tests showed the same.\n\nslub_max_order\u003d0 brings sanity to all, but heavy swapping is too far from\nnormal to justify such a tuning.  The crucial factor on that laptop turns\nout to be that I\u0027m using an SD card for swap.  What happens is this:\n\nBy default, SLUB uses order-2 pages for shmem_inode_cache (and many other\nfs inodes), so creating tmpfs files under memory pressure brings lumpy\nreclaim into play.  One subpage of the order is chosen from the bottom of\nthe LRU as usual, then the other three picked out from their random\npositions on the LRUs.\n\nIn a tmpfs load, many of these pages will be ones which already passed\nthrough shmem_writepage, so already have swap allocated.  And though their\noffsets on swap were probably allocated sequentially, now that the pages\nare picked off at random, their swap offsets are scattered.\n\nBut the flash storage on the SD card is very sensitive to having its\nwrites merged: once swap is written at scattered offsets, performance\nfalls apart.  Rotating disk seeks increase too, but less disastrously.\n\nSo: stop giving shmem/tmpfs pages a second pass around the LRU, write them\nout to swap as soon as their swap has been allocated.\n\nIt\u0027s surely possible to devise an artificial load which runs faster the\nold way, one whose sizing is such that the tmpfs pages on their second\npass are the ones that are wanted again, and other pages not.\n\nBut I\u0027ve not yet found such a load: on all machines, under the loads I\u0027ve\ntried, immediate swap_writepage speeds up shmem swapping: especially when\nusing the SLUB allocator (and more effectively than slub_max_order\u003d0), but\nalso with the others; and it also reduces the variance between runs.  How\nmuch faster varies widely: a factor of five is rare, 5% is common.\n\nOne load which might have suffered: imagine a swapping shmem load in a\nlimited mem_cgroup on a machine with plenty of memory.  Before 2.6.29 the\nswapcache was not charged, and such a load would have run quickest with\nthe shmem swapcache never written to swap.  But now swapcache is charged,\nso even this load benefits from shmem_writepage directly to swap.\n\nApologies for the #ifndef CONFIG_SWAP swap_writepage() stub in swap.h:\nit\u0027s silly because that will never get called; but refactoring shmem.c\nsensibly according to CONFIG_SWAP will be a separate task.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "327c0e968645f2601a43f5ea7c19c7b3a5fa0a34",
      "tree": "acc6789c120a6d5000ceebf51e690d14c6cfcacb",
      "parents": [
        "2678958e1225f350806d90f211a3b475f64aee80"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Mar 31 15:23:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "vmscan: fix it to take care of nodemask\n\ntry_to_free_pages() is used for the direct reclaim of up to\nSWAP_CLUSTER_MAX pages when watermarks are low.  The caller to\nalloc_pages_nodemask() can specify a nodemask of nodes that are allowed to\nbe used but this is not passed to try_to_free_pages().  This can lead to\nunnecessary reclaim of pages that are unusable by the caller and int the\nworst case lead to allocation failure as progress was not been make where\nit is needed.\n\nThis patch passes the nodemask used for alloc_pages_nodemask() to\ntry_to_free_pages().\n\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2678958e1225f350806d90f211a3b475f64aee80",
      "tree": "d4aeb116c78f31f96ffb0760e36b95424e7f9494",
      "parents": [
        "88c3bd707c2552bcef93cc3724647903aece159d"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Mar 31 15:23:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "ramfs-nommu: use generic lru cache\n\nInstead of open-coding the lru-list-add pagevec batching when expanding a\nfile mapping from zero, defer to the appropriate page cache function that\nalso takes care of adding the page to the lru list.\n\nThis is cleaner, saves code and reduces the stack footprint by 16 words\nworth of pagevec.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.com\u003e\nCc: MinChan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: 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": "88c3bd707c2552bcef93cc3724647903aece159d",
      "tree": "68c104f559854b1f5fea01ed8568584e535ac597",
      "parents": [
        "71aa653c6bfa6743d838342105ebc067145394e4"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Mar 31 15:23:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "vmscan: print shrink_slab symbol name on negative shrinker objects\n\nWhen a shrinker has a negative number of objects to delete, the symbol\nname of the shrinker should be printed, not shrink_slab.  This also makes\nthe error message slightly more informative.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "71aa653c6bfa6743d838342105ebc067145394e4",
      "tree": "9e5cadbcc897301cf3af2ebe45d44d574274a054",
      "parents": [
        "33925b25d2c00a29664f1994ab350a9bff70f7a2"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Mar 31 15:23:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "nommu: make CONFIG_UNEVICTABLE_LRU available when CONFIG_MMU\u003dn\n\nMake CONFIG_UNEVICTABLE_LRU available when CONFIG_MMU\u003dn.  There\u0027s no logical\nreason it shouldn\u0027t be available, and it can be used for ramfs.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Enrik Berkhan \u003cEnrik.Berkhan@ge.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "33925b25d2c00a29664f1994ab350a9bff70f7a2",
      "tree": "fe1a0ef5cceba27664eae8f38f9e4e2a27bf1b36",
      "parents": [
        "7ca43e7564679604d86e9ed834e7bbcffd8a4a3f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Mar 31 15:23:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "nommu: there is no mlock() for NOMMU, so don\u0027t provide the bits\n\nThe mlock() facility does not exist for NOMMU since all mappings are\neffectively locked anyway, so we don\u0027t make the bits available when\nthey\u0027re not useful.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Enrik Berkhan \u003cEnrik.Berkhan@ge.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ca43e7564679604d86e9ed834e7bbcffd8a4a3f",
      "tree": "575e21270d7c8284f54b1e91eb5dd128ae03d713",
      "parents": [
        "f4112de6b679d84bd9b9681c7504be7bdfb7c7d5"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Tue Mar 31 15:23:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "mm: use debug_kmap_atomic\n\nUse debug_kmap_atomic in kmap_atomic, kmap_atomic_pfn, and\niomap_atomic_prot_pfn.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f4112de6b679d84bd9b9681c7504be7bdfb7c7d5",
      "tree": "c9a5665b31e751e1d4255b8c35a6245d5abfa3eb",
      "parents": [
        "851a039cc547b33b8139fe6d7c2bbfb158e2724e"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Tue Mar 31 15:23:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "mm: introduce debug_kmap_atomic\n\nx86 has debug_kmap_atomic_prot() which is error checking function for\nkmap_atomic.  It is usefull for the other architectures, although it needs\nCONFIG_TRACE_IRQFLAGS_SUPPORT.\n\nThis patch exposes it to the other architectures.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "851a039cc547b33b8139fe6d7c2bbfb158e2724e",
      "tree": "0deabfe04b648d7542de8dd36dcd384d03fe09f6",
      "parents": [
        "56a76f8275c379ed73c8a43cfa1dfa2f5e9cfa19"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 31 15:23:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "mm: page_mkwrite change prototype to match fault: fix sysfs\n\nFix warnings and return values in sysfs bin_page_mkwrite(), fixing\nfs/sysfs/bin.c: In function `bin_page_mkwrite\u0027:\nfs/sysfs/bin.c:250: warning: passing argument 2 of `bb-\u003evm_ops-\u003epage_mkwrite\u0027 from incompatible pointer type\nfs/sysfs/bin.c: At top level:\nfs/sysfs/bin.c:280: warning: initialization from incompatible pointer type\n\nExpects to have my [PATCH next] sysfs: fix some bin_vm_ops errors\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "56a76f8275c379ed73c8a43cfa1dfa2f5e9cfa19"
}
