)]}'
{
  "log": [
    {
      "commit": "312639bb1bc65abca243a6cee6e5364663d2dd7a",
      "tree": "f185d1f62078bb7671d60275d1ebcc56b388c78b",
      "parents": [
        "35434c5fb7919bbc1112d9da2c19b5ea79fb7850"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Tue Aug 28 16:49:28 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:06 2012 +0800"
      },
      "message": "Revert \"[CRYPTO] cast6: inline bloat--\"\n\nThis reverts commit e6ccc727f30a02670f6a00df6d548942bc988f43.\n\nAbove commit caused performance regression for CAST6. Reverting gives\nfollowing increase in tcrypt speed tests (revert-vs-old ratios).\n\nAMD Phenom II X6 1055T, x86-64:\n\nsize    ecb             cbc             ctr             lrw             xts\n        enc     dec     enc     dec     enc     dec     enc     dec     enc     dec\n16b     1.15x   1.17x   1.16x   1.17x   1.16x   1.16x   1.14x   1.19x   1.05x   1.07x\n64b     1.19x   1.23x   1.20x   1.22x   1.19x   1.19x   1.16x   1.24x   1.12x   1.12x\n256b    1.21x   1.24x   1.22x   1.24x   1.20x   1.20x   1.17x   1.21x   1.16x   1.14x\n1kb     1.21x   1.25x   1.22x   1.24x   1.21x   1.21x   1.18x   1.22x   1.17x   1.15x\n8kb     1.21x   1.25x   1.22x   1.24x   1.21x   1.21x   1.18x   1.22x   1.18x   1.15x\n\nCc: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "35434c5fb7919bbc1112d9da2c19b5ea79fb7850",
      "tree": "f129df9e17b2be8b20ee77ad5e5d8a313b018c51",
      "parents": [
        "3cfad0d03ccb0fa7932398caecf97d11ab654a77"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Tue Aug 28 16:47:09 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:06 2012 +0800"
      },
      "message": "crypto: cast6 - fix sparse warnings (symbol was not declared, should be static?)\n\nFix \"symbol \u0027x\u0027 was not declared. Should it be static?\" sparse warnings.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "3cfad0d03ccb0fa7932398caecf97d11ab654a77",
      "tree": "609c324e7a778f2783682ce919889b3297a5fd1d",
      "parents": [
        "1ffb72a39a92c1a03b3c732280e924c02c509cd3"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Tue Aug 28 16:47:04 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:05 2012 +0800"
      },
      "message": "crypto: cast5 - fix sparse warnings (symbol was not declared, should be static?)\n\nFix \"symbol \u0027x\u0027 was not declared. Should it be static?\" sparse warnings.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "1ffb72a39a92c1a03b3c732280e924c02c509cd3",
      "tree": "a909c21b6adf6c90a1153d33615851bc025b154f",
      "parents": [
        "66ce0b0f290b2cf1ac74a30ddd13a9a3e67296ce"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Tue Aug 28 16:46:59 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:05 2012 +0800"
      },
      "message": "crypto: camellia-x86_64 - fix sparse warnings (constant is so big)\n\nFix \"constant 0xXXXXXXXXXXXXXXXX is so big it\u0027s unsigned long\" sparse warnings.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "66ce0b0f290b2cf1ac74a30ddd13a9a3e67296ce",
      "tree": "044232fd7c2a9b99d1e511cc6de050ccbb4c8369",
      "parents": [
        "c09220e1bc97d83cae445cab8dcb057fabd62361"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Tue Aug 28 16:46:54 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:05 2012 +0800"
      },
      "message": "crypto: crypto_user - fix sparse warnings (symbol was not declared, should be static?)\n\nFix \"symbol \u0027x\u0027 was not declared. Should it be static?\" sparse warnings.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "c09220e1bc97d83cae445cab8dcb057fabd62361",
      "tree": "2f7a80b98592630c28350ebe4cb0f3be616cc8f8",
      "parents": [
        "ddaea7869d29beb9e0042c96ea52c9cca2afd68a"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Tue Aug 28 14:24:54 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:05 2012 +0800"
      },
      "message": "crypto: cast6-avx - tune assembler code for more performance\n\nPatch replaces \u0027movb\u0027 instructions with \u0027movzbl\u0027 to break false register\ndependencies, interleaves instructions better for out-of-order scheduling\nand merges constant 16-bit rotation with round-key variable rotation.\n\ntcrypt ECB results:\n\nIntel Core i5-2450M:\n\nsize    old-vs-new      new-vs-generic  old-vs-generic\n        enc     dec     enc     dec     enc     dec\n256     1.13x   1.19x   2.05x   2.17x   1.82x   1.82x\n1k      1.18x   1.21x   2.26x   2.33x   1.93x   1.93x\n8k      1.19x   1.19x   2.32x   2.33x   1.95x   1.95x\n\n[v2]\n - Do instruction interleaving another way to avoid adding new FPU\u003c\u003d\u003eCPU\n   register moves as these cause performance drop on Bulldozer.\n - Improvements to round-key variable rotation handling.\n - Further interleaving improvements for better out-of-order scheduling.\n\nCc: Johannes Goetzfried \u003cJohannes.Goetzfried@informatik.stud.uni-erlangen.de\u003e\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "ddaea7869d29beb9e0042c96ea52c9cca2afd68a",
      "tree": "d4d6d6e71ae0d1d451c58e7910ae3a05f55d0ad8",
      "parents": [
        "f94a73f8dd5644f45f9d2e3139608ca83b932d93"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Tue Aug 28 14:24:49 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:04 2012 +0800"
      },
      "message": "crypto: cast5-avx - tune assembler code for more performance\n\nPatch replaces \u0027movb\u0027 instructions with \u0027movzbl\u0027 to break false register\ndependencies, interleaves instructions better for out-of-order scheduling\nand merges constant 16-bit rotation with round-key variable rotation.\n\ntcrypt ECB results (128bit key):\n\nIntel Core i5-2450M:\n\nsize    old-vs-new      new-vs-generic  old-vs-generic\n        enc     dec     enc     dec     enc     dec\n256     1.18x   1.18x   2.45x   2.47x   2.08x   2.10x\n1k      1.20x   1.20x   2.73x   2.73x   2.28x   2.28x\n8k      1.20x   1.19x   2.73x   2.73x   2.28x   2.29x\n\n[v2]\n - Do instruction interleaving another way to avoid adding new FPU\u003c\u003d\u003eCPU\n   register moves as these cause performance drop on Bulldozer.\n - Improvements to round-key variable rotation handling.\n - Further interleaving improvements for better out-of-order scheduling.\n\nCc: Johannes Goetzfried \u003cJohannes.Goetzfried@informatik.stud.uni-erlangen.de\u003e\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "f94a73f8dd5644f45f9d2e3139608ca83b932d93",
      "tree": "7b4c39aa93c9d699aaed30e80f82da0bf730e4d1",
      "parents": [
        "49d30d3d5fd133a6243acf76c98242a68408a31a"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Tue Aug 28 14:24:43 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:04 2012 +0800"
      },
      "message": "crypto: twofish-avx - tune assembler code for more performance\n\nPatch replaces \u0027movb\u0027 instructions with \u0027movzbl\u0027 to break false register\ndependencies and interleaves instructions better for out-of-order scheduling.\n\nTested on Intel Core i5-2450M and AMD FX-8100.\n\ntcrypt ECB results:\n\nIntel Core i5-2450M:\n\nsize    old-vs-new      new-vs-3way     old-vs-3way\n        enc     dec     enc     dec     enc     dec\n256     1.12x   1.13x   1.36x   1.37x   1.21x   1.22x\n1k      1.14x   1.14x   1.48x   1.49x   1.29x   1.31x\n8k      1.14x   1.14x   1.50x   1.52x   1.32x   1.33x\n\nAMD FX-8100:\n\nsize    old-vs-new      new-vs-3way     old-vs-3way\n        enc     dec     enc     dec     enc     dec\n256     1.10x   1.11x   1.01x   1.01x   0.92x   0.91x\n1k      1.11x   1.12x   1.08x   1.07x   0.97x   0.96x\n8k      1.11x   1.13x   1.10x   1.08x   0.99x   0.97x\n\n[v2]\n - Do instruction interleaving another way to avoid adding new FPU\u003c\u003d\u003eCPU\n   register moves as these cause performance drop on Bulldozer.\n - Further interleaving improvements for better out-of-order scheduling.\n\nTested-by: Borislav Petkov \u003cbp@alien8.de\u003e\nCc: Johannes Goetzfried \u003cJohannes.Goetzfried@informatik.stud.uni-erlangen.de\u003e\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "49d30d3d5fd133a6243acf76c98242a68408a31a",
      "tree": "1cd8aa78dc2d297f1475900d75049bd5c82ccb51",
      "parents": [
        "21a5b95f568d51d0c65c6a84f808e4e56a939f9b"
      ],
      "author": {
        "name": "Sachin Kamat",
        "email": "sachin.kamat@linaro.org",
        "time": "Mon Aug 27 15:45:31 2012 +0530"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:03 2012 +0800"
      },
      "message": "crypto: geode-aes - Use module_pci_driver\n\nmodule_pci_driver makes the code simpler by eliminating\nmodule_init and module_exit calls.\n\nSigned-off-by: Sachin Kamat \u003csachin.kamat@linaro.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "21a5b95f568d51d0c65c6a84f808e4e56a939f9b",
      "tree": "4cf32019c88ab1722d2a51dd780246567a25b320",
      "parents": [
        "2af8f4a2727998eb3f4ff1edfffaca99955ef22e"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yongjun_wei@trendmicro.com.cn",
        "time": "Sun Aug 26 09:34:06 2012 +0800"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:03 2012 +0800"
      },
      "message": "crypto: remove duplicated include\n\nFrom: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\n\nRemove duplicated include.\n\nSigned-off-by: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "2af8f4a2727998eb3f4ff1edfffaca99955ef22e",
      "tree": "8afadd6ec6ed66f25635b27c13c487f1dac06047",
      "parents": [
        "6bbb98ddfc8db769c1675cc8d829ce720a735fc6"
      ],
      "author": {
        "name": "Kim Phillips",
        "email": "kim.phillips@freescale.com",
        "time": "Fri Sep 07 04:17:03 2012 +0800"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:03 2012 +0800"
      },
      "message": "crypto: caam - coccicheck fixes\n\nuse true/false for bool, fix code alignment, and fix two allocs with\nno test.\n\nSigned-off-by: Kim Phillips \u003ckim.phillips@freescale.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "6bbb98ddfc8db769c1675cc8d829ce720a735fc6",
      "tree": "cafc85bed2fde18d276e9dafbd9d81afe020b1bc",
      "parents": [
        "f0be44f4fb1faee42635ca5ea06dc9c3e820a35d"
      ],
      "author": {
        "name": "Devendra Naga",
        "email": "develkernel412222@gmail.com",
        "time": "Fri Aug 24 23:03:57 2012 +0530"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:03 2012 +0800"
      },
      "message": "crypto: ux500/hash - remove unneeded return at ux500_hash_mod_fini\n\nSigned-off-by: Devendra Naga \u003cdevelkernel412222@gmail.com\u003e\nAcked-by: Linus Walleij \u003clinus.walleij@linaro.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "f0be44f4fb1faee42635ca5ea06dc9c3e820a35d",
      "tree": "866c6016f7153ddff778a5eda036934e7eb426ac",
      "parents": [
        "956c203c5e370c7beb766400b5c1a32ec570ce96"
      ],
      "author": {
        "name": "David McCullough",
        "email": "david_mccullough@mcafee.com",
        "time": "Fri Sep 07 04:17:02 2012 +0800"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:02 2012 +0800"
      },
      "message": "arm/crypto: Add optimized AES and SHA1 routines\n\nAdd assembler versions of AES and SHA1 for ARM platforms.  This has provided\nup to a 50% improvement in IPsec/TCP throughout for tunnels using AES128/SHA1.\n\nPlatform   CPU SPeed    Endian   Before (bps)   After (bps)   Improvement\n\nIXP425      533 MHz      big     11217042        15566294        ~38%\nKS8695      166 MHz     little    3828549         5795373        ~51%\n\nSigned-off-by: David McCullough \u003cucdevel@gmail.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "956c203c5e370c7beb766400b5c1a32ec570ce96",
      "tree": "5f127e4470ea0e070b2a043166cb2ace742af7bd",
      "parents": [
        "e763eb699be723fb41af818118068c6b3afdaf8d"
      ],
      "author": {
        "name": "Kent Yoder",
        "email": "key@linux.vnet.ibm.com",
        "time": "Fri Sep 07 04:17:01 2012 +0800"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Sep 07 04:17:01 2012 +0800"
      },
      "message": "crypto: Add a MAINTAINERS entry for P7+ in-Nest crypto driver\n\nAdd a MAINTAINERS entry for the IBM Power in-Nest Crypto Acceleators\ndriver.\n\nSigned-off-by: Kent Yoder \u003ckey@linux.vnet.ibm.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "e763eb699be723fb41af818118068c6b3afdaf8d",
      "tree": "a15372752e0f498db491dd8b64e39ee295c22aed",
      "parents": [
        "79fd31d355f7e315025a330adc2183fb5ae8f22d"
      ],
      "author": {
        "name": "Horia Geanta",
        "email": "horia.geanta@freescale.com",
        "time": "Wed Aug 08 18:46:45 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Aug 28 23:56:30 2012 +0800"
      },
      "message": "crypto: talitos - add IPsec ESN support\n\nSupport for ESNs (extended sequence numbers).\nTested with strongswan on a P2020RDB back-to-back setup.\nExtracted from /etc/ipsec.conf:\nesp\u003daes-sha1-esn-modp4096!\n\nSigned-off-by: Horia Geanta \u003choria.geanta@freescale.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "79fd31d355f7e315025a330adc2183fb5ae8f22d",
      "tree": "e32735f1d0dc615bf9ff66a2b01a4dcef381a0a2",
      "parents": [
        "2a1cfe46b17f6dd43fcd8eb2b5e5deaa2a94e4bb"
      ],
      "author": {
        "name": "Horia Geanta",
        "email": "horia.geanta@freescale.com",
        "time": "Thu Aug 02 17:16:40 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Aug 28 23:56:27 2012 +0800"
      },
      "message": "crypto: talitos - support for assoc data provided as scatterlist\n\nGenerate a link table in case assoc data is a scatterlist.\nWhile at it, add support for handling non-contiguous assoc data and iv.\n\nSigned-off-by: Horia Geanta \u003choria.geanta@freescale.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "2a1cfe46b17f6dd43fcd8eb2b5e5deaa2a94e4bb",
      "tree": "e09ecb81f77bad938b737ce059f2755afd9c5b8a",
      "parents": [
        "602499a34247a890fd018c364c9bb6f9b931c1db"
      ],
      "author": {
        "name": "Horia Geanta",
        "email": "horia.geanta@freescale.com",
        "time": "Thu Aug 02 17:16:39 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Aug 28 23:56:26 2012 +0800"
      },
      "message": "crypto: talitos - change type and name for [src|dst]_is_chained\n\nIt\u0027s more natural to think of these vars as bool rather than int.\n\nSigned-off-by: Horia Geanta \u003choria.geanta@freescale.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "602499a34247a890fd018c364c9bb6f9b931c1db",
      "tree": "053c47b4673854d97dc2b9e2e6fcf78a83d8359c",
      "parents": [
        "60542505b0bccbc5e2e518c9dd6bee9a30546061"
      ],
      "author": {
        "name": "Horia Geanta",
        "email": "horia.geanta@freescale.com",
        "time": "Thu Aug 02 17:16:38 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Aug 28 23:56:26 2012 +0800"
      },
      "message": "crypto: talitos - prune unneeded descriptor allocation param\n\ntalitos_edesc_alloc does not need hash_result param.\nChecking whether dst scatterlist is NULL or not is all that is required.\n\nSigned-off-by: Horia Geanta \u003choria.geanta@freescale.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "60542505b0bccbc5e2e518c9dd6bee9a30546061",
      "tree": "26c11e2662308780dc4719e4254111414ad9d194",
      "parents": [
        "b286e00304f9c1d27b93753536ac5246a287dd55"
      ],
      "author": {
        "name": "Horia Geanta",
        "email": "horia.geanta@freescale.com",
        "time": "Thu Aug 02 17:16:37 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Aug 28 23:56:26 2012 +0800"
      },
      "message": "crypto: talitos - fix icv management on outbound direction\n\nFor IPsec encryption, in the case when:\n-the input buffer is fragmented (edesc-\u003esrc_nents \u003e 0)\n-the output buffer is not fragmented (edesc-\u003edst_nents \u003d 0)\nthe ICV is not output in the link table, but after the encrypted payload.\n\nCopying the ICV must be avoided in this case; consequently the condition\nedesc-\u003edma_len \u003e 0 must be more specific, i.e. must depend on the type\nof the output buffer - fragmented or not.\n\nTesting was performed by modifying testmgr to support src !\u003d dst,\nsince currently native kernel IPsec does in-place encryption\n(src \u003d\u003d dst).\n\nSigned-off-by: Horia Geanta \u003choria.geanta@freescale.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "b286e00304f9c1d27b93753536ac5246a287dd55",
      "tree": "80df5a8f8eccefcd758f6b5a2758d4c380a4473b",
      "parents": [
        "d4cd3283f67d08a18f83fbe7a26a10fe4b474b48"
      ],
      "author": {
        "name": "Kim Phillips",
        "email": "kim.phillips@freescale.com",
        "time": "Wed Aug 08 20:33:34 2012 -0500"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Aug 28 23:53:53 2012 +0800"
      },
      "message": "crypto: talitos - consolidate common cra_* assignments\n\nthe entry points and geniv definitions for all aead,\nablkcipher, and hash algorithms are all common; move them to a\nsingle assignment in talitos_alg_alloc().\n\nThis assumes it\u0027s ok to assign a setkey() on non-hmac algs.\n\nSigned-off-by: Kim Phillips \u003ckim.phillips@freescale.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "d4cd3283f67d08a18f83fbe7a26a10fe4b474b48",
      "tree": "dbbc10e3da1217a233bb6319411aab63548c5018",
      "parents": [
        "22eed1ca199d905480fbbd3c622458602563d8e0"
      ],
      "author": {
        "name": "Kim Phillips",
        "email": "kim.phillips@freescale.com",
        "time": "Wed Aug 08 20:32:00 2012 -0500"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Aug 28 23:53:53 2012 +0800"
      },
      "message": "crypto: talitos - consolidate cra_type assignments\n\nlighten driver_algs[] by moving them to talitos_alg_alloc().\n\nSigned-off-by: Kim Phillips \u003ckim.phillips@freescale.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "22eed1ca199d905480fbbd3c622458602563d8e0",
      "tree": "b406497cda0576f8c63a130b1290fd2413139ff1",
      "parents": [
        "4dbb845ddedff87fc1289ad0e2d780a4a7918356"
      ],
      "author": {
        "name": "Tushar Behera",
        "email": "tushar.behera@linaro.org",
        "time": "Tue Aug 07 17:32:14 2012 +0530"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Aug 20 16:28:13 2012 +0800"
      },
      "message": "crypto: atmel - Remove possible typo error\n\nCommit bd3c7b5c2aba (\"crypto: atmel - add Atmel AES driver\") possibly\nhas a typo error of adding an extra CONFIG_.\n\nCC: Nicolas Royer \u003cnicolas@eukrea.com\u003e\nSigned-off-by: Tushar Behera \u003ctushar.behera@linaro.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "4dbb845ddedff87fc1289ad0e2d780a4a7918356",
      "tree": "2019b90c33a38259f93c4ada3167067ab026dd36",
      "parents": [
        "33b58b01ac2b7aadbd5143c74b029aee0ce9ac33"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "Julia.Lawall@lip6.fr",
        "time": "Sat Aug 04 18:50:46 2012 +0200"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Aug 20 16:28:13 2012 +0800"
      },
      "message": "drivers/char/hw_random/octeon-rng.c: drop frees of devm allocated data\n\ndevm_kfree and devm_iounmap should not have to be explicitly used.\n\nThe semantic patch that fixes this problem is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression x,d;\n@@\n\nx \u003d devm_kzalloc(...)\n...\n?-devm_kfree(d,x);\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cJulia.Lawall@lip6.fr\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "33b58b01ac2b7aadbd5143c74b029aee0ce9ac33",
      "tree": "d8753c31600bf01cf9d452eba3a9d0a128ba3989",
      "parents": [
        "023af608254add7ba037cd634cc5f2fb21ff6420"
      ],
      "author": {
        "name": "Michael Ellerman",
        "email": "michael@ellerman.id.au",
        "time": "Fri Aug 03 12:23:15 2012 +1000"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Aug 20 16:28:12 2012 +0800"
      },
      "message": "crypto: nx - Remove virt_to_abs() usage in nx-842.c\n\nvirt_to_abs() is just a wrapper around __pa(), use __pa() directly.\n\nWe should be including \u003casm/page.h\u003e to get __pa(). abs_addr.h will be\nremoved shortly so drop that.\n\nWe were getting of.h via abs_addr.h so we need to include that directly.\n\nHaving done all that, clean up the ordering of the includes.\n\nSigned-off-by: Michael Ellerman \u003cmichael@ellerman.id.au\u003e\nAcked-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "023af608254add7ba037cd634cc5f2fb21ff6420",
      "tree": "914c114c38c70841d3c794ea03c414dc110dab0c",
      "parents": [
        "35a1fc1873dd6deac6c005ead85424a8ee28183a"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Sun Jul 22 18:18:37 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Aug 20 16:28:10 2012 +0800"
      },
      "message": "crypto: aesni_intel - improve lrw and xts performance by utilizing parallel AES-NI hardware pipelines\n\nUse parallel LRW and XTS encryption facilities to better utilize AES-NI\nhardware pipelines and gain extra performance.\n\nTcrypt benchmark results (async), old vs new ratios:\n\nIntel Core i5-2450M CPU (fam: 6, model: 42, step: 7)\n\naes:128bit\n        lrw:256bit      xts:256bit\nsize    lrw-enc lrw-dec xts-dec xts-dec\n16B     0.99x   1.00x   1.22x   1.19x\n64B     1.38x   1.50x   1.58x   1.61x\n256B    2.04x   2.02x   2.27x   2.29x\n1024B   2.56x   2.54x   2.89x   2.92x\n8192B   2.85x   2.99x   3.40x   3.23x\n\naes:192bit\n        lrw:320bit      xts:384bit\nsize    lrw-enc lrw-dec xts-dec xts-dec\n16B     1.08x   1.08x   1.16x   1.17x\n64B     1.48x   1.54x   1.59x   1.65x\n256B    2.18x   2.17x   2.29x   2.28x\n1024B   2.67x   2.67x   2.87x   3.05x\n8192B   2.93x   2.84x   3.28x   3.33x\n\naes:256bit\n        lrw:348bit      xts:512bit\nsize    lrw-enc lrw-dec xts-dec xts-dec\n16B     1.07x   1.07x   1.18x   1.19x\n64B     1.56x   1.56x   1.70x   1.71x\n256B    2.22x   2.24x   2.46x   2.46x\n1024B   2.76x   2.77x   3.13x   3.05x\n8192B   2.99x   3.05x   3.40x   3.30x\n\nCc: Huang Ying \u003cying.huang@intel.com\u003e\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nReviewed-by: Kim Phillips \u003ckim.phillips@freescale.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "35a1fc1873dd6deac6c005ead85424a8ee28183a",
      "tree": "0d50a0e0bb3e6c5f8b82ed79c98e5d21101df9a0",
      "parents": [
        "0e16aafb12046e12effbdaab179fbe1a38427ba9"
      ],
      "author": {
        "name": "Seth Jennings",
        "email": "sjenning@linux.vnet.ibm.com",
        "time": "Thu Jul 19 09:42:41 2012 -0500"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:56 2012 +0800"
      },
      "message": "powerpc/crypto: add 842 crypto driver\n\nThis patch add the 842 cryptographic API driver that\nsubmits compression requests to the 842 hardware compression\naccelerator driver (nx-compress).\n\nIf the hardware accelerator goes offline for any reason\n(dynamic disable, migration, etc...), this driver will use LZO\nas a software failover for all future compression requests.\nFor decompression requests, the 842 hardware driver contains\na software implementation of the 842 decompressor to support\nthe decompression of data that was compressed before the accelerator\nwent offline.\n\nSigned-off-by: Robert Jennings \u003crcj@linux.vnet.ibm.com\u003e\nSigned-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "0e16aafb12046e12effbdaab179fbe1a38427ba9",
      "tree": "743ce60ba95bf9a5ee3cff7f664dd99a7498473e",
      "parents": [
        "da29aa8f2ab178903a1ac23ce19442f92be4f09c"
      ],
      "author": {
        "name": "Seth Jennings",
        "email": "sjenning@linux.vnet.ibm.com",
        "time": "Thu Jul 19 09:42:40 2012 -0500"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:56 2012 +0800"
      },
      "message": "powerpc/crypto: add 842 hardware compression driver\n\nThis patch adds the driver for interacting with the 842\ncompression accelerator on IBM Power7+ systems.\n\nThe device is a child of the Platform Facilities Option (PFO)\nand shows up as a child of the IBM VIO bus.\n\nThe compression/decompression API takes the same arguments\nas existing compression methods like lzo and deflate.  The 842\nhardware operates on 4K hardware pages and the driver breaks up\ninput on 4K boundaries to submit it to the hardware accelerator.\n\nSigned-off-by: Robert Jennings \u003crcj@linux.vnet.ibm.com\u003e\nSigned-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "da29aa8f2ab178903a1ac23ce19442f92be4f09c",
      "tree": "489b4d4290c8414ca475d187f5149e8e1f3881e5",
      "parents": [
        "322cacce0a3c36d3ad89d8836b9ed6fcb06e1a61"
      ],
      "author": {
        "name": "Seth Jennings",
        "email": "sjenning@linux.vnet.ibm.com",
        "time": "Thu Jul 19 09:42:39 2012 -0500"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:53 2012 +0800"
      },
      "message": "powerpc/crypto: add compression support to arch vec\n\nThis patch enables compression engine support in the\narchitecture vector.  This causes the Power hypervisor\nto allow access to the nx comrpession accelerator.\n\nSigned-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "322cacce0a3c36d3ad89d8836b9ed6fcb06e1a61",
      "tree": "bfd6c5a941e31cece3c2cd75265e235567175bc1",
      "parents": [
        "61bb86bba169507a5f223b94b9176c32c84b4721"
      ],
      "author": {
        "name": "Seth Jennings",
        "email": "sjenning@linux.vnet.ibm.com",
        "time": "Thu Jul 19 09:42:38 2012 -0500"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:52 2012 +0800"
      },
      "message": "powerpc/crypto: rework Kconfig\n\nThis patch creates a new submenu for the NX cryptographic\nhardware accelerator and breaks the NX options into their own\nKconfig file under drivers/crypto/nx/Kconfig.\n\nThis will permit additional NX functionality to be easily\nand more cleanly added in the future without touching\ndrivers/crypto/Makefile|Kconfig.\n\nSigned-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "61bb86bba169507a5f223b94b9176c32c84b4721",
      "tree": "265d8f59f76c2e6ff8aba29ea4663dff4033ab0a",
      "parents": [
        "95bcaa39053ff518021572ca00ebf626ee8cbaf8"
      ],
      "author": {
        "name": "Kim Phillips",
        "email": "kim.phillips@freescale.com",
        "time": "Fri Jul 13 17:49:28 2012 -0500"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:31 2012 +0800"
      },
      "message": "crypto: caam - set descriptor sharing type to SERIAL\n\nSHARE_WAIT, whilst more optimal for association-less crypto,\nhas the ability to start thrashing the CCB descriptor/key\ncaches, given high levels of traffic across multiple security\nassociations (and thus keys).\n\nSwitch to using the SERIAL sharing type, which prefers\nthe last used CCB for the SA.  On a 2-DECO platform\nsuch as the P3041, this can improve performance by\nabout 3.7%.\n\nSigned-off-by: Kim Phillips \u003ckim.phillips@freescale.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "95bcaa39053ff518021572ca00ebf626ee8cbaf8",
      "tree": "98b87dc54c548fba12510ab901c0a222b8e1aa18",
      "parents": [
        "4a905077134849ea30d1c6dbf4071ea9e8e71b93"
      ],
      "author": {
        "name": "Shengzhou Liu",
        "email": "Shengzhou.Liu@freescale.com",
        "time": "Fri Jul 13 17:49:21 2012 -0500"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:31 2012 +0800"
      },
      "message": "crypto: caam - add backward compatible string sec4.0\n\nIn some device trees of previous version, there were string \"fsl,sec4.0\".\nTo be backward compatible with device trees, we first check \"fsl,sec-v4.0\",\nif it fails, then check for \"fsl,sec4.0\".\n\nSigned-off-by: Shengzhou Liu \u003cShengzhou.Liu@freescale.com\u003e\n\nextended to include new hash and rng code, which was omitted from\nthe previous version of this patch during a rebase of the SDK\nversion.\n\nSigned-off-by: Kim Phillips \u003ckim.phillips@freescale.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "4a905077134849ea30d1c6dbf4071ea9e8e71b93",
      "tree": "bc19679072cf3978cd50e905991a606343806755",
      "parents": [
        "4ea1277d301eb776e321684cd4ea95116b4e8847"
      ],
      "author": {
        "name": "Kim Phillips",
        "email": "kim.phillips@freescale.com",
        "time": "Fri Jul 13 18:04:23 2012 -0500"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:31 2012 +0800"
      },
      "message": "crypto: caam - fix possible deadlock condition\n\ncommit \"crypto: caam - use non-irq versions of spinlocks for job rings\"\nmade two bad assumptions:\n\n(a) The caam_jr_enqueue lock isn\u0027t used in softirq context.\nNot true: jr_enqueue can be interrupted by an incoming net\ninterrupt and the received packet may be sent for encryption,\nvia caam_jr_enqueue in softirq context, thereby inducing a\ndeadlock.\n\nThis is evidenced when running netperf over an IPSec tunnel\nbetween two P4080\u0027s, with spinlock debugging turned on:\n\n[  892.092569] BUG: spinlock lockup on CPU#7, netperf/10634, e8bf5f70\n[  892.098747] Call Trace:\n[  892.101197] [eff9fc10] [c00084c0] show_stack+0x48/0x15c (unreliable)\n[  892.107563] [eff9fc50] [c0239c2c] do_raw_spin_lock+0x16c/0x174\n[  892.113399] [eff9fc80] [c0596494] _raw_spin_lock+0x3c/0x50\n[  892.118889] [eff9fc90] [c0445e74] caam_jr_enqueue+0xf8/0x250\n[  892.124550] [eff9fcd0] [c044a644] aead_decrypt+0x6c/0xc8\n[  892.129625] BUG: spinlock lockup on CPU#5, swapper/5/0, e8bf5f70\n[  892.129629] Call Trace:\n[  892.129637] [effa7c10] [c00084c0] show_stack+0x48/0x15c (unreliable)\n[  892.129645] [effa7c50] [c0239c2c] do_raw_spin_lock+0x16c/0x174\n[  892.129652] [effa7c80] [c0596494] _raw_spin_lock+0x3c/0x50\n[  892.129660] [effa7c90] [c0445e74] caam_jr_enqueue+0xf8/0x250\n[  892.129666] [effa7cd0] [c044a644] aead_decrypt+0x6c/0xc8\n[  892.129674] [effa7d00] [c0509724] esp_input+0x178/0x334\n[  892.129681] [effa7d50] [c0519778] xfrm_input+0x77c/0x818\n[  892.129688] [effa7da0] [c050e344] xfrm4_rcv_encap+0x20/0x30\n[  892.129697] [effa7db0] [c04b90c8] ip_local_deliver+0x190/0x408\n[  892.129703] [effa7de0] [c04b966c] ip_rcv+0x32c/0x898\n[  892.129709] [effa7e10] [c048b998] __netif_receive_skb+0x27c/0x4e8\n[  892.129715] [effa7e80] [c048d744] netif_receive_skb+0x4c/0x13c\n[  892.129726] [effa7eb0] [c03c28ac] _dpa_rx+0x1a8/0x354\n[  892.129732] [effa7ef0] [c03c2ac4] ingress_rx_default_dqrr+0x6c/0x108\n[  892.129742] [effa7f10] [c0467ae0] qman_poll_dqrr+0x170/0x1d4\n[  892.129748] [effa7f40] [c03c153c] dpaa_eth_poll+0x20/0x94\n[  892.129754] [effa7f60] [c048dbd0] net_rx_action+0x13c/0x1f4\n[  892.129763] [effa7fa0] [c003d1b8] __do_softirq+0x108/0x1b0\n[  892.129769] [effa7ff0] [c000df58] call_do_softirq+0x14/0x24\n[  892.129775] [ebacfe70] [c0004868] do_softirq+0xd8/0x104\n[  892.129780] [ebacfe90] [c003d5a4] irq_exit+0xb8/0xd8\n[  892.129786] [ebacfea0] [c0004498] do_IRQ+0xa4/0x1b0\n[  892.129792] [ebacfed0] [c000fad8] ret_from_except+0x0/0x18\n[  892.129798] [ebacff90] [c0009010] cpu_idle+0x94/0xf0\n[  892.129804] [ebacffb0] [c059ff88] start_secondary+0x42c/0x430\n[  892.129809] [ebacfff0] [c0001e28] __secondary_start+0x30/0x84\n[  892.281474]\n[  892.282959] [eff9fd00] [c0509724] esp_input+0x178/0x334\n[  892.288186] [eff9fd50] [c0519778] xfrm_input+0x77c/0x818\n[  892.293499] [eff9fda0] [c050e344] xfrm4_rcv_encap+0x20/0x30\n[  892.299074] [eff9fdb0] [c04b90c8] ip_local_deliver+0x190/0x408\n[  892.304907] [eff9fde0] [c04b966c] ip_rcv+0x32c/0x898\n[  892.309872] [eff9fe10] [c048b998] __netif_receive_skb+0x27c/0x4e8\n[  892.315966] [eff9fe80] [c048d744] netif_receive_skb+0x4c/0x13c\n[  892.321803] [eff9feb0] [c03c28ac] _dpa_rx+0x1a8/0x354\n[  892.326855] [eff9fef0] [c03c2ac4] ingress_rx_default_dqrr+0x6c/0x108\n[  892.333212] [eff9ff10] [c0467ae0] qman_poll_dqrr+0x170/0x1d4\n[  892.338872] [eff9ff40] [c03c153c] dpaa_eth_poll+0x20/0x94\n[  892.344271] [eff9ff60] [c048dbd0] net_rx_action+0x13c/0x1f4\n[  892.349846] [eff9ffa0] [c003d1b8] __do_softirq+0x108/0x1b0\n[  892.355338] [eff9fff0] [c000df58] call_do_softirq+0x14/0x24\n[  892.360910] [e7169950] [c0004868] do_softirq+0xd8/0x104\n[  892.366135] [e7169970] [c003d5a4] irq_exit+0xb8/0xd8\n[  892.371101] [e7169980] [c0004498] do_IRQ+0xa4/0x1b0\n[  892.375979] [e71699b0] [c000fad8] ret_from_except+0x0/0x18\n[  892.381466] [e7169a70] [c0445e74] caam_jr_enqueue+0xf8/0x250\n[  892.387127] [e7169ab0] [c044ad4c] aead_givencrypt+0x6ac/0xa70\n[  892.392873] [e7169b20] [c050a0b8] esp_output+0x2b4/0x570\n[  892.398186] [e7169b80] [c0519b9c] xfrm_output_resume+0x248/0x7c0\n[  892.404194] [e7169bb0] [c050e89c] xfrm4_output_finish+0x18/0x28\n[  892.410113] [e7169bc0] [c050e8f4] xfrm4_output+0x48/0x98\n[  892.415427] [e7169bd0] [c04beac0] ip_local_out+0x48/0x98\n[  892.420740] [e7169be0] [c04bec7c] ip_queue_xmit+0x16c/0x490\n[  892.426314] [e7169c10] [c04d6128] tcp_transmit_skb+0x35c/0x9a4\n[  892.432147] [e7169c70] [c04d6f98] tcp_write_xmit+0x200/0xa04\n[  892.437808] [e7169cc0] [c04c8ccc] tcp_sendmsg+0x994/0xcec\n[  892.443213] [e7169d40] [c04eebfc] inet_sendmsg+0xd0/0x164\n[  892.448617] [e7169d70] [c04792f8] sock_sendmsg+0x8c/0xbc\n[  892.453931] [e7169e40] [c047aecc] sys_sendto+0xc0/0xfc\n[  892.459069] [e7169f10] [c047b934] sys_socketcall+0x110/0x25c\n[  892.464729] [e7169f40] [c000f480] ret_from_syscall+0x0/0x3c\n\n(b) since the caam_jr_dequeue lock is only used in bh context,\nthen semantically it should use _bh spin_lock types.  spin_lock_bh\nsemantics are to disable back-halves, and used when a lock is shared\nbetween softirq (bh) context and process and/or h/w IRQ context.\nSince the lock is only used within softirq context, and this tasklet\nis atomic, there is no need to do the additional work to disable\nback halves.\n\nThis patch adds back-half disabling protection to caam_jr_enqueue\nspin_locks to fix (a), and drops it from caam_jr_dequeue to fix (b).\n\nSigned-off-by: Kim Phillips \u003ckim.phillips@freescale.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "4ea1277d301eb776e321684cd4ea95116b4e8847",
      "tree": "675ef40d239946bc3232861cdf5a84259da09dc6",
      "parents": [
        "9b8b04051d0df1e2c7c31206caff05673a2c685f"
      ],
      "author": {
        "name": "Johannes Goetzfried",
        "email": "Johannes.Goetzfried@informatik.stud.uni-erlangen.de",
        "time": "Wed Jul 11 19:38:57 2012 +0200"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:30 2012 +0800"
      },
      "message": "crypto: cast6 - add x86_64/avx assembler implementation\n\nThis patch adds a x86_64/avx assembler implementation of the Cast6 block\ncipher. The implementation processes eight blocks in parallel (two 4 block\nchunk AVX operations). The table-lookups are done in general-purpose registers.\nFor small blocksizes the functions from the generic module are called. A good\nperformance increase is provided for blocksizes greater or equal to 128B.\n\nPatch has been tested with tcrypt and automated filesystem tests.\n\nTcrypt benchmark results:\n\nIntel Core i5-2500 CPU (fam:6, model:42, step:7)\n\ncast6-avx-x86_64 vs. cast6-generic\n128bit key:                                             (lrw:256bit)    (xts:256bit)\nsize    ecb-enc ecb-dec cbc-enc cbc-dec ctr-enc ctr-dec lrw-enc lrw-dec xts-enc xts-dec\n16B     0.97x   1.00x   1.01x   1.01x   0.99x   0.97x   0.98x   1.01x   0.96x   0.98x\n64B     0.98x   0.99x   1.02x   1.01x   0.99x   1.00x   1.01x   0.99x   1.00x   0.99x\n256B    1.77x   1.84x   0.99x   1.85x   1.77x   1.77x   1.70x   1.74x   1.69x   1.72x\n1024B   1.93x   1.95x   0.99x   1.96x   1.93x   1.93x   1.84x   1.85x   1.89x   1.87x\n8192B   1.91x   1.95x   0.99x   1.97x   1.95x   1.91x   1.86x   1.87x   1.93x   1.90x\n\n256bit key:                                             (lrw:384bit)    (xts:512bit)\nsize    ecb-enc ecb-dec cbc-enc cbc-dec ctr-enc ctr-dec lrw-enc lrw-dec xts-enc xts-dec\n16B     0.97x   0.99x   1.02x   1.01x   0.98x   0.99x   1.00x   1.00x   0.98x   0.98x\n64B     0.98x   0.99x   1.01x   1.00x   1.00x   1.00x   1.01x   1.01x   0.97x   1.00x\n256B    1.77x   1.83x   1.00x   1.86x   1.79x   1.78x   1.70x   1.76x   1.71x   1.69x\n1024B   1.92x   1.95x   0.99x   1.96x   1.93x   1.93x   1.83x   1.86x   1.89x   1.87x\n8192B   1.94x   1.95x   0.99x   1.97x   1.95x   1.95x   1.87x   1.87x   1.93x   1.91x\n\nSigned-off-by: Johannes Goetzfried \u003cJohannes.Goetzfried@informatik.stud.uni-erlangen.de\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "9b8b04051d0df1e2c7c31206caff05673a2c685f",
      "tree": "f41ccc3c93237e887e02868ac75e747c4314be8a",
      "parents": [
        "2b49b906729644dd4696b9291b7e2f6cd1266dc0"
      ],
      "author": {
        "name": "Johannes Goetzfried",
        "email": "Johannes.Goetzfried@informatik.stud.uni-erlangen.de",
        "time": "Wed Jul 11 19:38:29 2012 +0200"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:30 2012 +0800"
      },
      "message": "crypto: testmgr - add larger cast6 testvectors\n\nNew ECB, CBC, CTR, LRW and XTS testvectors for cast6. We need larger\ntestvectors to check parallel code paths in the optimized implementation. Tests\nhave also been added to the tcrypt module.\n\nSigned-off-by: Johannes Goetzfried \u003cJohannes.Goetzfried@informatik.stud.uni-erlangen.de\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "2b49b906729644dd4696b9291b7e2f6cd1266dc0",
      "tree": "23efa38a81d4c7da484307ace9d37b137ced8efe",
      "parents": [
        "4d6d6a2c850f89bc9283d02519cb536baba72032"
      ],
      "author": {
        "name": "Johannes Goetzfried",
        "email": "Johannes.Goetzfried@informatik.stud.uni-erlangen.de",
        "time": "Wed Jul 11 19:38:12 2012 +0200"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:30 2012 +0800"
      },
      "message": "crypto: cast6 - prepare generic module for optimized implementations\n\nRename cast6 module to cast6_generic to allow autoloading of optimized\nimplementations. Generic functions and s-boxes are exported to be able to use\nthem within optimized implementations.\n\nSigned-off-by: Johannes Goetzfried \u003cJohannes.Goetzfried@informatik.stud.uni-erlangen.de\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "4d6d6a2c850f89bc9283d02519cb536baba72032",
      "tree": "8433747260d88000d79849bcd4db0e56b86aa6e4",
      "parents": [
        "a2c5826095562983bf316e3a7eb137ef04a71a24"
      ],
      "author": {
        "name": "Johannes Goetzfried",
        "email": "Johannes.Goetzfried@informatik.stud.uni-erlangen.de",
        "time": "Wed Jul 11 19:37:37 2012 +0200"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:30 2012 +0800"
      },
      "message": "crypto: cast5 - add x86_64/avx assembler implementation\n\nThis patch adds a x86_64/avx assembler implementation of the Cast5 block\ncipher. The implementation processes sixteen blocks in parallel (four 4 block\nchunk AVX operations). The table-lookups are done in general-purpose registers.\nFor small blocksizes the functions from the generic module are called. A good\nperformance increase is provided for blocksizes greater or equal to 128B.\n\nPatch has been tested with tcrypt and automated filesystem tests.\n\nTcrypt benchmark results:\n\nIntel Core i5-2500 CPU (fam:6, model:42, step:7)\n\ncast5-avx-x86_64 vs. cast5-generic\n64bit key:\nsize    ecb-enc ecb-dec cbc-enc cbc-dec ctr-enc ctr-dec\n16B     0.99x   0.99x   1.00x   1.00x   1.02x   1.01x\n64B     1.00x   1.00x   0.98x   1.00x   1.01x   1.02x\n256B    2.03x   2.01x   0.95x   2.11x   2.12x   2.13x\n1024B   2.30x   2.24x   0.95x   2.29x   2.35x   2.35x\n8192B   2.31x   2.27x   0.95x   2.31x   2.39x   2.39x\n\n128bit key:\nsize    ecb-enc ecb-dec cbc-enc cbc-dec ctr-enc ctr-dec\n16B     0.99x   0.99x   1.00x   1.00x   1.01x   1.01x\n64B     1.00x   1.00x   0.98x   1.01x   1.02x   1.01x\n256B    2.17x   2.13x   0.96x   2.19x   2.19x   2.19x\n1024B   2.29x   2.32x   0.95x   2.34x   2.37x   2.38x\n8192B   2.35x   2.32x   0.95x   2.35x   2.39x   2.39x\n\nSigned-off-by: Johannes Goetzfried \u003cJohannes.Goetzfried@informatik.stud.uni-erlangen.de\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "a2c5826095562983bf316e3a7eb137ef04a71a24",
      "tree": "c8b5176a619caca8841462da46a019c622065b59",
      "parents": [
        "270b0c6b406a0ae7673ee880d1d7cc6bd6c904de"
      ],
      "author": {
        "name": "Johannes Goetzfried",
        "email": "Johannes.Goetzfried@informatik.stud.uni-erlangen.de",
        "time": "Wed Jul 11 19:37:21 2012 +0200"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:29 2012 +0800"
      },
      "message": "crypto: testmgr - add larger cast5 testvectors\n\nNew ECB, CBC and CTR testvectors for cast5. We need larger testvectors to check\nparallel code paths in the optimized implementation. Tests have also been added\nto the tcrypt module.\n\nSigned-off-by: Johannes Goetzfried \u003cJohannes.Goetzfried@informatik.stud.uni-erlangen.de\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "270b0c6b406a0ae7673ee880d1d7cc6bd6c904de",
      "tree": "f73fc16f158c1cc3ff13ef6cd1019805ec79b53e",
      "parents": [
        "37743cc0d34c4c5cb8520bc27eb2a45141e938fe"
      ],
      "author": {
        "name": "Johannes Goetzfried",
        "email": "Johannes.Goetzfried@informatik.stud.uni-erlangen.de",
        "time": "Wed Jul 11 19:37:04 2012 +0200"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:29 2012 +0800"
      },
      "message": "crypto: cast5 - prepare generic module for optimized implementations\n\nRename cast5 module to cast5_generic to allow autoloading of optimized\nimplementations. Generic functions and s-boxes are exported to be able to use\nthem within optimized implementations.\n\nSigned-off-by: Johannes Goetzfried \u003cJohannes.Goetzfried@informatik.stud.uni-erlangen.de\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "37743cc0d34c4c5cb8520bc27eb2a45141e938fe",
      "tree": "76474cdd421d2c7146472a971efe20df2a85b05c",
      "parents": [
        "e15aa3692da1dcee3172966a878b04a1e0f514b3"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:21:01 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:29 2012 +0800"
      },
      "message": "crypto: arch/s390 - cleanup - remove unneeded cra_list initialization\n\nInitialization of cra_list is currently mixed, most ciphers initialize this\nfield and most shashes do not. Initialization however is not needed at all\nsince cra_list is initialized/overwritten in __crypto_register_alg() with\nlist_add(). Therefore perform cleanup to remove all unneeded initializations\nof this field in \u0027arch/s390/crypto/\u0027\n\nCc: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nCc: linux-s390@vger.kernel.org\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Jan Glauber \u003cjang@linux.vnet.ibm.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "e15aa3692da1dcee3172966a878b04a1e0f514b3",
      "tree": "0b9f118a6a38317524969845f21e8722f3414742",
      "parents": [
        "7af6c2456851eb08d51d95de38ae8302994031e9"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:20:56 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:28 2012 +0800"
      },
      "message": "crypto: drivers - remove cra_list initialization\n\nInitialization of cra_list is currently mixed, most ciphers initialize this\nfield and most shashes do not. Initialization however is not needed at all\nsince cra_list is initialized/overwritten in __crypto_register_alg() with\nlist_add(). Therefore perform cleanup to remove all unneeded initializations\nof this field in \u0027crypto/drivers/\u0027.\n\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: linux-geode@lists.infradead.org\nCc: Michal Ludvig \u003cmichal@logix.cz\u003e\nCc: Dmitry Kasatkin \u003cdmitry.kasatkin@nokia.com\u003e\nCc: Varun Wadekar \u003cvwadekar@nvidia.com\u003e\nCc: Eric Bénard \u003ceric@eukrea.com\u003e\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nAcked-by: Kent Yoder \u003ckey@linux.vnet.ibm.com\u003e\nAcked-by: Vladimir Zapolskiy \u003cvladimir_zapolskiy@mentor.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "7af6c2456851eb08d51d95de38ae8302994031e9",
      "tree": "15d314a6ff2e673026cc312a29e84de0ed0a2969",
      "parents": [
        "77ec2e734d4820c51cbabe1257e9311df5868160"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:20:51 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:27 2012 +0800"
      },
      "message": "crypto: arch/x86 - cleanup - remove unneeded crypto_alg.cra_list initializations\n\nInitialization of cra_list is currently mixed, most ciphers initialize this\nfield and most shashes do not. Initialization however is not needed at all\nsince cra_list is initialized/overwritten in __crypto_register_alg() with\nlist_add(). Therefore perform cleanup to remove all unneeded initializations\nof this field in \u0027arch/x86/crypto/\u0027.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "77ec2e734d4820c51cbabe1257e9311df5868160",
      "tree": "df262dafba63584e1e6b1b8e2143de255253a40c",
      "parents": [
        "f4b0277e7ef435733b888a62cf9c4c12b219e7c5"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:20:46 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:27 2012 +0800"
      },
      "message": "crypto: cleanup - remove unneeded crypto_alg.cra_list initializations\n\nInitialization of cra_list is currently mixed, most ciphers initialize this\nfield and most shashes do not. Initialization however is not needed at all\nsince cra_list is initialized/overwritten in __crypto_register_alg() with\nlist_add(). Therefore perform cleanup to remove all unneeded initializations\nof this field in \u0027crypto/\u0027.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "f4b0277e7ef435733b888a62cf9c4c12b219e7c5",
      "tree": "199ece67ddd98bf67d1b29b9b42c8fd54296d74e",
      "parents": [
        "648b2a102d268d41d8116abde9081327c1be82e8"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:20:41 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:27 2012 +0800"
      },
      "message": "crypto: whirlpool - use crypto_[un]register_shashes\n\nCombine all shash algs to be registered and use new crypto_[un]register_shashes\nfunctions. This simplifies init/exit code.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "648b2a102d268d41d8116abde9081327c1be82e8",
      "tree": "d1a56dedee32cdb68c7ceac3740e06c4167020b0",
      "parents": [
        "6aeb49bc5a6fffe2f8ba0668cf7459b6a4b672dc"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:20:36 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:26 2012 +0800"
      },
      "message": "crypto: sha512 - use crypto_[un]register_shashes\n\nCombine all shash algs to be registered and use new crypto_[un]register_shashes\nfunctions. This simplifies init/exit code.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "6aeb49bc5a6fffe2f8ba0668cf7459b6a4b672dc",
      "tree": "116f3a860e42cb57e69ad17a3736a9c1bb9efeba",
      "parents": [
        "a5e7a2dcfcf360f285db9edd479491b1e2207b4f"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:20:30 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:26 2012 +0800"
      },
      "message": "crypto: sha256 - use crypto_[un]register_shashes\n\nCombine all shash algs to be registered and use new crypto_[un]register_shashes\nfunctions. This simplifies init/exit code.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "a5e7a2dcfcf360f285db9edd479491b1e2207b4f",
      "tree": "6580bcc10cc61aed07d3f91f6c75d9a4a173cc2b",
      "parents": [
        "50fc3e8d2c9d1ee72c67b751e5ac5d76ebc5a12e"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:20:25 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:26 2012 +0800"
      },
      "message": "crypto: tiger - use crypto_[un]register_shashes\n\nCombine all shash algs to be registered and use new crypto_[un]register_shashes\nfunctions. This simplifies init/exit code.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "50fc3e8d2c9d1ee72c67b751e5ac5d76ebc5a12e",
      "tree": "29be3f3cff2b30a5c1d6ece2cc6a200668a7003f",
      "parents": [
        "8fc229a51b0e10f4ceb794e8b99fa0a427a7ba41"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:20:20 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:26 2012 +0800"
      },
      "message": "crypto: add crypto_[un]register_shashes for [un]registering multiple shash entries at once\n\nAdd crypto_[un]register_shashes() to allow simplifying init/exit code of shash\ncrypto modules that register multiple algorithms.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "8fc229a51b0e10f4ceb794e8b99fa0a427a7ba41",
      "tree": "1fbc95419d1e18ac21cc8fb28c6322aeddb31fe9",
      "parents": [
        "bbc406b9d2de4182a4b2990efcd1754ae9e2c483"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:20:15 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:25 2012 +0800"
      },
      "message": "crypto: ansi_cprng - use crypto_[un]register_algs\n\nCombine all crypto_alg to be registered and use new crypto_[un]register_algs\nfunctions. This simplifies init/exit code.\n\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "bbc406b9d2de4182a4b2990efcd1754ae9e2c483",
      "tree": "da6714266c12150c4ad41a22cdc4a8a7f39fedd1",
      "parents": [
        "9935e6d2f3b5670550e48a55172cab546ae5d096"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:20:10 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:25 2012 +0800"
      },
      "message": "crypto: serpent - use crypto_[un]register_algs\n\nCombine all crypto_alg to be registered and use new crypto_[un]register_algs\nfunctions. This simplifies init/exit code.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "9935e6d2f3b5670550e48a55172cab546ae5d096",
      "tree": "4fb721d92e50233da19b07a5e83441b9fef097f0",
      "parents": [
        "70a03bff6c3f9d2983f90b74e40b0769ceb4cbd7"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:20:05 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:24 2012 +0800"
      },
      "message": "crypto: des - use crypto_[un]register_algs\n\nCombine all crypto_alg to be registered and use new crypto_[un]register_algs\nfunctions. This simplifies init/exit code.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "70a03bff6c3f9d2983f90b74e40b0769ceb4cbd7",
      "tree": "de0e2248e5ac398ee64d9f537f42455fb0eef1f8",
      "parents": [
        "738206d325a936d048bb66b5e0c70e3b1a8692be"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:20:00 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:24 2012 +0800"
      },
      "message": "crypto: crypto_null - use crypto_[un]register_algs\n\nCombine all crypto_alg to be registered and use new crypto_[un]register_algs\nfunctions. This simplifies init/exit code.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "738206d325a936d048bb66b5e0c70e3b1a8692be",
      "tree": "b40306002fa1c3dcadcbf4776527876c4849c67d",
      "parents": [
        "2d534926205db9ffce4bbbde67cb9b2cee4b835c"
      ],
      "author": {
        "name": "Jussi Kivilinna",
        "email": "jussi.kivilinna@mbnet.fi",
        "time": "Wed Jul 11 14:19:55 2012 +0300"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 01 17:47:24 2012 +0800"
      },
      "message": "crypto: tea - use crypto_[un]register_algs\n\nCombine all crypto_alg to be registered and use new crypto_[un]register_algs\nfunctions. This simplifies init/exit code.\n\nSigned-off-by: Jussi Kivilinna \u003cjussi.kivilinna@mbnet.fi\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "2d534926205db9ffce4bbbde67cb9b2cee4b835c",
      "tree": "b906e41009b54d9a286df3454a841fd2b3f170cc",
      "parents": [
        "ac694dbdbc403c00e2c14d10bc7b8412cc378259",
        "f5a1ad057e6da5d0fc9c5677ff44797d193d3e62"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 20:44:03 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 20:44:03 2012 -0700"
      },
      "message": "Merge tag \u0027irqdomain-for-linus\u0027 of git://git.secretlab.ca/git/linux-2.6\n\nPull irqdomain changes from Grant Likely:\n \"Round of refactoring and enhancements to irq_domain infrastructure.\n  This series starts the process of simplifying irqdomain.  The ultimate\n  goal is to merge LEGACY, LINEAR and TREE mappings into a single\n  system, but had to back off from that after some last minute bugs.\n  Instead it mainly reorganizes the code and ensures that the reverse\n  map gets populated when the irq is mapped instead of the first time it\n  is looked up.\n\n  Merging of the irq_domain types is deferred to v3.7\n\n  In other news, this series adds helpers for creating static mappings\n  on a linear or tree mapping.\"\n\n* tag \u0027irqdomain-for-linus\u0027 of git://git.secretlab.ca/git/linux-2.6:\n  irqdomain: Improve diagnostics when a domain mapping fails\n  irqdomain: eliminate slow-path revmap lookups\n  irqdomain: Fix irq_create_direct_mapping() to test irq_domain type.\n  irqdomain: Eliminate dedicated radix lookup functions\n  irqdomain: Support for static IRQ mapping and association.\n  irqdomain: Always update revmap when setting up a virq\n  irqdomain: Split disassociating code into separate function\n  irq_domain: correct a minor wrong comment for linear revmap\n  irq_domain: Standardise legacy/linear domain selection\n  irqdomain: Make ops-\u003emap hook optional\n  irqdomain: Remove unnecessary test for IRQ_DOMAIN_MAP_LEGACY\n  irqdomain: Simple NUMA awareness.\n  devicetree: add helper inline for retrieving a node\u0027s full name\n"
    },
    {
      "commit": "ac694dbdbc403c00e2c14d10bc7b8412cc378259",
      "tree": "e37328cfbeaf43716dd5914cad9179e57e84df76",
      "parents": [
        "a40a1d3d0a2fd613fdec6d89d3c053268ced76ed",
        "437ea90cc3afdca5229b41c6b1d38c4842756cb9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 19:25:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 19:25:39 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge Andrew\u0027s second set of patches:\n - MM\n - a few random fixes\n - a couple of RTC leftovers\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (120 commits)\n  rtc/rtc-88pm80x: remove unneed devm_kfree\n  rtc/rtc-88pm80x: assign ret only when rtc_register_driver fails\n  mm: hugetlbfs: close race during teardown of hugetlbfs shared page tables\n  tmpfs: distribute interleave better across nodes\n  mm: remove redundant initialization\n  mm: warn if pg_data_t isn\u0027t initialized with zero\n  mips: zero out pg_data_t when it\u0027s allocated\n  memcg: gix memory accounting scalability in shrink_page_list\n  mm/sparse: remove index_init_lock\n  mm/sparse: more checks on mem_section number\n  mm/sparse: optimize sparse_index_alloc\n  memcg: add mem_cgroup_from_css() helper\n  memcg: further prevent OOM with too many dirty pages\n  memcg: prevent OOM with too many dirty pages\n  mm: mmu_notifier: fix freed page still mapped in secondary MMU\n  mm: memcg: only check anon swapin page charges for swap cache\n  mm: memcg: only check swap cache pages for repeated charging\n  mm: memcg: split swapin charge function into private and public part\n  mm: memcg: remove needless !mm fixup to init_mm when charging\n  mm: memcg: remove unneeded shmem charge type\n  ...\n"
    },
    {
      "commit": "a40a1d3d0a2fd613fdec6d89d3c053268ced76ed",
      "tree": "ed8ea274f82e0cb645632c9b1ddcd1a6afc40bad",
      "parents": [
        "3e9a97082fa639394e905e1fc4a0a7f719ca7644",
        "89e1f7d4c66d85f42c3d52ea3866eb10cadf6153"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 19:17:27 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 19:17:27 2012 -0700"
      },
      "message": "Merge tag \u0027vfio-for-v3.6\u0027 of git://github.com/awilliam/linux-vfio\n\nPull VFIO core from Alex Williamson:\n \"This series includes the VFIO userspace driver interface for the 3.6\n  kernel merge window.  This driver is intended to provide a secure\n  interface for device access using IOMMU protection for applications\n  like assignment of physical devices to virtual machines.\n\n  Qemu will be the first user of this interface, enabling assignment of\n  PCI devices to Qemu guests.  This interface is intended to eventually\n  replace the x86-specific assignment mechanism currently available in\n  KVM.\n\n  This interface has the advantage of being more secure, by working with\n  IOMMU groups to ensure device isolation and providing it\u0027s own\n  filtered resource access mechanism, and also more flexible, in not\n  being x86 or KVM specific (extensions to enable POWER are already\n  working).\n\n  This driver is originally the work of Tom Lyon, but has since been\n  handed over to me and gone through a complete overhaul thanks to the\n  input from David Gibson, Ben Herrenschmidt, Chris Wright, Joerg\n  Roedel, and others.  This driver has been available in linux-next for\n  the last month.\"\n\nPaul Mackerras says:\n \"I would be glad to see it go in since we want to use it with KVM on\n  PowerPC.  If possible we\u0027d like the PowerPC bits for it to go in as\n  well.\"\n\n* tag \u0027vfio-for-v3.6\u0027 of git://github.com/awilliam/linux-vfio:\n  vfio: Add PCI device driver\n  vfio: Type1 IOMMU implementation\n  vfio: Add documentation\n  vfio: VFIO core\n"
    },
    {
      "commit": "3e9a97082fa639394e905e1fc4a0a7f719ca7644",
      "tree": "9985cfa26e0597128eae03a2ee7e4614efea571f",
      "parents": [
        "941c8726e4e737e74d418ccec3d8e7b946a65541",
        "d2e7c96af1e54b507ae2a6a7dd2baf588417a7e5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 19:07:42 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 19:07:42 2012 -0700"
      },
      "message": "Merge tag \u0027random_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random\n\nPull random subsystem patches from Ted Ts\u0027o:\n \"This patch series contains a major revamp of how we collect entropy\n  from interrupts for /dev/random and /dev/urandom.\n\n  The goal is to addresses weaknesses discussed in the paper \"Mining\n  your Ps and Qs: Detection of Widespread Weak Keys in Network Devices\",\n  by Nadia Heninger, Zakir Durumeric, Eric Wustrow, J.  Alex Halderman,\n  which will be published in the Proceedings of the 21st Usenix Security\n  Symposium, August 2012.  (See https://factorable.net for more\n  information and an extended version of the paper.)\"\n\nFix up trivial conflicts due to nearby changes in\ndrivers/{mfd/ab3100-core.c, usb/gadget/omap_udc.c}\n\n* tag \u0027random_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random: (33 commits)\n  random: mix in architectural randomness in extract_buf()\n  dmi: Feed DMI table to /dev/random driver\n  random: Add comment to random_initialize()\n  random: final removal of IRQF_SAMPLE_RANDOM\n  um: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  sparc/ldc: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  [ARM] pxa: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  board-palmz71: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  isp1301_omap: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  pxa25x_udc: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  omap_udc: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  goku_udc: remove IRQF_SAMPLE_RANDOM which was commented out\n  uartlite: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  drivers: hv: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  xen-blkfront: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  n2_crypto: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  pda_power: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  i2c-pmcmsp: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  input/serio/hp_sdc.c: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  mfd: remove IRQF_SAMPLE_RANDOM which is now a no-op\n  ...\n"
    },
    {
      "commit": "941c8726e4e737e74d418ccec3d8e7b946a65541",
      "tree": "0c3585d8bc16fb6fa7c0efd9db9d32da1ea7bd6e",
      "parents": [
        "8762541f067d371320731510669e27f5cc40af38",
        "1da9b6b43e31a5d88a82cc70b8f57090c9dd2be8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:59:55 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:59:55 2012 -0700"
      },
      "message": "Merge tag \u0027rdma-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband\n\nPull final RDMA changes from Roland Dreier:\n - Fix IPoIB to stop using unsafe linkage between networking neighbour\n   layer and private path database.\n - Small fixes for bugs found by Fengguang Wu\u0027s automated builds.\n\n* tag \u0027rdma-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:\n  IPoIB: Use a private hash table for path lookup in xmit path\n  IB/qib: Fix size of cc_supported_table_entries\n  RDMA/ucma: Convert open-coded equivalent to memdup_user()\n  RDMA/ocrdma: Fix check of GSI CQs\n  RDMA/cma: Use PTR_RET rather than if (IS_ERR(...)) + PTR_ERR\n"
    },
    {
      "commit": "8762541f067d371320731510669e27f5cc40af38",
      "tree": "fa2890094858614a947ba70612854acde9888940",
      "parents": [
        "6dbb35b0a74b44b2a48a5373d48074c5aa69fdf5",
        "adfe1560de1c696324554fba70c92f2d7c947ff7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:47:44 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:47:44 2012 -0700"
      },
      "message": "Merge branch \u0027v4l_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media\n\nPull second set of media updates from Mauro Carvalho Chehab:\n\n - radio API: add support to work with radio frequency bands\n\n - new AM/FM radio drivers: radio-shark, radio-shark2\n\n - new Remote Controller USB driver: iguanair\n\n - conversion of several drivers to the v4l2 core control framework\n\n - new board additions at existing drivers\n\n - the remaining (and vast majority of the patches) are due to\n   drivers/DocBook fixes/cleanups.\n\n* \u0027v4l_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (154 commits)\n  [media] radio-tea5777: use library for 64bits div\n  [media] tlg2300: Declare MODULE_FIRMWARE usage\n  [media] lgs8gxx: Declare MODULE_FIRMWARE usage\n  [media] xc5000: Add MODULE_FIRMWARE statements\n  [media] s2255drv: Add MODULE_FIRMWARE statement\n  [media] dib8000: move dereference after check for NULL\n  [media] Documentation: Update cardlists\n  [media] bttv: add support for Aposonic W-DVR\n  [media] cx25821: Remove bad strcpy to read-only char*\n  [media] pms.c: remove duplicated include\n  [media] smiapp-core.c: remove duplicated include\n  [media] via-camera: pass correct format settings to sensor\n  [media] rtl2832.c: minor cleanup\n  [media] Add support for the IguanaWorks USB IR Transceiver\n  [media] Minor cleanups for MCE USB\n  [media] drivers/media/dvb/siano/smscoreapi.c: use list_for_each_entry\n  [media] Use a named union in struct v4l2_ioctl_info\n  [media] mceusb: Add Twisted Melon USB IDs\n  [media] staging/media/solo6x10: use module_pci_driver macro\n  [media] staging/media/dt3155v4l: use module_pci_driver macro\n  ...\n\nConflicts:\n\tDocumentation/feature-removal-schedule.txt\n"
    },
    {
      "commit": "6dbb35b0a74b44b2a48a5373d48074c5aa69fdf5",
      "tree": "4afb5eec521659e19c9d2343c2431054a082eb06",
      "parents": [
        "fd37ce34bd512f2b1a503f82abf8768da556a955",
        "ad0fcd4eb68059de02e1766948263c71b8a5b1dc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:45:44 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:45:44 2012 -0700"
      },
      "message": "Merge tag \u0027nfs-for-3.6-2\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs\n\nPull second wave of NFS client updates from Trond Myklebust:\n\n - Patches from Bryan to allow splitting of the NFSv2/v3/v4 code into\n   separate modules.\n\n - Fix Oopses in the NFSv4 idmapper\n\n - Fix a deadlock whereby rpciod tries to allocate a new socket and ends\n   up recursing into the NFS code due to memory reclaim.\n\n - Increase the number of permitted callback connections.\n\n* tag \u0027nfs-for-3.6-2\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs:\n  nfs: explicitly reject LOCK_MAND flock() requests\n  nfs: increase number of permitted callback connections.\n  SUNRPC: return negative value in case rpcbind client creation error\n  NFS: Convert v4 into a module\n  NFS: Convert v3 into a module\n  NFS: Convert v2 into a module\n  NFS: Keep module parameters in the generic NFS client\n  NFS: Split out remaining NFS v4 inode functions\n  NFS: Pass super operations and xattr handlers in the nfs_subversion\n  NFS: Only initialize the ACL client in the v3 case\n  NFS: Create a try_mount rpc op\n  NFS: Remove the NFS v4 xdev mount function\n  NFS: Add version registering framework\n  NFS: Fix a number of bugs in the idmapper\n  nfs: skip commit in releasepage if we\u0027re freeing memory for fs-related reasons\n  sunrpc: clarify comments on rpc_make_runnable\n  pnfsblock: bail out partial page IO\n"
    },
    {
      "commit": "fd37ce34bd512f2b1a503f82abf8768da556a955",
      "tree": "557ff43ff5291d1704527e31293633fbc2f956d5",
      "parents": [
        "4b24ff71108164e047cf2c95990b77651163e315",
        "caacf05e5ad1abf0a2864863da4e33024bc68ec6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:43:13 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:43:13 2012 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n\nPull networking update from David S. Miller:\n \"I think Eric Dumazet and I have dealt with all of the known routing\n  cache removal fallout.  Some other minor fixes all around.\n\n  1) Fix RCU of cached routes, particular of output routes which require\n     liberation via call_rcu() instead of call_rcu_bh().  From Eric\n     Dumazet.\n\n  2) Make sure we purge net device references in cached routes properly.\n\n  3) TG3 driver bug fixes from Michael Chan.\n\n  4) Fix reported \u0027expires\u0027 value in ipv6 routes, from Li Wei.\n\n  5) TUN driver ioctl leaks kernel bytes to userspace, from Mathias\n     Krause.\"\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (22 commits)\n  ipv4: Properly purge netdev references on uncached routes.\n  ipv4: Cache routes in nexthop exception entries.\n  ipv4: percpu nh_rth_output cache\n  ipv4: Restore old dst_free() behavior.\n  bridge: make port attributes const\n  ipv4: remove rt_cache_rebuild_count\n  net: ipv4: fix RCU races on dst refcounts\n  net: TCP early demux cleanup\n  tun: Fix formatting.\n  net/tun: fix ioctl() based info leaks\n  tg3: Update version to 3.124\n  tg3: Fix race condition in tg3_get_stats64()\n  tg3: Add New 5719 Read DMA workaround\n  tg3: Fix Read DMA workaround for 5719 A0.\n  tg3: Request APE_LOCK_PHY before PHY access\n  ipv6: fix incorrect route \u0027expires\u0027 value passed to userspace\n  mISDN: Bugfix only few bytes are transfered on a connection\n  seeq: use PTR_RET at init_module of driver\n  bnx2x: remove cast around the kmalloc in bnx2x_prev_mark_path\n  ipv4: clean up put_child\n  ...\n"
    },
    {
      "commit": "437ea90cc3afdca5229b41c6b1d38c4842756cb9",
      "tree": "d9d5640aa4dfdc232c837574ae3ecd0880e8adf5",
      "parents": [
        "7ead55119ba58523c31f52365b5eb33f3bb34b3e"
      ],
      "author": {
        "name": "Devendra Naga",
        "email": "devendra.aaru@gmail.com",
        "time": "Tue Jul 31 16:46:24 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:50 2012 -0700"
      },
      "message": "rtc/rtc-88pm80x: remove unneed devm_kfree\n\ndevm_kzalloc() doesn\u0027t need a matching devm_kfree(), the freeing mechanism\nwill trigger when driver unloads.\n\nSigned-off-by: Devendra Naga \u003cdevendra.aaru@gmail.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: Ashish Jangam \u003cashish.jangam@kpitcummins.com\u003e\nCc: David Dajun Chen \u003cdchen@diasemi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ead55119ba58523c31f52365b5eb33f3bb34b3e",
      "tree": "d5d6c71280fdb89b0423b5372b000d3650c2ccba",
      "parents": [
        "d833352a4338dc31295ed832a30c9ccff5c7a183"
      ],
      "author": {
        "name": "Devendra Naga",
        "email": "devendra.aaru@gmail.com",
        "time": "Tue Jul 31 16:46:22 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:50 2012 -0700"
      },
      "message": "rtc/rtc-88pm80x: assign ret only when rtc_register_driver fails\n\nAt the probe we are assigning ret to return value of PTR_ERR right after\nthe rtc_register_drive()r, as we would have done it in the if\n(IS_ERR(ptr)) check, since the function fails and goes inside that case\n\nSigned-off-by: Devendra Naga \u003cdevendra.aaru@gmail.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: Ashish Jangam \u003cashish.jangam@kpitcummins.com\u003e\nCc: David Dajun Chen \u003cdchen@diasemi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d833352a4338dc31295ed832a30c9ccff5c7a183",
      "tree": "17d0da8ace1daaabe465304bca861c38e85216b5",
      "parents": [
        "09c231cb8bfdc35e7d896850d34440b8553b084f"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:46:20 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:50 2012 -0700"
      },
      "message": "mm: hugetlbfs: close race during teardown of hugetlbfs shared page tables\n\nIf a process creates a large hugetlbfs mapping that is eligible for page\ntable sharing and forks heavily with children some of whom fault and\nothers which destroy the mapping then it is possible for page tables to\nget corrupted.  Some teardowns of the mapping encounter a \"bad pmd\" and\noutput a message to the kernel log.  The final teardown will trigger a\nBUG_ON in mm/filemap.c.\n\nThis was reproduced in 3.4 but is known to have existed for a long time\nand goes back at least as far as 2.6.37.  It was probably was introduced\nin 2.6.20 by [39dde65c: shared page table for hugetlb page].  The messages\nlook like this;\n\n[  ..........] Lots of bad pmd messages followed by this\n[  127.164256] mm/memory.c:391: bad pmd ffff880412e04fe8(80000003de4000e7).\n[  127.164257] mm/memory.c:391: bad pmd ffff880412e04ff0(80000003de6000e7).\n[  127.164258] mm/memory.c:391: bad pmd ffff880412e04ff8(80000003de0000e7).\n[  127.186778] ------------[ cut here ]------------\n[  127.186781] kernel BUG at mm/filemap.c:134!\n[  127.186782] invalid opcode: 0000 [#1] SMP\n[  127.186783] CPU 7\n[  127.186784] Modules linked in: af_packet cpufreq_conservative cpufreq_userspace cpufreq_powersave acpi_cpufreq mperf ext3 jbd dm_mod coretemp crc32c_intel usb_storage ghash_clmulni_intel aesni_intel i2c_i801 r8169 mii uas sr_mod cdrom sg iTCO_wdt iTCO_vendor_support shpchp serio_raw cryptd aes_x86_64 e1000e pci_hotplug dcdbas aes_generic container microcode ext4 mbcache jbd2 crc16 sd_mod crc_t10dif i915 drm_kms_helper drm i2c_algo_bit ehci_hcd ahci libahci usbcore rtc_cmos usb_common button i2c_core intel_agp video intel_gtt fan processor thermal thermal_sys hwmon ata_generic pata_atiixp libata scsi_mod\n[  127.186801]\n[  127.186802] Pid: 9017, comm: hugetlbfs-test Not tainted 3.4.0-autobuild #53 Dell Inc. OptiPlex 990/06D7TR\n[  127.186804] RIP: 0010:[\u003cffffffff810ed6ce\u003e]  [\u003cffffffff810ed6ce\u003e] __delete_from_page_cache+0x15e/0x160\n[  127.186809] RSP: 0000:ffff8804144b5c08  EFLAGS: 00010002\n[  127.186810] RAX: 0000000000000001 RBX: ffffea000a5c9000 RCX: 00000000ffffffc0\n[  127.186811] RDX: 0000000000000000 RSI: 0000000000000009 RDI: ffff88042dfdad00\n[  127.186812] RBP: ffff8804144b5c18 R08: 0000000000000009 R09: 0000000000000003\n[  127.186813] R10: 0000000000000000 R11: 000000000000002d R12: ffff880412ff83d8\n[  127.186814] R13: ffff880412ff83d8 R14: 0000000000000000 R15: ffff880412ff83d8\n[  127.186815] FS:  00007fe18ed2c700(0000) GS:ffff88042dce0000(0000) knlGS:0000000000000000\n[  127.186816] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\n[  127.186817] CR2: 00007fe340000503 CR3: 0000000417a14000 CR4: 00000000000407e0\n[  127.186818] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n[  127.186819] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n[  127.186820] Process hugetlbfs-test (pid: 9017, threadinfo ffff8804144b4000, task ffff880417f803c0)\n[  127.186821] Stack:\n[  127.186822]  ffffea000a5c9000 0000000000000000 ffff8804144b5c48 ffffffff810ed83b\n[  127.186824]  ffff8804144b5c48 000000000000138a 0000000000001387 ffff8804144b5c98\n[  127.186825]  ffff8804144b5d48 ffffffff811bc925 ffff8804144b5cb8 0000000000000000\n[  127.186827] Call Trace:\n[  127.186829]  [\u003cffffffff810ed83b\u003e] delete_from_page_cache+0x3b/0x80\n[  127.186832]  [\u003cffffffff811bc925\u003e] truncate_hugepages+0x115/0x220\n[  127.186834]  [\u003cffffffff811bca43\u003e] hugetlbfs_evict_inode+0x13/0x30\n[  127.186837]  [\u003cffffffff811655c7\u003e] evict+0xa7/0x1b0\n[  127.186839]  [\u003cffffffff811657a3\u003e] iput_final+0xd3/0x1f0\n[  127.186840]  [\u003cffffffff811658f9\u003e] iput+0x39/0x50\n[  127.186842]  [\u003cffffffff81162708\u003e] d_kill+0xf8/0x130\n[  127.186843]  [\u003cffffffff81162812\u003e] dput+0xd2/0x1a0\n[  127.186845]  [\u003cffffffff8114e2d0\u003e] __fput+0x170/0x230\n[  127.186848]  [\u003cffffffff81236e0e\u003e] ? rb_erase+0xce/0x150\n[  127.186849]  [\u003cffffffff8114e3ad\u003e] fput+0x1d/0x30\n[  127.186851]  [\u003cffffffff81117db7\u003e] remove_vma+0x37/0x80\n[  127.186853]  [\u003cffffffff81119182\u003e] do_munmap+0x2d2/0x360\n[  127.186855]  [\u003cffffffff811cc639\u003e] sys_shmdt+0xc9/0x170\n[  127.186857]  [\u003cffffffff81410a39\u003e] system_call_fastpath+0x16/0x1b\n[  127.186858] Code: 0f 1f 44 00 00 48 8b 43 08 48 8b 00 48 8b 40 28 8b b0 40 03 00 00 85 f6 0f 88 df fe ff ff 48 89 df e8 e7 cb 05 00 e9 d2 fe ff ff \u003c0f\u003e 0b 55 83 e2 fd 48 89 e5 48 83 ec 30 48 89 5d d8 4c 89 65 e0\n[  127.186868] RIP  [\u003cffffffff810ed6ce\u003e] __delete_from_page_cache+0x15e/0x160\n[  127.186870]  RSP \u003cffff8804144b5c08\u003e\n[  127.186871] ---[ end trace 7cbac5d1db69f426 ]---\n\nThe bug is a race and not always easy to reproduce.  To reproduce it I was\ndoing the following on a single socket I7-based machine with 16G of RAM.\n\n$ hugeadm --pool-pages-max DEFAULT:13G\n$ echo $((18*1048576*1024)) \u003e /proc/sys/kernel/shmmax\n$ echo $((18*1048576*1024)) \u003e /proc/sys/kernel/shmall\n$ for i in `seq 1 9000`; do ./hugetlbfs-test; done\n\nOn my particular machine, it usually triggers within 10 minutes but\nenabling debug options can change the timing such that it never hits.\nOnce the bug is triggered, the machine is in trouble and needs to be\nrebooted.  The machine will respond but processes accessing proc like \"ps\naux\" will hang due to the BUG_ON.  shutdown will also hang and needs a\nhard reset or a sysrq-b.\n\nThe basic problem is a race between page table sharing and teardown.  For\nthe most part page table sharing depends on i_mmap_mutex.  In some cases,\nit is also taking the mm-\u003epage_table_lock for the PTE updates but with\nshared page tables, it is the i_mmap_mutex that is more important.\n\nUnfortunately it appears to be also insufficient. Consider the following\nsituation\n\nProcess A\t\t\t\t\tProcess B\n---------\t\t\t\t\t---------\nhugetlb_fault\t\t\t\t\tshmdt\n  \t\t\t\t\t\tLockWrite(mmap_sem)\n    \t\t\t\t\t\t  do_munmap\n\t\t\t\t\t\t    unmap_region\n\t\t\t\t\t\t      unmap_vmas\n\t\t\t\t\t\t        unmap_single_vma\n\t\t\t\t\t\t          unmap_hugepage_range\n      \t\t\t\t\t\t            Lock(i_mmap_mutex)\n\t\t\t\t\t\t\t    Lock(mm-\u003epage_table_lock)\n\t\t\t\t\t\t\t    huge_pmd_unshare/unmap tables \u003c--- (1)\n\t\t\t\t\t\t\t    Unlock(mm-\u003epage_table_lock)\n      \t\t\t\t\t\t            Unlock(i_mmap_mutex)\n  huge_pte_alloc\t\t\t\t      ...\n    Lock(i_mmap_mutex)\t\t\t\t      ...\n    vma_prio_walk, find svma, spte\t\t      ...\n    Lock(mm-\u003epage_table_lock)\t\t\t      ...\n    share spte\t\t\t\t\t      ...\n    Unlock(mm-\u003epage_table_lock)\t\t\t      ...\n    Unlock(i_mmap_mutex)\t\t\t      ...\n  hugetlb_no_page\t\t\t\t\t\t\t\t\t  \u003c--- (2)\n\t\t\t\t\t\t      free_pgtables\n\t\t\t\t\t\t        unlink_file_vma\n\t\t\t\t\t\t\thugetlb_free_pgd_range\n\t\t\t\t\t\t    remove_vma_list\n\nIn this scenario, it is possible for Process A to share page tables with\nProcess B that is trying to tear them down.  The i_mmap_mutex on its own\ndoes not prevent Process A walking Process B\u0027s page tables.  At (1) above,\nthe page tables are not shared yet so it unmaps the PMDs.  Process A sets\nup page table sharing and at (2) faults a new entry.  Process B then trips\nup on it in free_pgtables.\n\nThis patch fixes the problem by adding a new function\n__unmap_hugepage_range_final that is only called when the VMA is about to\nbe destroyed.  This function clears VM_MAYSHARE during\nunmap_hugepage_range() under the i_mmap_mutex.  This makes the VMA\nineligible for sharing and avoids the race.  Superficially this looks like\nit would then be vunerable to truncate and madvise issues but hugetlbfs\nhas its own truncate handlers so does not use unmap_mapping_range() and\ndoes not support madvise(DONTNEED).\n\nThis should be treated as a -stable candidate if it is merged.\n\nTest program is as follows. The test case was mostly written by Michal\nHocko with a few minor changes to reproduce this bug.\n\n\u003d\u003d\u003d\u003d CUT HERE \u003d\u003d\u003d\u003d\n\nstatic size_t huge_page_size \u003d (2UL \u003c\u003c 20);\nstatic size_t nr_huge_page_A \u003d 512;\nstatic size_t nr_huge_page_B \u003d 5632;\n\nunsigned int get_random(unsigned int max)\n{\n\tstruct timeval tv;\n\n\tgettimeofday(\u0026tv, NULL);\n\tsrandom(tv.tv_usec);\n\treturn random() % max;\n}\n\nstatic void play(void *addr, size_t size)\n{\n\tunsigned char *start \u003d addr,\n\t\t      *end \u003d start + size,\n\t\t      *a;\n\tstart +\u003d get_random(size/2);\n\n\t/* we could itterate on huge pages but let\u0027s give it more time. */\n\tfor (a \u003d start; a \u003c end; a +\u003d 4096)\n\t\t*a \u003d 0;\n}\n\nint main(int argc, char **argv)\n{\n\tkey_t key \u003d IPC_PRIVATE;\n\tsize_t sizeA \u003d nr_huge_page_A * huge_page_size;\n\tsize_t sizeB \u003d nr_huge_page_B * huge_page_size;\n\tint shmidA, shmidB;\n\tvoid *addrA \u003d NULL, *addrB \u003d NULL;\n\tint nr_children \u003d 300, n \u003d 0;\n\n\tif ((shmidA \u003d shmget(key, sizeA, IPC_CREAT|SHM_HUGETLB|0660)) \u003d\u003d -1) {\n\t\tperror(\"shmget:\");\n\t\treturn 1;\n\t}\n\n\tif ((addrA \u003d shmat(shmidA, addrA, SHM_R|SHM_W)) \u003d\u003d (void *)-1UL) {\n\t\tperror(\"shmat\");\n\t\treturn 1;\n\t}\n\tif ((shmidB \u003d shmget(key, sizeB, IPC_CREAT|SHM_HUGETLB|0660)) \u003d\u003d -1) {\n\t\tperror(\"shmget:\");\n\t\treturn 1;\n\t}\n\n\tif ((addrB \u003d shmat(shmidB, addrB, SHM_R|SHM_W)) \u003d\u003d (void *)-1UL) {\n\t\tperror(\"shmat\");\n\t\treturn 1;\n\t}\n\nfork_child:\n\tswitch(fork()) {\n\t\tcase 0:\n\t\t\tswitch (n%3) {\n\t\t\tcase 0:\n\t\t\t\tplay(addrA, sizeA);\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tplay(addrB, sizeB);\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase -1:\n\t\t\tperror(\"fork:\");\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tif (++n \u003c nr_children)\n\t\t\t\tgoto fork_child;\n\t\t\tplay(addrA, sizeA);\n\t\t\tbreak;\n\t}\n\tshmdt(addrA);\n\tshmdt(addrB);\n\tdo {\n\t\twait(NULL);\n\t} while (--n \u003e 0);\n\tshmctl(shmidA, IPC_RMID, NULL);\n\tshmctl(shmidB, IPC_RMID, NULL);\n\treturn 0;\n}\n\n[akpm@linux-foundation.org: name the declaration\u0027s args, fix CONFIG_HUGETLBFS\u003dn build]\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: \u003cstable@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": "09c231cb8bfdc35e7d896850d34440b8553b084f",
      "tree": "f9a9dcc93c875253e0d879329b1f955b1a08638f",
      "parents": [
        "6527af5d1bea219d64095a5e30c1b1e0868aae16"
      ],
      "author": {
        "name": "Nathan Zimmer",
        "email": "nzimmer@sgi.com",
        "time": "Tue Jul 31 16:46:17 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:50 2012 -0700"
      },
      "message": "tmpfs: distribute interleave better across nodes\n\nWhen tmpfs has the interleave memory policy, it always starts allocating\nfor each file from node 0 at offset 0.  When there are many small files,\nthe lower nodes fill up disproportionately.\n\nThis patch spreads out node usage by starting files at nodes other than 0,\nby using the inode number to bias the starting node for interleave.\n\nSigned-off-by: Nathan Zimmer \u003cnzimmer@sgi.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Nick Piggin \u003cnpiggin@gmail.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6527af5d1bea219d64095a5e30c1b1e0868aae16",
      "tree": "99f36cf0b3744e5d7cdaf52c22a3e9897e17f7bb",
      "parents": [
        "88fdf75d1bb51d85ba00c466391770056d44bc03"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Tue Jul 31 16:46:16 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:50 2012 -0700"
      },
      "message": "mm: remove redundant initialization\n\npg_data_t is zeroed before reaching free_area_init_core(), so remove the\nnow unnecessary initializations.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "88fdf75d1bb51d85ba00c466391770056d44bc03",
      "tree": "0b4f6d9b9c0fb39fd03199c6b19ae626608b2fbb",
      "parents": [
        "93180cec0064d072a984f91c429c5e6bcc816976"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Tue Jul 31 16:46:14 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:50 2012 -0700"
      },
      "message": "mm: warn if pg_data_t isn\u0027t initialized with zero\n\nWarn if memory-hotplug/boot code doesn\u0027t initialize pg_data_t with zero\nwhen it is allocated.  Arch code and memory hotplug already initiailize\npg_data_t.  So this warning should never happen.  I select fields randomly\nnear the beginning, middle and end of pg_data_t for checking.\n\nThis patch isn\u0027t for performance but for removing initialization code\nwhich is necessary to add whenever we adds new field to pg_data_t or zone.\n\nFirstly, Andrew suggested clearing out of pg_data_t in MM core part but\nTejun doesn\u0027t like it because in the future, some archs can initialize\nsome fields in arch code and pass them into general MM part so blindly\nclearing it out in mm core part would be very annoying.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "93180cec0064d072a984f91c429c5e6bcc816976",
      "tree": "3afab9e80f4df5fac7d222a3c60fc1d626a3a8e6",
      "parents": [
        "69980e31754ef23307d51372e61bf7c2584f8a4b"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Tue Jul 31 16:46:11 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:49 2012 -0700"
      },
      "message": "mips: zero out pg_data_t when it\u0027s allocated\n\nThis patch is preparation for the next patch which removes the zeroing of\nthe pg_data_t in core MM.  All archs except MIPS already do this.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Tejun Heo \u003ctj@kernel.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": "69980e31754ef23307d51372e61bf7c2584f8a4b",
      "tree": "f36caa9cfcd5d5e118e53e6f6fdb48b1efc57e1c",
      "parents": [
        "c1c9518331969f97ea403bac66f0fd4a85d204d5"
      ],
      "author": {
        "name": "Tim Chen",
        "email": "tim.c.chen@linux.intel.com",
        "time": "Tue Jul 31 16:46:08 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:49 2012 -0700"
      },
      "message": "memcg: gix memory accounting scalability in shrink_page_list\n\nI noticed in a multi-process parallel files reading benchmark I ran on a 8\nsocket machine, throughput slowed down by a factor of 8 when I ran the\nbenchmark within a cgroup container.  I traced the problem to the\nfollowing code path (see below) when we are trying to reclaim memory from\nfile cache.  The res_counter_uncharge function is called on every page\nthat\u0027s reclaimed and created heavy lock contention.  The patch below\nallows the reclaimed pages to be uncharged from the resource counter in\nbatch and recovered the regression.\n\nTim\n\n     40.67%           usemem  [kernel.kallsyms]                   [k] _raw_spin_lock\n                      |\n                      --- _raw_spin_lock\n                         |\n                         |--92.61%-- res_counter_uncharge\n                         |          |\n                         |          |--100.00%-- __mem_cgroup_uncharge_common\n                         |          |          |\n                         |          |          |--100.00%-- mem_cgroup_uncharge_cache_page\n                         |          |          |          __remove_mapping\n                         |          |          |          shrink_page_list\n                         |          |          |          shrink_inactive_list\n                         |          |          |          shrink_mem_cgroup_zone\n                         |          |          |          shrink_zone\n                         |          |          |          do_try_to_free_pages\n                         |          |          |          try_to_free_pages\n                         |          |          |          __alloc_pages_nodemask\n                         |          |          |          alloc_pages_current\n\nSigned-off-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Michal Hocko \u003cmhocko@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": "c1c9518331969f97ea403bac66f0fd4a85d204d5",
      "tree": "9a3122ec4600b94784e86a99aec61a1e93a27da5",
      "parents": [
        "db36a46113e101a8aa2d6ede41e78f2eaabed3f1"
      ],
      "author": {
        "name": "Gavin Shan",
        "email": "shangw@linux.vnet.ibm.com",
        "time": "Tue Jul 31 16:46:06 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:49 2012 -0700"
      },
      "message": "mm/sparse: remove index_init_lock\n\nsparse_index_init() uses the index_init_lock spinlock to protect root\nmem_section assignment.  The lock is not necessary anymore because the\nfunction is called only during boot (during paging init which is executed\nonly from a single CPU) and from the hotplug code (by add_memory() via\narch_add_memory()) which uses mem_hotplug_mutex.\n\nThe lock was introduced by 28ae55c9 (\"sparsemem extreme: hotplug\npreparation\") and sparse_index_init() was used only during boot at that\ntime.\n\nLater when the hotplug code (and add_memory()) was introduced there was no\nsynchronization so it was possible to online more sections from the same\nroot probably (though I am not 100% sure about that).  The first\nsynchronization has been added by 6ad696d2 (\"mm: allow memory hotplug and\nhibernation in the same kernel\") which was later replaced by the\nmem_hotplug_mutex - 20d6c96b (\"mem-hotplug: introduce\n{un}lock_memory_hotplug()\").\n\nLet\u0027s remove the lock as it is not needed and it makes the code more\nconfusing.\n\n[mhocko@suse.cz: changelog]\nSigned-off-by: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Michal Hocko \u003cmhocko@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": "db36a46113e101a8aa2d6ede41e78f2eaabed3f1",
      "tree": "bb438589b620dbdca16bf5918468cd56c5b19f42",
      "parents": [
        "5b760e64a64c8940cdccd0ba6fce19a9bd010d20"
      ],
      "author": {
        "name": "Gavin Shan",
        "email": "shangw@linux.vnet.ibm.com",
        "time": "Tue Jul 31 16:46:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:49 2012 -0700"
      },
      "message": "mm/sparse: more checks on mem_section number\n\n__section_nr() was implemented to retrieve the corresponding memory\nsection number according to its descriptor.  It\u0027s possible that the\nspecified memory section descriptor doesn\u0027t exist in the global array.  So\nadd more checking on that and report an error for a wrong case.\n\nSigned-off-by: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Michal Hocko \u003cmhocko@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": "5b760e64a64c8940cdccd0ba6fce19a9bd010d20",
      "tree": "b4765cd744dd5710ba6cd4d784185247dc317cef",
      "parents": [
        "b214514592d2dcb0b9d14ee8dd14f3699e3b0a84"
      ],
      "author": {
        "name": "Gavin Shan",
        "email": "shangw@linux.vnet.ibm.com",
        "time": "Tue Jul 31 16:46:02 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:49 2012 -0700"
      },
      "message": "mm/sparse: optimize sparse_index_alloc\n\nWith CONFIG_SPARSEMEM_EXTREME, the two levels of memory section\ndescriptors are allocated from slab or bootmem.  When allocating from\nslab, let slab/bootmem allocator clear the memory chunk.  We needn\u0027t clear\nit explicitly.\n\nSigned-off-by: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-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": "b214514592d2dcb0b9d14ee8dd14f3699e3b0a84",
      "tree": "317258b7f9229e56a26373c81551d24e7b83142f",
      "parents": [
        "c3b94f44fcb0725471ecebb701c077a0ed67bd07"
      ],
      "author": {
        "name": "Wanpeng Li",
        "email": "liwanp@linux.vnet.ibm.com",
        "time": "Tue Jul 31 16:46:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:49 2012 -0700"
      },
      "message": "memcg: add mem_cgroup_from_css() helper\n\nAdd a mem_cgroup_from_css() helper to replace open-coded invokations of\ncontainer_of().  To clarify the code and to add a little more type safety.\n\n[akpm@linux-foundation.org: fix extensive breakage]\nSigned-off-by: Wanpeng Li \u003cliwanp@linux.vnet.ibm.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nCc: Wanpeng Li \u003cliwanp@linux.vnet.ibm.com\u003e\nCc: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Michal Hocko \u003cmhocko@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": "c3b94f44fcb0725471ecebb701c077a0ed67bd07",
      "tree": "526dd574ec3d35bc39a4a05759a8f4c33f91abb3",
      "parents": [
        "e62e384e9da8d9a0c599795464a7e76fd490931c"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue Jul 31 16:45:59 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:49 2012 -0700"
      },
      "message": "memcg: further prevent OOM with too many dirty pages\n\nThe may_enter_fs test turns out to be too restrictive: though I saw no\nproblem with it when testing on 3.5-rc6, it very soon OOMed when I tested\non 3.5-rc6-mm1.  I don\u0027t know what the difference there is, perhaps I just\nslightly changed the way I started off the testing: dd if\u003d/dev/zero\nof\u003d/mnt/temp bs\u003d1M count\u003d1024; rm -f /mnt/temp; sync repeatedly, in 20M\nmemory.limit_in_bytes cgroup to ext4 on USB stick.\n\next4 (and gfs2 and xfs) turn out to allocate new pages for writing with\nAOP_FLAG_NOFS: that seems a little worrying, and it\u0027s unclear to me why\nthe transaction needs to be started even before allocating pagecache\nmemory.  But it may not be worth worrying about these days: if direct\nreclaim avoids FS writeback, does __GFP_FS now mean anything?\n\nAnyway, we insisted on the may_enter_fs test to avoid hangs with the loop\ndevice; but since that also masks off __GFP_IO, we can test for __GFP_IO\ndirectly, ignoring may_enter_fs and __GFP_FS.\n\nBut even so, the test still OOMs sometimes: when originally testing on\n3.5-rc6, it OOMed about one time in five or ten; when testing just now on\n3.5-rc6-mm1, it OOMed on the first iteration.\n\nThis residual problem comes from an accumulation of pages under ordinary\nwriteback, not marked PageReclaim, so rightly not causing the memcg check\nto wait on their writeback: these too can prevent shrink_page_list() from\nfreeing any pages, so many times that memcg reclaim fails and OOMs.\n\nDeal with these in the same way as direct reclaim now deals with dirty FS\npages: mark them PageReclaim.  It is appropriate to rotate these to tail\nof list when writepage completes, but more importantly, the PageReclaim\nflag makes memcg reclaim wait on them if encountered again.  Increment\nNR_VMSCAN_IMMEDIATE?  That\u0027s arguable: I chose not.\n\nSetting PageReclaim here may occasionally race with end_page_writeback()\nclearing it: lru_deactivate_fn() already faced the same race, and\ncorrectly concluded that the window is small and the issue non-critical.\n\nWith these changes, the test runs indefinitely without OOMing on ext4,\next3 and ext2: I\u0027ll move on to test with other filesystems later.\n\nTrivia: invert conditions for a clearer block without an else, and goto\nkeep_locked to do the unlock_page.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujtisu.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: \u003cstable@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": "e62e384e9da8d9a0c599795464a7e76fd490931c",
      "tree": "07d92bd50f42e5f919ddfb03b185a270daa2e1b1",
      "parents": [
        "3ad3d901bbcfb15a5e4690e55350db0899095a68"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue Jul 31 16:45:55 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:49 2012 -0700"
      },
      "message": "memcg: prevent OOM with too many dirty pages\n\nThe current implementation of dirty pages throttling is not memcg aware\nwhich makes it easy to have memcg LRUs full of dirty pages.  Without\nthrottling, these LRUs can be scanned faster than the rate of writeback,\nleading to memcg OOM conditions when the hard limit is small.\n\nThis patch fixes the problem by throttling the allocating process\n(possibly a writer) during the hard limit reclaim by waiting on\nPageReclaim pages.  We are waiting only for PageReclaim pages because\nthose are the pages that made one full round over LRU and that means that\nthe writeback is much slower than scanning.\n\nThe solution is far from being ideal - long term solution is memcg aware\ndirty throttling - but it is meant to be a band aid until we have a real\nfix.  We are seeing this happening during nightly backups which are placed\ninto containers to prevent from eviction of the real working set.\n\nThe change affects only memcg reclaim and only when we encounter\nPageReclaim pages which is a signal that the reclaim doesn\u0027t catch up on\nwith the writers so somebody should be throttled.  This could be\npotentially unfair because it could be somebody else from the group who\ngets throttled on behalf of the writer but as writers need to allocate as\nwell and they allocate in higher rate the probability that only innocent\nprocesses would be penalized is not that high.\n\nI have tested this change by a simple dd copying /dev/zero to tmpfs or\next3 running under small memcg (1G copy under 5M, 60M, 300M and 2G\ncontainers) and dd got killed by OOM killer every time.  With the patch I\ncould run the dd with the same size under 5M controller without any OOM.\nThe issue is more visible with slower devices for output.\n\n* With the patch\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n* tmpfs size\u003d2G\n---------------\n$ vim cgroup_cache_oom_test.sh\n$ ./cgroup_cache_oom_test.sh 5M\nusing Limit 5M for group\n1000+0 records in\n1000+0 records out\n1048576000 bytes (1.0 GB) copied, 30.4049 s, 34.5 MB/s\n$ ./cgroup_cache_oom_test.sh 60M\nusing Limit 60M for group\n1000+0 records in\n1000+0 records out\n1048576000 bytes (1.0 GB) copied, 31.4561 s, 33.3 MB/s\n$ ./cgroup_cache_oom_test.sh 300M\nusing Limit 300M for group\n1000+0 records in\n1000+0 records out\n1048576000 bytes (1.0 GB) copied, 20.4618 s, 51.2 MB/s\n$ ./cgroup_cache_oom_test.sh 2G\nusing Limit 2G for group\n1000+0 records in\n1000+0 records out\n1048576000 bytes (1.0 GB) copied, 1.42172 s, 738 MB/s\n\n* ext3\n------\n$ ./cgroup_cache_oom_test.sh 5M\nusing Limit 5M for group\n1000+0 records in\n1000+0 records out\n1048576000 bytes (1.0 GB) copied, 27.9547 s, 37.5 MB/s\n$ ./cgroup_cache_oom_test.sh 60M\nusing Limit 60M for group\n1000+0 records in\n1000+0 records out\n1048576000 bytes (1.0 GB) copied, 30.3221 s, 34.6 MB/s\n$ ./cgroup_cache_oom_test.sh 300M\nusing Limit 300M for group\n1000+0 records in\n1000+0 records out\n1048576000 bytes (1.0 GB) copied, 24.5764 s, 42.7 MB/s\n$ ./cgroup_cache_oom_test.sh 2G\nusing Limit 2G for group\n1000+0 records in\n1000+0 records out\n1048576000 bytes (1.0 GB) copied, 3.35828 s, 312 MB/s\n\n* Without the patch\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n* tmpfs size\u003d2G\n---------------\n$ ./cgroup_cache_oom_test.sh 5M\nusing Limit 5M for group\n./cgroup_cache_oom_test.sh: line 46:  4668 Killed                  dd if\u003d/dev/zero of\u003d$OUT/zero bs\u003d1M count\u003d$count\n$ ./cgroup_cache_oom_test.sh 60M\nusing Limit 60M for group\n1000+0 records in\n1000+0 records out\n1048576000 bytes (1.0 GB) copied, 25.4989 s, 41.1 MB/s\n$ ./cgroup_cache_oom_test.sh 300M\nusing Limit 300M for group\n1000+0 records in\n1000+0 records out\n1048576000 bytes (1.0 GB) copied, 24.3928 s, 43.0 MB/s\n$ ./cgroup_cache_oom_test.sh 2G\nusing Limit 2G for group\n1000+0 records in\n1000+0 records out\n1048576000 bytes (1.0 GB) copied, 1.49797 s, 700 MB/s\n\n* ext3\n------\n$ ./cgroup_cache_oom_test.sh 5M\nusing Limit 5M for group\n./cgroup_cache_oom_test.sh: line 46:  4689 Killed                  dd if\u003d/dev/zero of\u003d$OUT/zero bs\u003d1M count\u003d$count\n$ ./cgroup_cache_oom_test.sh 60M\nusing Limit 60M for group\n./cgroup_cache_oom_test.sh: line 46:  4692 Killed                  dd if\u003d/dev/zero of\u003d$OUT/zero bs\u003d1M count\u003d$count\n$ ./cgroup_cache_oom_test.sh 300M\nusing Limit 300M for group\n1000+0 records in\n1000+0 records out\n1048576000 bytes (1.0 GB) copied, 20.248 s, 51.8 MB/s\n$ ./cgroup_cache_oom_test.sh 2G\nusing Limit 2G for group\n1000+0 records in\n1000+0 records out\n1048576000 bytes (1.0 GB) copied, 2.85201 s, 368 MB/s\n\n[akpm@linux-foundation.org: tweak changelog, reordered the test to optimize for CONFIG_CGROUP_MEM_RES_CTLR\u003dn]\n[hughd@google.com: fix deadlock with loop driver]\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujtisu.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: \u003cstable@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": "3ad3d901bbcfb15a5e4690e55350db0899095a68",
      "tree": "f560891bb97cb3faf129d6849e25b120b3991a78",
      "parents": [
        "bdf4f4d2161a795b9323855a81a047bd68f16202"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@linux.vnet.ibm.com",
        "time": "Tue Jul 31 16:45:52 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:49 2012 -0700"
      },
      "message": "mm: mmu_notifier: fix freed page still mapped in secondary MMU\n\nmmu_notifier_release() is called when the process is exiting.  It will\ndelete all the mmu notifiers.  But at this time the page belonging to the\nprocess is still present in page tables and is present on the LRU list, so\nthis race will happen:\n\n      CPU 0                 CPU 1\nmmu_notifier_release:    try_to_unmap:\n   hlist_del_init_rcu(\u0026mn-\u003ehlist);\n                            ptep_clear_flush_notify:\n                                  mmu nofifler not found\n                            free page  !!!!!!\n                            /*\n                             * At the point, the page has been\n                             * freed, but it is still mapped in\n                             * the secondary MMU.\n                             */\n\n  mn-\u003eops-\u003erelease(mn, mm);\n\nThen the box is not stable and sometimes we can get this bug:\n\n[  738.075923] BUG: Bad page state in process migrate-perf  pfn:03bec\n[  738.075931] page:ffffea00000efb00 count:0 mapcount:0 mapping:          (null) index:0x8076\n[  738.075936] page flags: 0x20000000000014(referenced|dirty)\n\nThe same issue is present in mmu_notifier_unregister().\n\nWe can call -\u003erelease before deleting the notifier to ensure the page has\nbeen unmapped from the secondary MMU before it is freed.\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@linux.vnet.ibm.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: \u003cstable@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": "bdf4f4d2161a795b9323855a81a047bd68f16202",
      "tree": "3aa457660c69f2945cb9ab477079e7441f220b27",
      "parents": [
        "90deb78839faedd194b65d419dbd9cba981e1922"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jul 31 16:45:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:49 2012 -0700"
      },
      "message": "mm: memcg: only check anon swapin page charges for swap cache\n\nshmem knows for sure that the page is in swap cache when attempting to\ncharge a page, because the cache charge entry function has a check for it.\nOnly anon pages may be removed from swap cache already when trying to\ncharge their swapin.\n\nAdjust the comment, though: \u00274969c11 mm: fix swapin race condition\u0027 added\na stable PageSwapCache check under the page lock in the do_swap_page()\nbefore calling the memory controller, so it\u0027s unuse_pte()\u0027s pte_same()\nthat may fail.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Wanpeng Li \u003cliwp.linux@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90deb78839faedd194b65d419dbd9cba981e1922",
      "tree": "2262e84058ece104e056bbb3c90abe3e3684a709",
      "parents": [
        "0435a2fdcb50f8e53a67e98c27708e5d9396b71a"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jul 31 16:45:47 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:49 2012 -0700"
      },
      "message": "mm: memcg: only check swap cache pages for repeated charging\n\nOnly anon and shmem pages in the swap cache are attempted to be charged\nmultiple times, from every swap pte fault or from shmem_unuse().  No other\npages require checking PageCgroupUsed().\n\nCharging pages in the swap cache is also serialized by the page lock, and\nsince both the try_charge and commit_charge are called under the same page\nlock section, the PageCgroupUsed() check might as well happen before the\ncounter charging, let alone reclaim.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Wanpeng Li \u003cliwp.linux@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0435a2fdcb50f8e53a67e98c27708e5d9396b71a",
      "tree": "9ef0a6916792f738056dda01b3d5b592fe6d5d44",
      "parents": [
        "24467cacc03cf8b156d4c6786697e5e5d13c9321"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jul 31 16:45:43 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:48 2012 -0700"
      },
      "message": "mm: memcg: split swapin charge function into private and public part\n\nWhen shmem is charged upon swapin, it does not need to check twice whether\nthe memory controller is enabled.\n\nAlso, shmem pages do not have to be checked for everything that regular\nanon pages have to be checked for, so let shmem use the internal version\ndirectly and allow future patches to move around checks that are only\nrequired when swapping in anon pages.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Wanpeng Li \u003cliwp.linux@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "24467cacc03cf8b156d4c6786697e5e5d13c9321",
      "tree": "d62344582c4b980226a65faa6ceefabb6d106204",
      "parents": [
        "62ba7442c8e286b6dd68fe82a3cc85c9414d909b"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jul 31 16:45:40 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:48 2012 -0700"
      },
      "message": "mm: memcg: remove needless !mm fixup to init_mm when charging\n\nIt does not matter to __mem_cgroup_try_charge() if the passed mm is NULL\nor init_mm, it will charge the root memcg in either case.\n\nAlso fix up the comment in __mem_cgroup_try_charge() that claimed the\ninit_mm would be charged when no mm was passed.  It\u0027s not really\nincorrect, but confusing.  Clarify that the root memcg is charged in this\ncase.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Wanpeng Li \u003cliwp.linux@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "62ba7442c8e286b6dd68fe82a3cc85c9414d909b",
      "tree": "c46f57d2607562ce6682b780a7085ea2f32ef79f",
      "parents": [
        "827a03d22e776ff7838b5b2780b71092e0b9de1e"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jul 31 16:45:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:48 2012 -0700"
      },
      "message": "mm: memcg: remove unneeded shmem charge type\n\nshmem page charges have not needed a separate charge type to tell them\nfrom regular file pages since 08e552c (\"memcg: synchronized LRU\").\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Wanpeng Li \u003cliwp.linux@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "827a03d22e776ff7838b5b2780b71092e0b9de1e",
      "tree": "c05e8f590a6b4c1dbd4c517cbe2b5a622ea326d6",
      "parents": [
        "7d188958bb64708577aa77e6b1ad68abbf0480f5"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jul 31 16:45:36 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:48 2012 -0700"
      },
      "message": "mm: memcg: move swapin charge functions above callsites\n\nCharging cache pages may require swapin in the shmem case.  Save the\nforward declaration and just move the swapin functions above the cache\ncharging functions.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Wanpeng Li \u003cliwp.linux@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7d188958bb64708577aa77e6b1ad68abbf0480f5",
      "tree": "34e954784a6adce1a03ab91dd38b66cc7fd060b4",
      "parents": [
        "0c59b89c81eab7fe7dcf08f2252ae22a6c081ce8"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jul 31 16:45:34 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:48 2012 -0700"
      },
      "message": "mm: memcg: only check for PageSwapCache when uncharging anon\n\nOnly anon pages that are uncharged at the time of the last page table\nmapping vanishing may be in swapcache.\n\nWhen shmem pages, file pages, swap-freed anon pages, or just migrated\npages are uncharged, they are known for sure to be not in swapcache.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Wanpeng Li \u003cliwp.linux@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c59b89c81eab7fe7dcf08f2252ae22a6c081ce8",
      "tree": "b6b6510704282d59dd875fed59c999c93455c973",
      "parents": [
        "5d84c7766e8aacc6e3477bdf02fdb417163cf89b"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jul 31 16:45:31 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:48 2012 -0700"
      },
      "message": "mm: memcg: push down PageSwapCache check into uncharge entry functions\n\nNot all uncharge paths need to check if the page is swapcache, some of\nthem can know for sure.\n\nPush down the check into all callsites of uncharge_common() so that the\npatch that removes some of them is more obvious.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Wanpeng Li \u003cliwp.linux@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5d84c7766e8aacc6e3477bdf02fdb417163cf89b",
      "tree": "c0cfc049f0b47713f30e36a56f6dd85b9f4363a5",
      "parents": [
        "0030f535a5cf9b1841d2088c10a0b2f8f2987460"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jul 31 16:45:28 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:48 2012 -0700"
      },
      "message": "mm: swapfile: clean up unuse_pte race handling\n\nThe conditional mem_cgroup_cancel_charge_swapin() is a leftover from when\nthe function would continue to reestablish the page even after\nmem_cgroup_try_charge_swapin() failed.  After 85d9fc8 \"memcg: fix refcnt\nhandling at swapoff\", the condition is always true when this code is\nreached.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Wanpeng Li \u003cliwp.linux@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0030f535a5cf9b1841d2088c10a0b2f8f2987460",
      "tree": "5a71a5057fb0d3e1b5f22c550c4374ea709ac3bc",
      "parents": [
        "737449236240e30a7bbe99f4d5586b8ed1416763"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jul 31 16:45:25 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:48 2012 -0700"
      },
      "message": "mm: memcg: fix compaction/migration failing due to memcg limits\n\nCompaction (and page migration in general) can currently be hindered\nthrough pages being owned by memory cgroups that are at their limits and\nunreclaimable.\n\nThe reason is that the replacement page is being charged against the limit\nwhile the page being replaced is also still charged.  But this seems\nunnecessary, given that only one of the two pages will still be in use\nafter migration finishes.\n\nThis patch changes the memcg migration sequence so that the replacement\npage is not charged.  Whatever page is still in use after successful or\nfailed migration gets to keep the charge of the page that was going to be\nreplaced.\n\nThe replacement page will still show up temporarily in the rss/cache\nstatistics, this can be fixed in a later patch as it\u0027s less urgent.\n\nReported-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Wanpeng Li \u003cliwp.linux@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "737449236240e30a7bbe99f4d5586b8ed1416763",
      "tree": "288fbd38b6c0e250901e218037fae64e79a91f7a",
      "parents": [
        "192e501b0438bb0e1574179773537f84c4752e25"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:45:20 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:48 2012 -0700"
      },
      "message": "swapfile: avoid dereferencing bd_disk during swap_entry_free for network storage\n\nCommit b3a27d (\"swap: Add swap slot free callback to\nblock_device_operations\") dereferences p-\u003ebdev-\u003ebd_disk but this is a NULL\ndereference if using swap-over-NFS.  This patch checks SWP_BLKDEV on the\nswap_info_struct before dereferencing.\n\nWith reference to this callback, Christoph Hellwig stated \"Please just\nremove the callback entirely.  It has no user outside the staging tree and\nwas added clearly against the rules for that staging tree\".  This would\nalso be my preference but there was not an obvious way of keeping zram in\nstaging/ happy.\n\nSigned-off-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "192e501b0438bb0e1574179773537f84c4752e25",
      "tree": "5fdfa34f332b39d2fe47603f23bcd1364357e2b2",
      "parents": [
        "a564b8f0398636ba30b07c0eaebdef7ff7837249"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:45:16 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:48 2012 -0700"
      },
      "message": "nfs: prevent page allocator recursions with swap over NFS.\n\nGFP_NOFS is _more_ permissive than GFP_NOIO in that it will initiate IO,\njust not of any filesystem data.\n\nThe problem is that previously NOFS was correct because that avoids\nrecursion into the NFS code.  With swap-over-NFS, it is no longer correct\nas swap IO can lead to this recursion.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@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": "a564b8f0398636ba30b07c0eaebdef7ff7837249",
      "tree": "10478aa5cfb2a3696db34618a479413b358c3831",
      "parents": [
        "29418aa4bd487c82016733ef5c6a06d656ed3c7d"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:45:12 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:48 2012 -0700"
      },
      "message": "nfs: enable swap on NFS\n\nImplement the new swapfile a_ops for NFS and hook up -\u003edirect_IO.  This\nwill set the NFS socket to SOCK_MEMALLOC and run socket reconnect under\nPF_MEMALLOC as well as reset SOCK_MEMALLOC before engaging the protocol\n-\u003econnect() method.\n\nPF_MEMALLOC should allow the allocation of struct socket and related\nobjects and the early (re)setting of SOCK_MEMALLOC should allow us to\nreceive the packets required for the TCP connection buildup.\n\n[jlayton@redhat.com: Restore PF_MEMALLOC task flags in all cases]\n[dfeng@redhat.com: Fix handling of multiple swap files]\n[a.p.zijlstra@chello.nl: Original patch]\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@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": "29418aa4bd487c82016733ef5c6a06d656ed3c7d",
      "tree": "17456bf2eb14ece3a9bb017c30ab6ce86c91eb54",
      "parents": [
        "d56b4ddf7781ef8dd050542781cc7f55673af002"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:45:10 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "nfs: disable data cache revalidation for swapfiles\n\nThe VM does not like PG_private set on PG_swapcache pages.  As suggested\nby Trond in http://lkml.org/lkml/2006/8/25/348, this patch disables NFS\ndata cache revalidation on swap files.  as it does not make sense to have\nother clients change the file while it is being used as swap.  This avoids\nsetting PG_private on swap pages, since there ought to be no further races\nwith invalidate_inode_pages2() to deal with.\n\nSince we cannot set PG_private we cannot use page-\u003eprivate which is\nalready used by PG_swapcache pages to store the nfs_page.  Thus augment\nthe new nfs_page_find_request logic.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@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": "d56b4ddf7781ef8dd050542781cc7f55673af002",
      "tree": "afda2689b4944e5dc7fd6d4a2b31f901080ca977",
      "parents": [
        "5a178119b0fbe37f7dfb602b37df9cc4b1dc9d71"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:45:06 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "nfs: teach the NFS client how to treat PG_swapcache pages\n\nReplace all relevant occurences of page-\u003eindex and page-\u003emapping in the\nNFS client with the new page_file_index() and page_file_mapping()\nfunctions.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@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": "5a178119b0fbe37f7dfb602b37df9cc4b1dc9d71",
      "tree": "22ddd286aac202ccb8c063f02792fc9c90a0b8da",
      "parents": [
        "a509bc1a9e487d952d9404318f7f990166ab57a7"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:45:02 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "mm: add support for direct_IO to highmem pages\n\nThe patch \"mm: add support for a filesystem to activate swap files and use\ndirect_IO for writing swap pages\" added support for using direct_IO to\nwrite swap pages but it is insufficient for highmem pages.\n\nTo support highmem pages, this patch kmaps() the page before calling the\ndirect_IO() handler.  As direct_IO deals with virtual addresses an\nadditional helper is necessary for get_kernel_pages() to lookup the struct\npage for a kmap virtual address.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@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": "a509bc1a9e487d952d9404318f7f990166ab57a7",
      "tree": "40a8f8a20877da8a5b855cfbc3813c0874605093",
      "parents": [
        "62c230bc1790923a1b35da03596a68a6c9b5b100"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:57 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "mm: swap: implement generic handler for swap_activate\n\nThe version of swap_activate introduced is sufficient for swap-over-NFS\nbut would not provide enough information to implement a generic handler.\nThis patch shuffles things slightly to ensure the same information is\navailable for aops-\u003eswap_activate() as is available to the core.\n\nNo functionality change.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@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": "62c230bc1790923a1b35da03596a68a6c9b5b100",
      "tree": "46b300a00929087627e029b0f4d53e486a97ba7f",
      "parents": [
        "18022c5d8627a7a9ba8097a0f238b513fae6f5b8"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:55 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "mm: add support for a filesystem to activate swap files and use direct_IO for writing swap pages\n\nCurrently swapfiles are managed entirely by the core VM by using -\u003ebmap to\nallocate space and write to the blocks directly.  This effectively ensures\nthat the underlying blocks are allocated and avoids the need for the swap\nsubsystem to locate what physical blocks store offsets within a file.\n\nIf the swap subsystem is to use the filesystem information to locate the\nblocks, it is critical that information such as block groups, block\nbitmaps and the block descriptor table that map the swap file were\nresident in memory.  This patch adds address_space_operations that the VM\ncan call when activating or deactivating swap backed by a file.\n\n  int swap_activate(struct file *);\n  int swap_deactivate(struct file *);\n\nThe -\u003eswap_activate() method is used to communicate to the file that the\nVM relies on it, and the address_space should take adequate measures such\nas reserving space in the underlying device, reserving memory for mempools\nand pinning information such as the block descriptor table in memory.  The\n-\u003eswap_deactivate() method is called on sys_swapoff() if -\u003eswap_activate()\nreturned success.\n\nAfter a successful swapfile -\u003eswap_activate, the swapfile is marked\nSWP_FILE and swapper_space.a_ops will proxy to\nsis-\u003eswap_file-\u003ef_mappings-\u003ea_ops using -\u003edirect_io to write swapcache\npages and -\u003ereadpage to read.\n\nIt is perfectly possible that direct_IO be used to read the swap pages but\nit is an unnecessary complication.  Similarly, it is possible that\n-\u003ewritepage be used instead of direct_io to write the pages but filesystem\ndevelopers have stated that calling writepage from the VM is undesirable\nfor a variety of reasons and using direct_IO opens up the possibility of\nwriting back batches of swap pages in the future.\n\n[a.p.zijlstra@chello.nl: Original patch]\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@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": "18022c5d8627a7a9ba8097a0f238b513fae6f5b8",
      "tree": "57e0d0ec6a5369c56bd00957eb9c0e1220e62917",
      "parents": [
        "f981c5950fa85916ba49bea5d9a7a5078f47e569"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:51 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "mm: add get_kernel_page[s] for pinning of kernel addresses for I/O\n\nThis patch adds two new APIs get_kernel_pages() and get_kernel_page() that\nmay be used to pin a vector of kernel addresses for IO.  The initial user\nis expected to be NFS for allowing pages to be written to swap using\naops-\u003edirect_IO().  Strictly speaking, swap-over-NFS only needs to pin one\npage for IO but it makes sense to express the API in terms of a vector and\nadd a helper for pinning single pages.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nCc: Mark Salter \u003cmsalter@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": "f981c5950fa85916ba49bea5d9a7a5078f47e569",
      "tree": "e742598755e57e1bbed06dc90b05fe6e13091236",
      "parents": [
        "6290c2c439732727899405f39fb76c2f5585b707"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:47 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "mm: methods for teaching filesystems about PG_swapcache pages\n\nIn order to teach filesystems to handle swap cache pages, three new page\nfunctions are introduced:\n\n  pgoff_t page_file_index(struct page *);\n  loff_t page_file_offset(struct page *);\n  struct address_space *page_file_mapping(struct page *);\n\npage_file_index() - gives the offset of this page in the file in\nPAGE_CACHE_SIZE blocks.  Like page-\u003eindex is for mapped pages, this\nfunction also gives the correct index for PG_swapcache pages.\n\npage_file_offset() - uses page_file_index(), so that it will give the\nexpected result, even for PG_swapcache pages.\n\npage_file_mapping() - gives the mapping backing the actual page; that is\nfor swap cache pages it will give swap_file-\u003ef_mapping.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@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": "6290c2c439732727899405f39fb76c2f5585b707",
      "tree": "3b016b4602b6711e4354d1b288018888574d9d48",
      "parents": [
        "c76562b6709fee5eff8a6a779be41c0bce661fd7"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:44 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "selinux: tag avc cache alloc as non-critical\n\nFailing to allocate a cache entry will only harm performance not\ncorrectness.  Do not consume valuable reserve pages for something like\nthat.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@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": "c76562b6709fee5eff8a6a779be41c0bce661fd7",
      "tree": "18e4a3c71b6d859cc58b7d1156bd1d7bfd1d6a5c",
      "parents": [
        "68243e76ee343d63c6cf76978588a885951e2818"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:41 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "netvm: prevent a stream-specific deadlock\n\nThis patch series is based on top of \"Swap-over-NBD without deadlocking\nv15\" as it depends on the same reservation of PF_MEMALLOC reserves logic.\n\nWhen a user or administrator requires swap for their application, they\ncreate a swap partition and file, format it with mkswap and activate it\nwith swapon.  In diskless systems this is not an option so if swap if\nrequired then swapping over the network is considered.  The two likely\nscenarios are when blade servers are used as part of a cluster where the\nform factor or maintenance costs do not allow the use of disks and thin\nclients.\n\nThe Linux Terminal Server Project recommends the use of the Network Block\nDevice (NBD) for swap but this is not always an option.  There is no\nguarantee that the network attached storage (NAS) device is running Linux\nor supports NBD.  However, it is likely that it supports NFS so there are\nusers that want support for swapping over NFS despite any performance\nconcern.  Some distributions currently carry patches that support swapping\nover NFS but it would be preferable to support it in the mainline kernel.\n\nPatch 1 avoids a stream-specific deadlock that potentially affects TCP.\n\nPatch 2 is a small modification to SELinux to avoid using PFMEMALLOC\n\treserves.\n\nPatch 3 adds three helpers for filesystems to handle swap cache pages.\n\tFor example, page_file_mapping() returns page-\u003emapping for\n\tfile-backed pages and the address_space of the underlying\n\tswap file for swap cache pages.\n\nPatch 4 adds two address_space_operations to allow a filesystem\n\tto pin all metadata relevant to a swapfile in memory. Upon\n\tsuccessful activation, the swapfile is marked SWP_FILE and\n\tthe address space operation -\u003edirect_IO is used for writing\n\tand -\u003ereadpage for reading in swap pages.\n\nPatch 5 notes that patch 3 is bolting\n\tfilesystem-specific-swapfile-support onto the side and that\n\tthe default handlers have different information to what\n\tis available to the filesystem. This patch refactors the\n\tcode so that there are generic handlers for each of the new\n\taddress_space operations.\n\nPatch 6 adds an API to allow a vector of kernel addresses to be\n\ttranslated to struct pages and pinned for IO.\n\nPatch 7 adds support for using highmem pages for swap by kmapping\n\tthe pages before calling the direct_IO handler.\n\nPatch 8 updates NFS to use the helpers from patch 3 where necessary.\n\nPatch 9 avoids setting PF_private on PG_swapcache pages within NFS.\n\nPatch 10 implements the new swapfile-related address_space operations\n\tfor NFS and teaches the direct IO handler how to manage\n\tkernel addresses.\n\nPatch 11 prevents page allocator recursions in NFS by using GFP_NOIO\n\twhere appropriate.\n\nPatch 12 fixes a NULL pointer dereference that occurs when using\n\tswap-over-NFS.\n\nWith the patches applied, it is possible to mount a swapfile that is on an\nNFS filesystem.  Swap performance is not great with a swap stress test\ntaking roughly twice as long to complete than if the swap device was\nbacked by NBD.\n\nThis patch: netvm: prevent a stream-specific deadlock\n\nIt could happen that all !SOCK_MEMALLOC sockets have buffered so much data\nthat we\u0027re over the global rmem limit.  This will prevent SOCK_MEMALLOC\nbuffers from receiving data, which will prevent userspace from running,\nwhich is needed to reduce the buffered data.\n\nFix this by exempting the SOCK_MEMALLOC sockets from the rmem limit.  Once\nthis change it applied, it is important that sockets that set\nSOCK_MEMALLOC do not clear the flag until the socket is being torn down.\nIf this happens, a warning is generated and the tokens reclaimed to avoid\naccounting errors until the bug is fixed.\n\n[davem@davemloft.net: Warning about clearing SOCK_MEMALLOC]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68243e76ee343d63c6cf76978588a885951e2818",
      "tree": "e6ec975265272c81e03312e1ebc1c27fd6fdfa19",
      "parents": [
        "5515061d22f0f9976ae7815864bfd22042d36848"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:46 2012 -0700"
      },
      "message": "mm: account for the number of times direct reclaimers get throttled\n\nUnder significant pressure when writing back to network-backed storage,\ndirect reclaimers may get throttled.  This is expected to be a short-lived\nevent and the processes get woken up again but processes do get stalled.\nThis patch counts how many times such stalling occurs.  It\u0027s up to the\nadministrator whether to reduce these stalls by increasing\nmin_free_kbytes.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5515061d22f0f9976ae7815864bfd22042d36848",
      "tree": "13b53a29166f19eb864e96b3b58539a207e5fa2f",
      "parents": [
        "7f338fe4540b1d0600b02314c7d885fd358e9eca"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:46 2012 -0700"
      },
      "message": "mm: throttle direct reclaimers if PF_MEMALLOC reserves are low and swap is backed by network storage\n\nIf swap is backed by network storage such as NBD, there is a risk that a\nlarge number of reclaimers can hang the system by consuming all\nPF_MEMALLOC reserves.  To avoid these hangs, the administrator must tune\nmin_free_kbytes in advance which is a bit fragile.\n\nThis patch throttles direct reclaimers if half the PF_MEMALLOC reserves\nare in use.  If the system is routinely getting throttled the system\nadministrator can increase min_free_kbytes so degradation is smoother but\nthe system will keep running.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f338fe4540b1d0600b02314c7d885fd358e9eca",
      "tree": "dbd0fe3c3d874ae622980dae4b15605bb9e2052a",
      "parents": [
        "381760eadc393bcb1bb328510ad75cf13431806d"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:32 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:46 2012 -0700"
      },
      "message": "nbd: set SOCK_MEMALLOC for access to PFMEMALLOC reserves\n\nSet SOCK_MEMALLOC on the NBD socket to allow access to PFMEMALLOC reserves\nso pages backed by NBD, particularly if swap related, can be cleaned to\nprevent the machine being deadlocked.  It is still possible that the\nPFMEMALLOC reserves get depleted resulting in deadlock but this can be\nresolved by the administrator by increasing min_free_kbytes.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "381760eadc393bcb1bb328510ad75cf13431806d"
}
