)]}'
{
  "log": [
    {
      "commit": "4a49b499dfa0c9e42be6d6fdd771f3434c776278",
      "tree": "f9fe2be3cf378271dca62ba6e91f63a83604a051",
      "parents": [
        "d29ce988aeb459203c74f14747f4f77e1829ef78"
      ],
      "author": {
        "name": "Joy Latten",
        "email": "latten@austin.ibm.com",
        "time": "Wed Dec 12 20:25:13 2007 +0800"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Jan 11 08:16:53 2008 +1100"
      },
      "message": "[CRYPTO] ccm: Added CCM mode\n\nThis patch adds Counter with CBC-MAC (CCM) support.\nRFC 3610 and NIST Special Publication 800-38C were referenced.\n\nSigned-off-by: Joy Latten \u003clatten@austin.ibm.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "0a270321dbf948963aeb0e8382fe17d2c2eb3771",
      "tree": "bdb6c12f88bd02b62853ff6bf26bf9d4a736fdbd",
      "parents": [
        "45d44eb56ad197cfccb8f84b5df64abff8b7cb96"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Nov 30 21:38:37 2007 +1100"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Jan 11 08:16:48 2008 +1100"
      },
      "message": "[CRYPTO] seqiv: Add Sequence Number IV Generator\n\nThis generator generates an IV based on a sequence number by xoring it\nwith a salt.  This algorithm is mainly useful for CTR and similar modes.\n\nThis patch also sets it as the default IV generator for ctr.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "806d183aa6cc565d0f6bd2fb7fc6bfb175cc4813",
      "tree": "b544746f70bda6413105887fe1e6d28399840e23",
      "parents": [
        "15c67286685cddce207b646306e8819ec8268ede"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Dec 05 12:10:53 2007 +1100"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Jan 11 08:16:45 2008 +1100"
      },
      "message": "[CRYPTO] eseqiv: Add Encrypted Sequence Number IV Generator\n\nThis generator generates an IV based on a sequence number by xoring it\nwith a salt and then encrypting it with the same key as used to encrypt\nthe plain text.  This algorithm requires that the block size be equal\nto the IV size.  It is mainly useful for CBC.\n\nIt has one noteworthy property that for IPsec the IV happens to lie\njust before the plain text so the IV generation simply increases the\nnumber of encrypted blocks by one.  Therefore the cost of this generator\nis entirely dependent on the speed of the underlying cipher.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "7f47073911f0e4384d38a0827d28305a177c8816",
      "tree": "0732253520cdb0ff686166256923bc633ddceace",
      "parents": [
        "ecfc43292f68566c144afca966b46b371c26d56c"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Nov 27 23:17:23 2007 +0800"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Jan 11 08:16:44 2008 +1100"
      },
      "message": "[CRYPTO] chainiv: Add chain IV generator\n\nThe chain IV generator is the one we\u0027ve been using in the IPsec stack.\nIt simply starts out with a random IV, then uses the last block of each\nencrypted packet\u0027s cipher text as the IV for the next packet.\n\nIt can only be used by synchronous ciphers since we have to make sure\nthat we don\u0027t start the encryption of the next packet until the last\none has completed.\n\nIt does have the advantage of using very little CPU time since it doesn\u0027t\nhave to generate anything at all.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "653ebd9c8510a7d647ed23e66e1338f848ebdbab",
      "tree": "99e1d59a0a944807bf10b59f874045ac8067ba68",
      "parents": [
        "2589469d7bc69bdfad4e05d88a0d2748f92ef0f3"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Nov 27 19:48:27 2007 +0800"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Jan 11 08:16:41 2008 +1100"
      },
      "message": "[CRYPTO] blkcipher: Merge ablkcipher and blkcipher into one option/module\n\nWith the impending addition of the givcipher type, both blkcipher and\nablkcipher algorithms will use it to create givcipher objects.  As such\nit no longer makes sense to split the system between ablkcipher and\nblkcipher.  In particular, both ablkcipher.c and blkcipher.c would need\nto use the givcipher type which has to reside in ablkcipher.c since it\nshares much code with it.\n\nThis patch merges the two Kconfig options as well as the modules into one.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "0b77abb3b2d0c2eee1da79a3f3bd4312a0edb156",
      "tree": "0a782303f8b8a86f66fc95c830cdf69c78289084",
      "parents": [
        "91755a921c4af51c355bcb74a98b717d5c1818b6"
      ],
      "author": {
        "name": "Zoltan Sogor",
        "email": "weth@inf.u-szeged.hu",
        "time": "Fri Dec 07 16:53:23 2007 +0800"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Jan 11 08:16:35 2008 +1100"
      },
      "message": "[CRYPTO] lzo: Add LZO compression algorithm support\n\nAdd LZO compression algorithm support\n\nSigned-off-by: Zoltan Sogor \u003cweth@inf.u-szeged.hu\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "28db8e3e38e593d22e2c69942bb1ca7be2a35f05",
      "tree": "65ef9ee8544001278a71340f44f9a3227b54a4d8",
      "parents": [
        "e3a4ea4fd2e5f154ae9233f1ce30e7564e5cbcfc"
      ],
      "author": {
        "name": "Mikko Herranen",
        "email": "mh1@iki.fi",
        "time": "Mon Nov 26 22:24:11 2007 +0800"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Jan 11 08:16:23 2008 +1100"
      },
      "message": "[CRYPTO] gcm: New algorithm\n\nAdd GCM/GMAC support to cryptoapi.\n\nGCM (Galois/Counter Mode) is an AEAD mode of operations for any block cipher\nwith a block size of 16.  The typical example is AES-GCM.\n\nSigned-off-by: Mikko Herranen \u003cmh1@iki.fi\u003e\nReviewed-by: Mika Kukkonen \u003cmika.kukkonen@nsn.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "2407d60872dd2a95404c6048f775f3b64d438f4b",
      "tree": "6a333c5eaae616736b2f184cee8e9f052cee966d",
      "parents": [
        "332f8840f7095d294f9bb066b175a100bcde214c"
      ],
      "author": {
        "name": "Tan Swee Heng",
        "email": "thesweeheng@gmail.com",
        "time": "Fri Nov 23 19:45:00 2007 +0800"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Jan 11 08:16:15 2008 +1100"
      },
      "message": "[CRYPTO] salsa20: Salsa20 stream cipher\n\nThis patch implements the Salsa20 stream cipher using the blkcipher interface.\n\nThe core cipher code comes from Daniel Bernstein\u0027s submission to eSTREAM:\n  http://www.ecrypt.eu.org/stream/svn/viewcvs.cgi/ecrypt/trunk/submissions/salsa20/full/ref/\n\nThe test vectors comes from:\n  http://www.ecrypt.eu.org/stream/svn/viewcvs.cgi/ecrypt/trunk/submissions/salsa20/full/\n\nIt has been tested successfully with \"modprobe tcrypt mode\u003d34\" on an\nUML instance.\n\nSigned-off-by: Tan Swee Heng \u003cthesweeheng@gmail.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "23e353c8a681cc30d42fbd4f2c2be85c44fe209b",
      "tree": "d64934fa42e3e1e2b3fcccb4e86168a1614e250d",
      "parents": [
        "490fe3f05be3f7c87d7932bcb6e6e53e3db2cd9c"
      ],
      "author": {
        "name": "Joy Latten",
        "email": "latten@austin.ibm.com",
        "time": "Tue Oct 23 08:50:32 2007 +0800"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Fri Jan 11 08:16:01 2008 +1100"
      },
      "message": "[CRYPTO] ctr: Add CTR (Counter) block cipher mode\n\nThis patch implements CTR mode for IPsec.\nIt is based off of RFC 3686.\n\nPlease note:\n1. CTR turns a block cipher into a stream cipher.\nEncryption is done in blocks, however the last block\nmay be a partial block.\n\nA \"counter block\" is encrypted, creating a keystream\nthat is xor\u0027ed with the plaintext. The counter portion\nof the counter block is incremented after each block\nof plaintext is encrypted.\nDecryption is performed in same manner.\n\n2. The CTR counterblock is composed of,\n        nonce + IV + counter\n\nThe size of the counterblock is equivalent to the\nblocksize of the cipher.\n        sizeof(nonce) + sizeof(IV) + sizeof(counter) \u003d blocksize\n\nThe CTR template requires the name of the cipher\nalgorithm, the sizeof the nonce, and the sizeof the iv.\n        ctr(cipher,sizeof_nonce,sizeof_iv)\n\nSo for example,\n        ctr(aes,4,8)\nspecifies the counterblock will be composed of 4 bytes\nfrom a nonce, 8 bytes from the iv, and 4 bytes for counter\nsince aes has a blocksize of 16 bytes.\n\n3. The counter portion of the counter block is stored\nin big endian for conformance to rfc 3686.\n\nSigned-off-by: Joy Latten \u003clatten@austin.ibm.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "ad5d27899fdbe7a66e57fdf1af883dbd7ff88dac",
      "tree": "666a5809fd9a01e0798411b94962903c3431400c",
      "parents": [
        "f8246af005d56b73f4f04304fc5b6fd9878af4ef"
      ],
      "author": {
        "name": "Sebastian Siewior",
        "email": "sebastian@breakpoint.cc",
        "time": "Mon Oct 08 11:45:10 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:55:50 2007 -0700"
      },
      "message": "[CRYPTO] sha: Load the SHA[1|256] module by an alias\n\nLoading the crypto algorithm by the alias instead of by module directly\nhas the advantage that all possible implementations of this algorithm\nare loaded automatically and the crypto API can choose the best one\ndepending on its priority.\n\nAdditionally it ensures that the generic implementation as well as the\nHW driver (if available) is loaded in case the HW driver needs the\ngeneric version as fallback in corner cases.\n\nAlso remove the probe for sha1 in padlock\u0027s init code.\n\nQuote from Herbert:\n  The probe is actually pointless since we can always probe when\n  the algorithm is actually used which does not lead to dead-locks\n  like this.\n\nSigned-off-by: Sebastian Siewior \u003csebastian@breakpoint.cc\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "f8246af005d56b73f4f04304fc5b6fd9878af4ef",
      "tree": "d935971920749a7e99b7224e413b110a3ba07b10",
      "parents": [
        "c5a511f1cd6f90a98ad11dd97e2313c7c787deb2"
      ],
      "author": {
        "name": "Sebastian Siewior",
        "email": "sebastian@breakpoint.cc",
        "time": "Fri Oct 05 16:52:01 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:55:49 2007 -0700"
      },
      "message": "[CRYPTO] aes: Rename aes to aes-generic\n\nLoading the crypto algorithm by the alias instead of by module directly\nhas the advantage that all possible implementations of this algorithm\nare loaded automatically and the crypto API can choose the best one\ndepending on its priority.\n\nAdditionally it ensures that the generic implementation as well as the\nHW driver (if available) is loaded in case the HW driver needs the\ngeneric version as fallback in corner cases.\n\nSigned-off-by: Sebastian Siewior \u003csebastian@breakpoint.cc\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "c5a511f1cd6f90a98ad11dd97e2313c7c787deb2",
      "tree": "209dc01d7dc32ae00563ee81ee4df98118f95f1c",
      "parents": [
        "7607bd8ff03b8af5af887931318cb2bb20361856"
      ],
      "author": {
        "name": "Sebastian Siewior",
        "email": "sebastian@breakpoint.cc",
        "time": "Fri Oct 05 16:42:03 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:55:49 2007 -0700"
      },
      "message": "[CRYPTO] des: Rename des to des-generic\n\nLoading the crypto algorithm by the alias instead of by module directly\nhas the advantage that all possible implementations of this algorithm\nare loaded automatically and the crypto API can choose the best one\ndepending on its priority.\n\nSigned-off-by: Sebastian Siewior \u003csebastian@breakpoint.cc\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "f19f5111c94053ba4931892f5c01c806de33942e",
      "tree": "b40dfae8fa170ebdc92fdcfeb3000c84d6203645",
      "parents": [
        "5aaff0c8f7dd3515c9f1ca57f86463f30779acc7"
      ],
      "author": {
        "name": "Rik Snel",
        "email": "rsnel@cube.dyndns.org",
        "time": "Wed Sep 19 20:23:13 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:55:45 2007 -0700"
      },
      "message": "[CRYPTO] xts: XTS blockcipher mode implementation without partial blocks\n\nXTS currently considered to be the successor of the LRW mode by the IEEE1619\nworkgroup. LRW was discarded, because it was not secure if the encyption key\nitself is encrypted with LRW.\n\nXTS does not have this problem. The implementation is pretty straightforward,\na new function was added to gf128mul to handle GF(128) elements in ble format.\nFour testvectors from the specification\n\thttp://grouper.ieee.org/groups/1619/email/pdf00086.pdf\nwere added, and they verify on my system.\n\nSigned-off-by: Rik Snel \u003crsnel@cube.dyndns.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "3c09f17c3d11f3e98928f55b600e6de22f58017a",
      "tree": "1c707e78054804fba65719a6dc87bc555fe9566b",
      "parents": [
        "b16c3a2e2c0307f5370b2b5e18bcbe1437b5f3d8"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Aug 30 16:24:15 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:55:43 2007 -0700"
      },
      "message": "[CRYPTO] aead: Add authenc\n\nThis patch adds the authenc algorithm which constructs an AEAD algorithm\nfrom an asynchronous block cipher and a hash.  The construction is done\nby concatenating the encrypted result from the cipher with the output\nfrom the hash, as is used by the IPsec ESP protocol.\n\nThe authenc algorithm exists as a template with four parameters:\n\n\tauthenc(auth, authsize, enc, enckeylen).\n\nThe authentication algorithm, the authentication size (i.e., truncating\nthe output of the authentication algorithm), the encryption algorithm,\nand the encryption key length.  Both the size field and the key length\nfield are in bytes.  For example, AES-128 with SHA1-HMAC would be\nrepresented by\n\n\tauthenc(hmac(sha1), 12, cbc(aes), 16)\n\nThe key for the authenc algorithm is the concatenation of the keys for\nthe authentication algorithm with the encryption algorithm.  For the\nabove example, if a key of length 36 bytes is given, then hmac(sha1)\nwould receive the first 20 bytes while the last 16 would be given to\ncbc(aes).\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "e962a653f3146330d99aefa5adadeaed60bc9bb5",
      "tree": "339fed03755841554f607d30835c81334e3ce127",
      "parents": [
        "2de98e75449fc1c43d2fbb857668ae62d4f5eece"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Aug 29 16:06:15 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:55:41 2007 -0700"
      },
      "message": "[CRYPTO] api: Move scatterwalk into algapi\n\nThe scatterwalk code is only used by algorithms that can be built as\na module.  Therefore we can move it into algapi.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "1ae978208e2ee9ba1b01d309164bc5e590cd242d",
      "tree": "89dac5bceddd383836de9a4da6cc7d381f374e3f",
      "parents": [
        "e2ee95b8c69e542d6afef3f6f38ea598cc146ba7"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Aug 30 15:36:14 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:55:39 2007 -0700"
      },
      "message": "[CRYPTO] api: Add aead crypto type\n\nThis patch adds crypto_aead which is the interface for AEAD\n(Authenticated Encryption with Associated Data) algorithms.\n\nAEAD algorithms perform authentication and encryption in one\nstep.  Traditionally users (such as IPsec) would use two\ndifferent crypto algorithms to perform these.  With AEAD\nthis comes down to one algorithm and one operation.\n\nOf course if traditional algorithms were used we\u0027d still\nbe doing two operations underneath.  However, real AEAD\nalgorithms may allow the underlying operations to be\noptimised as well.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "e2ee95b8c69e542d6afef3f6f38ea598cc146ba7",
      "tree": "9fea66f721fd0ca6b8b519a927a1c65fcbcb56ef",
      "parents": [
        "aa379a6ab17ff5b06552c52360ce6d9f8c7c209a"
      ],
      "author": {
        "name": "Hye-Shik Chang",
        "email": "perky@FreeBSD.org",
        "time": "Tue Aug 21 20:01:03 2007 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:55:38 2007 -0700"
      },
      "message": "[CRYPTO] seed: New cipher algorithm\n\nThis patch adds support for the SEED cipher (RFC4269).\n\nThis patch have been used in few VPN appliance vendors in Korea for\nseveral years.  And it was verified by KISA, who developed the\nalgorithm itself.\n\nAs its importance in Korean banking industry, it would be great\nif linux incorporates the support.\n\nSigned-off-by: Hye-Shik Chang \u003cperky@FreeBSD.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "9bc89cd82d6f88fb0ca39b30445c329a430fd66b",
      "tree": "7bd0e856abd359f84edea1bacfd1dd32edd93fbb",
      "parents": [
        "685784aaf3cd0e3ff5e36c7ecf6f441cdbf57f73"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jan 02 11:10:44 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:14 2007 -0700"
      },
      "message": "async_tx: add the async_tx api\n\nThe async_tx api provides methods for describing a chain of asynchronous\nbulk memory transfers/transforms with support for inter-transactional\ndependencies.  It is implemented as a dmaengine client that smooths over\nthe details of different hardware offload engine implementations.  Code\nthat is written to the api can optimize for asynchronous operation and the\napi will fit the chain of operations to the available offload resources. \n \n\tI imagine that any piece of ADMA hardware would register with the\n\t\u0027async_*\u0027 subsystem, and a call to async_X would be routed as\n\tappropriate, or be run in-line. - Neil Brown\n\nasync_tx exploits the capabilities of struct dma_async_tx_descriptor to\nprovide an api of the following general format:\n\nstruct dma_async_tx_descriptor *\nasync_\u003coperation\u003e(..., struct dma_async_tx_descriptor *depend_tx,\n\t\t\tdma_async_tx_callback cb_fn, void *cb_param)\n{\n\tstruct dma_chan *chan \u003d async_tx_find_channel(depend_tx, \u003coperation\u003e);\n\tstruct dma_device *device \u003d chan ? chan-\u003edevice : NULL;\n\tint int_en \u003d cb_fn ? 1 : 0;\n\tstruct dma_async_tx_descriptor *tx \u003d device ?\n\t\tdevice-\u003edevice_prep_dma_\u003coperation\u003e(chan, len, int_en) : NULL;\n\n\tif (tx) { /* run \u003coperation\u003e asynchronously */\n\t\t...\n\t\ttx-\u003etx_set_dest(addr, tx, index);\n\t\t...\n\t\ttx-\u003etx_set_src(addr, tx, index);\n\t\t...\n\t\tasync_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param);\n\t} else { /* run \u003coperation\u003e synchronously */\n\t\t...\n\t\t\u003coperation\u003e\n\t\t...\n\t\tasync_tx_sync_epilog(flags, depend_tx, cb_fn, cb_param);\n\t}\n\n\treturn tx;\n}\n\nasync_tx_find_channel() returns a capable channel from its pool.  The\nchannel pool is organized as a per-cpu array of channel pointers.  The\nasync_tx_rebalance() routine is tasked with managing these arrays.  In the\nuniprocessor case async_tx_rebalance() tries to spread responsibility\nevenly over channels of similar capabilities.  For example if there are two\ncopy+xor channels, one will handle copy operations and the other will\nhandle xor.  In the SMP case async_tx_rebalance() attempts to spread the\noperations evenly over the cpus, e.g. cpu0 gets copy channel0 and xor\nchannel0 while cpu1 gets copy channel 1 and xor channel 1.  When a\ndependency is specified async_tx_find_channel defaults to keeping the\noperation on the same channel.  A xor-\u003ecopy-\u003exor chain will stay on one\nchannel if it supports both operation types, otherwise the transaction will\ntransition between a copy and a xor resource.\n\nCurrently the raid5 implementation in the MD raid456 driver has been\nconverted to the async_tx api.  A driver for the offload engines on the\nIntel Xscale series of I/O processors, iop-adma, is provided in a later\ncommit.  With the iop-adma driver and async_tx, raid456 is able to offload\ncopy, xor, and xor-zero-sum operations to hardware engines.\n \nOn iop342 tiobench showed higher throughput for sequential writes (20 - 30%\nimprovement) and sequential reads to a degraded array (40 - 55%\nimprovement).  For the other cases performance was roughly equal, +/- a few\npercentage points.  On a x86-smp platform the performance of the async_tx\nimplementation (in synchronous mode) was also +/- a few percentage points\nof the original implementation.  According to \u0027top\u0027 on iop342 CPU\nutilization drops from ~50% to ~15% during a \u0027resync\u0027 while the speed\naccording to /proc/mdstat doubles from ~25 MB/s to ~50 MB/s.\n \nThe tiobench command line used for testing was: tiobench --size 2048\n--block 4096 --block 131072 --dir /mnt/raid --numruns 5\n* iop342 had 1GB of memory available\n\nDetails:\n* if CONFIG_DMA_ENGINE\u003dn the asynchronous path is compiled away by making\n  async_tx_find_channel a static inline routine that always returns NULL\n* when a callback is specified for a given transaction an interrupt will\n  fire at operation completion time and the callback will occur in a\n  tasklet.  if the the channel does not support interrupts then a live\n  polling wait will be performed\n* the api is written as a dmaengine client that requests all available\n  channels\n* In support of dependencies the api implicitly schedules channel-switch\n  interrupts.  The interrupt triggers the cleanup tasklet which causes\n  pending operations to be scheduled on the next channel\n* Xor engines treat an xor destination address differently than a software\n  xor routine.  To the software routine the destination address is an implied\n  source, whereas engines treat it as a write-only destination.  This patch\n  modifies the xor_blocks routine to take a an explicit destination address\n  to mirror the hardware.\n\nChangelog:\n* fixed a leftover debug print\n* don\u0027t allow callbacks in async_interrupt_cond\n* fixed xor_block changes\n* fixed usage of ASYNC_TX_XOR_DROP_DEST\n* drop dma mapping methods, suggested by Chris Leech\n* printk warning fixups from Andrew Morton\n* don\u0027t use inline in C files, Adrian Bunk\n* select the API when MD is enabled\n* BUG_ON xor source counts \u003c\u003d 1\n* implicitly handle hardware concerns like channel switching and\n  interrupts, Neil Brown\n* remove the per operation type list, and distribute operation capabilities\n  evenly amongst the available channels\n* simplify async_tx_find_channel to optimize the fast path\n* introduce the channel_table_initialized flag to prevent early calls to\n  the api\n* reorganize the code to mimic crypto\n* include mm.h as not all archs include it in dma-mapping.h\n* make the Kconfig options non-user visible, Adrian Bunk\n* move async_tx under crypto since it is meant as \u0027core\u0027 functionality, and\n  the two may share algorithms in the future\n* move large inline functions into c files\n* checkpatch.pl fixes\n* gpl v2 only correction\n\nCc: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "685784aaf3cd0e3ff5e36c7ecf6f441cdbf57f73",
      "tree": "10f99829f7d877b87614fe69be77e363c026a8d7",
      "parents": [
        "d379b01e9087a582d58f4b678208a4f8d8376fe7"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jul 09 11:56:42 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:14 2007 -0700"
      },
      "message": "xor: make \u0027xor_blocks\u0027 a library routine for use with async_tx\n\nThe async_tx api tries to use a dma engine for an operation, but will fall\nback to an optimized software routine otherwise.  Xor support is\nimplemented using the raid5 xor routines.  For organizational purposes this\nroutine is moved to a common area.\n\nThe following fixes are also made:\n* rename xor_block \u003d\u003e xor_blocks, suggested by Adrian Bunk\n* ensure that xor.o initializes before md.o in the built-in case\n* checkpatch.pl fixes\n* mark calibrate_xor_blocks __init, Adrian Bunk\n\nCc: Adrian Bunk \u003cbunk@stusta.de\u003e\nCc: NeilBrown \u003cneilb@suse.de\u003e\nCc: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "124b53d020622ffa24e27406f2373d5a3debd0d3",
      "tree": "e1a89ac6745ce9afea6fd2ea358ebd40e60abb76",
      "parents": [
        "a73e69965fa2647faa36caf40f4132b9c99d61fd"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Apr 16 20:49:20 2007 +1000"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed May 02 14:38:32 2007 +1000"
      },
      "message": "[CRYPTO] cryptd: Add software async crypto daemon\n\nThis patch adds the cryptd module which is a template that takes a\nsynchronous software crypto algorithm and converts it to an asynchronous\none by executing it in a kernel thread.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "b5b7f08869340aa8cfa23303f7d195f161479592",
      "tree": "dd1f3f00165e7ca31e29a52d64909439cdfab8fd",
      "parents": [
        "ebc610e5bc76df073221e64e86c3f7533a09ea40"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Apr 16 20:48:54 2007 +1000"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed May 02 14:38:31 2007 +1000"
      },
      "message": "[CRYPTO] api: Add async blkcipher type\n\nThis patch adds the mid-level interface for asynchronous block ciphers.\nIt also includes a generic queueing mechanism that can be used by other\nasynchronous crypto operations in future.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "d64beac050914de6fe6565741b39905ecd5994b7",
      "tree": "33fd4c0e4ad33a153d1cf60b991232e8a90cbc83",
      "parents": [
        "04ac7db3f23d98abe5d3c91d21b0e45fc09e74ea"
      ],
      "author": {
        "name": "Noriaki TAKAMIYA",
        "email": "takamiya@po.ntts.co.jp",
        "time": "Wed Jan 24 21:47:48 2007 +1100"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Feb 07 09:21:03 2007 +1100"
      },
      "message": "[CRYPTO] camellia: added the code of Camellia cipher algorithm.\n\nThis patch adds the main code of Camellia cipher algorithm.\n\nSigned-off-by: Noriaki TAKAMIYA \u003ctakamiya@po.ntts.co.jp\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "90831639a65592d6d3dc888dc3341f54ebf932e6",
      "tree": "30f3c32f414ff69d76b2c733a71739229f00be97",
      "parents": [
        "91652be5d1b901673a8e926455f0ed146cfaa588"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Dec 16 12:13:14 2006 +1100"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Feb 07 09:20:59 2007 +1100"
      },
      "message": "[CRYPTO] fcrypt: Add FCrypt from RxRPC\n\nAdd a crypto module to provide FCrypt encryption as used by RxRPC.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "91652be5d1b901673a8e926455f0ed146cfaa588",
      "tree": "c7a7d3f48be35f64a918472f82ec1b94dc2bcbbd",
      "parents": [
        "a28091ae170cd06695bf461905c5b97a165633ba"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Dec 16 12:09:02 2006 +1100"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Wed Feb 07 09:20:59 2007 +1100"
      },
      "message": "[CRYPTO] pcbc: Add Propagated CBC template\n\nAdd PCBC crypto template support as used by RxRPC.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "64470f1b8510699dc357a44004dc924bc139c917",
      "tree": "188d414266091c2220bae155651b2aacc2c6b9aa",
      "parents": [
        "c494e0705d670c51ac736c8c4d92750705fe3187"
      ],
      "author": {
        "name": "Rik Snel",
        "email": "rsnel@cube.dyndns.org",
        "time": "Sun Nov 26 09:43:10 2006 +1100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Dec 06 18:38:56 2006 -0800"
      },
      "message": "[CRYPTO] lrw: Liskov Rivest Wagner, a tweakable narrow block cipher mode\n\nMain module, this implements the Liskov Rivest Wagner block cipher mode\nin the new blockcipher API. The implementation is based on ecb.c.\n\nThe LRW-32-AES specification I used can be found at:\nhttp://grouper.ieee.org/groups/1619/email/pdf00017.pdf\n\nIt implements the optimization specified as optional in the\nspecification, and in addition it uses optimized multiplication\nroutines from gf128mul.c.\n\nSince gf128mul.[ch] is not tested on bigendian, this cipher mode\nmay currently fail badly on bigendian machines.\n\nSigned-off-by: Rik Snel \u003crsnel@cube.dyndns.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "c494e0705d670c51ac736c8c4d92750705fe3187",
      "tree": "9f00826afc317f976c03ef4e77284b13204c0c9d",
      "parents": [
        "aec3694b987900de7ab789ea5749d673e0d634c4"
      ],
      "author": {
        "name": "Rik Snel",
        "email": "rsnel@cube.dyndns.org",
        "time": "Wed Nov 29 18:59:44 2006 +1100"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Dec 06 18:38:55 2006 -0800"
      },
      "message": "[CRYPTO] lib: table driven multiplications in GF(2^128)\n\nA lot of cypher modes need multiplications in GF(2^128). LRW, ABL, GCM...\nI use functions from this library in my LRW implementation and I will\nalso use them in my ABL (Arbitrary Block Length, an unencumbered (correct\nme if I am wrong, wide block cipher mode).\n\nElements of GF(2^128) must be presented as u128 *, it encourages automatic\nand proper alignment.\n\nThe library contains support for two different representations of GF(2^128),\nsee the comment in gf128mul.h. There different levels of optimization\n(memory/speed tradeoff).\n\nThe code is based on work by Dr Brian Gladman. Notable changes:\n- deletion of two optimization modes\n- change from u32 to u64 for faster handling on 64bit machines\n- support for \u0027bbe\u0027 representation in addition to the, already implemented,\n  \u0027lle\u0027 representation.\n- move \u0027inline void\u0027 functions from header to \u0027static void\u0027 in the\n  source file\n- update to use the linux coding style conventions\n\nThe original can be found at:\nhttp://fp.gladman.plus.com/AES/modes.vc8.19-06-06.zip\n\nThe copyright (and GPL statement) of the original author is preserved.\n\nSigned-off-by: Rik Snel \u003crsnel@cube.dyndns.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "333b0d7eeacbd47159daf23757aa81368470c409",
      "tree": "e05f1a3bed92833ab4d5f7c5dcc75ab8d8fcf245",
      "parents": [
        "45789328e5aa2de96d4467e4445418364e5378d7"
      ],
      "author": {
        "name": "Kazunori MIYAZAWA",
        "email": "miyazawa@linux-ipv6.org",
        "time": "Sat Oct 28 13:15:24 2006 +1000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Dec 06 18:38:49 2006 -0800"
      },
      "message": "[CRYPTO] xcbc: New algorithm\n\nThis is core code of XCBC.\n\nXCBC is an algorithm that forms a MAC algorithm out of a cipher algorithm.\nFor example, AES-XCBC-MAC is a MAC algorithm based on the AES cipher\nalgorithm.\n\nSigned-off-by: Kazunori MIYAZAWA \u003cmiyazawa@linux-ipv6.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "055bcee3102dc35f019b69df9c2618e9d6dd1c09",
      "tree": "3f7c68abbbb5041d570e4cb8588f3943530bc0b7",
      "parents": [
        "7226bc877a22244e8003924031435a4bffd52654"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Sat Aug 19 22:24:23 2006 +1000"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Sep 21 11:46:17 2006 +1000"
      },
      "message": "[CRYPTO] digest: Added user API for new hash type\n\nThe existing digest user interface is inadequate for support asynchronous\noperations.  For one it doesn\u0027t return a value to indicate success or\nfailure, nor does it take a per-operation descriptor which is essential\nfor the issuing of requests while other requests are still outstanding.\n\nThis patch is the first in a series of steps to remodel the interface\nfor asynchronous operations.\n\nFor the ease of transition the new interface will be known as \"hash\"\nwhile the old one will remain as \"digest\".\n\nThis patch also changes sg_next to allow chaining.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "db131ef9084110d9e82549c0a627e157e8bb99d7",
      "tree": "65330d3557a7dda47fa48876b7ea9cac1461301d",
      "parents": [
        "5cde0af2a9825dd1edaca233bd9590566579ef21"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Sep 21 11:44:08 2006 +1000"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Sep 21 11:44:08 2006 +1000"
      },
      "message": "[CRYPTO] cipher: Added block ciphers for CBC/ECB\n\nThis patch adds two block cipher algorithms, CBC and ECB.  These\nare implemented as templates on top of existing single-block cipher\nalgorithms.  They invoke the single-block cipher through the new\nencrypt_one/decrypt_one interface.\n\nThis also optimises the in-place encryption and decryption to remove\nthe cost of an IV copy each round.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "5cde0af2a9825dd1edaca233bd9590566579ef21",
      "tree": "e396297e3a2436d4a6ac77de63f95f2328c7a0fe",
      "parents": [
        "5c64097aa0f6dc4f27718ef47ca9a12538d62860"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Tue Aug 22 00:07:53 2006 +1000"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Sep 21 11:41:52 2006 +1000"
      },
      "message": "[CRYPTO] cipher: Added block cipher type\n\nThis patch adds the new type of block ciphers.  Unlike current cipher\nalgorithms which operate on a single block at a time, block ciphers\noperate on an arbitrarily long linear area of data.  As it is block-based,\nit will skip any data remaining at the end which cannot form a block.\n\nThe block cipher has one major difference when compared to the existing\nblock cipher implementation.  The sg walking is now performed by the\nalgorithm rather than the cipher mid-layer.  This is needed for drivers\nthat directly support sg lists.  It also improves performance for all\nalgorithms as it reduces the total number of indirect calls by one.\n\nIn future the existing cipher algorithm will be converted to only have\na single-block interface.  This will be done after all existing users\nhave switched over to the new block cipher type.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "2b8c19dbdc692e81243a328725a02efb77b144a5",
      "tree": "f9256d5515cc315d54971f62e0e9812d5db572ba",
      "parents": [
        "2825982d9d66ebba4b532a07391dfbb357f71c5f"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Sep 21 11:31:44 2006 +1000"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Sep 21 11:31:44 2006 +1000"
      },
      "message": "[CRYPTO] api: Add cryptomgr\n\nThe cryptomgr module is a simple manager of crypto algorithm instances.\nIt ensures that parameterised algorithms of the type tmpl(alg) (e.g.,\ncbc(aes)) are always created.\n\nThis is meant to satisfy the needs for most users.  For more complex\ncases such as deeper combinations or multiple parameters, a netlink\nmodule will be created which allows arbitrary expressions to be parsed\nin user-space.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cce9e06d100df19a327b19f23adad76e7bf63edd",
      "tree": "ce10f50679db9ed8db92912c104eef1f05efc3c5",
      "parents": [
        "9409f38a0c8773c04bff8dda8c552d7ea013d956"
      ],
      "author": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Mon Aug 21 21:08:13 2006 +1000"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Sep 21 11:16:30 2006 +1000"
      },
      "message": "[CRYPTO] api: Split out low-level API\n\nThe crypto API is made up of the part facing users such as IPsec and the\nlow-level part which is used by cryptographic entities such as algorithms.\nThis patch splits out the latter so that the two APIs are more clearly\ndelineated.  As a bonus the low-level API can now be modularised if all\nalgorithms are built as modules.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "2729bb427f686e47970406d6bde6b11892885f29",
      "tree": "6c17bab6970fc4bcc92c0de76d174e35d8043844",
      "parents": [
        "799111020c66c41aef621a3b53ad112543754124"
      ],
      "author": {
        "name": "Joachim Fritschi",
        "email": "jfritschi@freenet.de",
        "time": "Tue Jun 20 20:37:23 2006 +1000"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Thu Sep 21 11:16:27 2006 +1000"
      },
      "message": "[CRYPTO] twofish: Split out common c code\n\nThis patch splits up the twofish crypto routine into a common part ( key\nsetup  ) which will be uses by all twofish crypto modules ( generic-c , i586\nassembler and x86_64 assembler ) and generic-c part. It also creates a new\nheader file which will be used by all 3 modules.\n\nThis eliminates all code duplication.\n\nCorrectness was verified with the tcrypt module and automated test scripts.\n\nSigned-off-by: Joachim Fritschi \u003cjfritschi@freenet.de\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
