)]}'
{
  "log": [
    {
      "commit": "0174b0c30a9de25dcb0d3049defcfad0c2947a36",
      "tree": "c7d4430ea5f83b52c9074df6770ad6281735bbc3",
      "parents": [
        "0c21e3aaf6ae85bee804a325aa29c325209180fd"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Mon Jan 10 10:03:20 2011 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Mon Jan 10 10:03:39 2011 +0200"
      },
      "message": "vhost: fix signed/unsigned comparison\n\nTo detect that a sequence number is done, we are doing math on unsigned\nintegers so the result is unsigned too. Not what was intended for the \u003c\u003d\ncomparison. The result is user stuck forever in flush call.\nConvert to int to fix this.\n\nFurther, get rid of ({}) to make code clearer.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "28831ee60b79bed50958c9cb0d2e76cdc98406f9",
      "tree": "424185751ce16ac30d6374a6aed3d50dc17a924d",
      "parents": [
        "3bf9be40ff76b6df136f14a497167c116b2b3c53"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Mon Nov 29 10:22:10 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Dec 09 16:00:10 2010 +0200"
      },
      "message": "vhost: better variable name in logging\n\nWe really store a page offset in write_address,\nso rename it write_page to avoid confusion.\n\nSigned-off-by: Jason Wang \u003cjasowang@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "3bf9be40ff76b6df136f14a497167c116b2b3c53",
      "tree": "27b8f715ea2de959bb0c06ff9b99e408a0942182",
      "parents": [
        "a290aec88a9c4747353ea7aa9b2569bd61297c3c"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Mon Nov 29 10:19:07 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Dec 09 15:39:17 2010 +0200"
      },
      "message": "vhost: correctly set bits of dirty pages\n\nFix two bugs in dirty page logging:\nWhen counting pages we should increase address by 1 instead of\nVHOST_PAGE_SIZE. Make log_write() correctly process requests\nthat cross pages with write_address not starting at page boundary.\n\nReported-by: Jason Wang \u003cjasowang@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "bf5e0bd27f7cbaca4d52ae395bbf3715775efebd",
      "tree": "a08c3157e89f1c569dcdaf0e3d4c67d0a1b4913b",
      "parents": [
        "8b7347aab6865ae8a2e5a8b0f1deea12da3d3aff"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Sun Nov 14 17:33:25 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Dec 09 15:39:13 2010 +0200"
      },
      "message": "vhost: remove unused include\n\nvhost.c does not need to know about sockets,\ndon\u0027t include sock.h\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "8b7347aab6865ae8a2e5a8b0f1deea12da3d3aff",
      "tree": "3a4b901beefa1bc4f8ed5fb5efc33bf4adba8240",
      "parents": [
        "dfe5ac5b18be5b10d01a17e734a9905c0def6088"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Sun Sep 19 15:56:30 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Nov 04 13:22:12 2010 +0200"
      },
      "message": "vhost: get/put_user -\u003e __get/__put_user\n\nWe do access_ok checks on all ring values on an ioctl,\nso we don\u0027t need to redo them on each access.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "dfe5ac5b18be5b10d01a17e734a9905c0def6088",
      "tree": "c5dab52cb8c8aeb2a37546f8ff8ba340412901c7",
      "parents": [
        "64e1c80748afca3b4818ebb232a9668bf529886d"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Tue Sep 21 14:18:01 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Nov 04 13:22:11 2010 +0200"
      },
      "message": "vhost: copy_to_user -\u003e __copy_to_user\n\nWe do access_ok checks at setup time, so we don\u0027t need to\nredo them on each access.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "64e1c80748afca3b4818ebb232a9668bf529886d",
      "tree": "80f0be16eaed7b4561c54e3f4a26138848b816f4",
      "parents": [
        "533a19b4b88fcf81da3106b94f0ac4ac8b33a248"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Oct 06 15:34:45 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Nov 04 13:22:11 2010 +0200"
      },
      "message": "vhost-net: batch use/unuse mm\n\nMove use/unuse mm to vhost.c which makes it possible to batch these\noperations.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "533a19b4b88fcf81da3106b94f0ac4ac8b33a248",
      "tree": "b594af58ac551f0ac19bfb87ea2d433deaf6dcff",
      "parents": [
        "3fcedec752108de5d99b9f0373ff880756a1e87d"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Oct 06 15:34:38 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Nov 04 13:22:10 2010 +0200"
      },
      "message": "vhost: put mm after thread stop\n\nmakes it possible to batch use/unuse mm\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "3fcedec752108de5d99b9f0373ff880756a1e87d",
      "tree": "ba080912db219cb06c8fb066d74d95bce8d78d44",
      "parents": [
        "229aebb873e29726b91e076161649cf45154b0bf"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Tue Oct 26 12:25:32 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Tue Oct 26 20:39:30 2010 +0200"
      },
      "message": "drivers/vhost/vhost.c: delete double assignment\n\nDelete successive assignments to the same location.\n\nA simplified version of the semantic match that finds this problem is as\nfollows: (http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression i;\n@@\n\n*i \u003d ...;\n i \u003d ...;\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "5f05647dd81c11a6a165ccc8f0c1370b16f3bcb0",
      "tree": "7851ef1c93aa1aba7ef327ca4b75fd35e6d10f29",
      "parents": [
        "02f36038c568111ad4fc433f6fa760ff5e38fab4",
        "ec37a48d1d16c30b655ac5280209edf52a6775d4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 11:47:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 11:47:02 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1699 commits)\n  bnx2/bnx2x: Unsupported Ethtool operations should return -EINVAL.\n  vlan: Calling vlan_hwaccel_do_receive() is always valid.\n  tproxy: use the interface primary IP address as a default value for --on-ip\n  tproxy: added IPv6 support to the socket match\n  cxgb3: function namespace cleanup\n  tproxy: added IPv6 support to the TPROXY target\n  tproxy: added IPv6 socket lookup function to nf_tproxy_core\n  be2net: Changes to use only priority codes allowed by f/w\n  tproxy: allow non-local binds of IPv6 sockets if IP_TRANSPARENT is enabled\n  tproxy: added tproxy sockopt interface in the IPV6 layer\n  tproxy: added udp6_lib_lookup function\n  tproxy: added const specifiers to udp lookup functions\n  tproxy: split off ipv6 defragmentation to a separate module\n  l2tp: small cleanup\n  nf_nat: restrict ICMP translation for embedded header\n  can: mcp251x: fix generation of error frames\n  can: mcp251x: fix endless loop in interrupt handler if CANINTF_MERRF is set\n  can-raw: add msg_flags to distinguish local traffic\n  9p: client code cleanup\n  rds: make local functions/variables static\n  ...\n\nFix up conflicts in net/core/dev.c, drivers/net/pcmcia/smc91c92_cs.c and\ndrivers/net/wireless/ath/ath9k/debug.c as per David\n"
    },
    {
      "commit": "2198a10b501fd4443430cb17e065a9e859cc58c9",
      "tree": "87f3781d293da0f8f8f61615905eb7bf62b7c128",
      "parents": [
        "9941fb62762253774cc6177d0b9172ece5133fe1",
        "db5a753bf198ef7a50e17d2ff358adf37efe8648"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 21 08:43:05 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 21 08:43:05 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tnet/core/dev.c\n"
    },
    {
      "commit": "6d97e55f7172303082850c1de085d06fc1e57d17",
      "tree": "f1a309c0e0e4f4cd362adbd1cf4aca5d3a983535",
      "parents": [
        "b0057c51db66c5f0f38059f242c57d61c4741d89"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Mon Oct 11 19:24:19 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Tue Oct 12 14:32:28 2010 +0200"
      },
      "message": "vhost: fix return code for log_access_ok()\n\naccess_ok() returns 1 if it\u0027s OK otherwise it should return 0.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "556ef63255f1a6f82910a637c4164dbf7d3d1af2",
      "tree": "ae209fe4959e0837bf4eb72abc6e02c8a82179a1",
      "parents": [
        "d4f8f217b8a5d5bd02af979650418dca4caec472",
        "cb655d0f3d57c23db51b981648e452988c0223f9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 07 09:43:38 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 07 09:43:45 2010 +0200"
      },
      "message": "Merge commit \u0027v2.6.36-rc7\u0027 into core/rcu\n\nMerge reason: Update from -rc3 to -rc7.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d4f8f217b8a5d5bd02af979650418dca4caec472",
      "tree": "af047bfa9729c975e24cb7624107574e884d3a57",
      "parents": [
        "2dfbf4dfbe47a484bae20456c12b40763b9b6af7",
        "773e3f93577ffb493fb7c39b1a6ecf39b5748e87"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 07 09:43:11 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 07 09:43:11 2010 +0200"
      },
      "message": "Merge branch \u0027rcu/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-2.6-rcu into core/rcu\n"
    },
    {
      "commit": "e0e9b406470b8dd75a115cf82c4791f41615c4c3",
      "tree": "d31f3ee226e91854bc97d948a30b80c18b21fa47",
      "parents": [
        "a00eac0c459abecb539fb2a2abd3122dd7ca5d4a"
      ],
      "author": {
        "name": "Jason Wang",
        "email": "jasowang@redhat.com",
        "time": "Tue Sep 14 23:53:05 2010 +0800"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Tue Oct 05 13:33:43 2010 +0200"
      },
      "message": "vhost: max s/g to match qemu\n\nQemu supports up to UIO_MAXIOV s/g so we have to match that because guest\ndrivers may rely on this.\n\nAllocate indirect and log arrays dynamically to avoid using too much contigious\nmemory and make the length of hdr array to match the header length since each\niovec entry has a least one byte.\n\nTest with copying large files w/ and w/o migration in both linux and windows\nguests.\n\nSigned-off-by: Jason Wang \u003cjasowang@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "5786aee8bf6d747ea59595601a19e78ad33d6929",
      "tree": "63d45f00716dea2ab0813361f7af79f15ce24142",
      "parents": [
        "ee05d6939ed17b55e9c2466af32c208e0d547eb8"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Sep 22 12:31:53 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Sep 22 16:21:33 2010 +0200"
      },
      "message": "vhost: fix log ctx signalling\n\nThe log eventfd signalling got put in dead code.\nWe didn\u0027t notice because qemu currently does polling\ninstead of eventfd select.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "615cc2211c17ed05a2a5d94abdac6c340a8ea508",
      "tree": "e77b7442532bce0521f1da3cfcb985111e3ab1f1",
      "parents": [
        "87d6a412bd1ed82c14cabd4b408003b23bbd2880"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Sep 02 14:16:36 2010 +0300"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Mon Sep 06 09:49:39 2010 +0300"
      },
      "message": "vhost: error handling fix\n\nvhost should set worker to NULL on cgroups attach failure,\nso that we won\u0027t try to destroy the worker again on close.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "87d6a412bd1ed82c14cabd4b408003b23bbd2880",
      "tree": "598f8fc4a19f9b52e531ab41a1c45796358956d1",
      "parents": [
        "73457f0f836956747e0394320be2163c050e96ef"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Sep 02 14:05:30 2010 +0300"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Mon Sep 06 09:49:31 2010 +0300"
      },
      "message": "vhost: fix attach to cgroups regression\n\nSince 2.6.36-rc1, non-root users of vhost-net fail to attach\nif they are in any cgroups.\n\nThe reason is that when qemu uses vhost, vhost wants to attach\nits thread to all cgroups that qemu has.  But we got the API backwards,\nso a non-priveledged process (Qemu) tried to control\nthe priveledged one (vhost), which fails.\n\nFix this by switching to the new cgroup_attach_task_all,\nand running it from the vhost thread.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "78b620ce9e168d08ecfac2f4bb056c511b0601ec",
      "tree": "d7e59a37b115f52215190a7461cec96bd0247fb2",
      "parents": [
        "aa8a9e25c5e865de85410be4e9269b552974f7a2"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Aug 31 02:05:57 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 01 14:26:13 2010 -0700"
      },
      "message": "vhost: stop worker only if created\n\nIts currently illegal to call kthread_stop(NULL)\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "28457ee69c473a903e51e26c7bcd6f1e9eceb93e",
      "tree": "7f872922577ec45ce655d68770c95082ad858a45",
      "parents": [
        "65e6bf484c497f02d47a0faae69ee398cd59cfda"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@relay.de.ibm.com",
        "time": "Tue Mar 09 19:24:45 2010 +0100"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 21 16:27:36 2010 -0700"
      },
      "message": "vhost: add __rcu annotations\n\nAlso add rcu_dereference_protected() for code paths where locks are held.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: \"Michael S. Tsirkin\" \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "8dd014adfea6f173c1ef6378f7e5e7924866c923",
      "tree": "303df47f73c53cc4c919e3f8aca8245d50d76a08",
      "parents": [
        "9e3d195720d1c8b1e09013185ab8c3b749180fc2"
      ],
      "author": {
        "name": "David Stevens",
        "email": "dlstevens@us.ibm.com",
        "time": "Tue Jul 27 18:52:21 2010 +0300"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Jul 28 15:45:36 2010 +0300"
      },
      "message": "vhost-net: mergeable buffers support\n\nThis adds support for mergeable buffers in vhost-net: this is needed\nfor older guests without indirect buffer support, as well\nas for zero copy with some devices.\n\nIncludes changes by Michael S. Tsirkin to make the\npatch as low risk as possible (i.e., close to no changes\nwhen feature is disabled).\n\nSigned-off-by: David Stevens \u003cdlstevens@us.ibm.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "9e3d195720d1c8b1e09013185ab8c3b749180fc2",
      "tree": "365fad241060b88546d7d5523e9c5a74c968a56c",
      "parents": [
        "d7926ee38f5c6e0bbebe712304f99a4c67e40f84"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Tue Jul 27 22:56:50 2010 +0300"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Jul 28 15:45:18 2010 +0300"
      },
      "message": "vhost: apply cgroup to vhost workers\n\nApply the cgroup of the owner task to the created vhost worker.\n\nBased on patches from Sridhar Samudrala\u0027s and Tejun Heo.\nLater we\u0027ll need to also apply cpumask and probably priority\nof the owner process.\n\nDiscussion on the best way to do this is still ongoing.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Sridhar Samudrala \u003csamudrala.sridhar@gmail.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "c23f3445e68e1db0e74099f264bc5ff5d55ebdeb",
      "tree": "0a8e22e9a10c2978777954a022d721eb02e622be",
      "parents": [
        "4cfa580e7eebb8694b875d2caff3b989ada2efac"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 02 20:40:00 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Jul 28 15:44:53 2010 +0300"
      },
      "message": "vhost: replace vhost_workqueue with per-vhost kthread\n\nReplace vhost_workqueue with per-vhost kthread.  Other than callback\nargument change from struct work_struct * to struct vhost_work *,\nthere\u0027s no visible change to vhost_poll_*() interface.\n\nThis conversion is to make each vhost use a dedicated kthread so that\nresource control via cgroup can be applied.\n\nPartially based on Sridhar Samudrala\u0027s patch.\n\n* Updated to use sub structure vhost_work instead of directly using\n  vhost_poll at Michael\u0027s suggestion.\n\n* Added flusher wake_up() optimization at Michael\u0027s suggestion.\n\nChanges by MST:\n* Converted atomics/barrier use to a spinlock.\n* Create thread on SET_OWNER\n* Fix flushing\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nCc: Sridhar Samudrala \u003csamudrala.sridhar@gmail.com\u003e\n"
    },
    {
      "commit": "597e608a8492d662736c9bc6aa507dbf1cadc17d",
      "tree": "6c330cdd0a4809f67dd191b37e34f5b4318cef78",
      "parents": [
        "acbc0f039ff4b93da737c91937b7c70018ded39f",
        "33b665eeeb85956ccbdf31c4c31a4e2a31133c44"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 07 15:59:38 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 07 15:59:38 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n"
    },
    {
      "commit": "7b3384fc30633738ae4eaf8e1bc6ce70470ced80",
      "tree": "fdf56de2245e095f7e451f025cb55f7cb8a704b5",
      "parents": [
        "d5675bd204efd87a174eeea592de23c4c4e7f908"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Jul 01 18:40:12 2010 +0300"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Jul 01 19:25:40 2010 +0300"
      },
      "message": "vhost: add unlikely annotations to error path\n\npatch \u0027break out of polling loop on error\u0027 caused\na minor performance regression on my machine: recover\nthat performance by adding a bunch of unlikely annotations\nin the error handling.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "d5675bd204efd87a174eeea592de23c4c4e7f908",
      "tree": "11ec7e455d21285da68fa7db40af07ebf45f9d0e",
      "parents": [
        "38000a94a902e94ca8b5498f7871c6316de8957a"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Jun 24 16:59:59 2010 +0300"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Sun Jun 27 11:52:25 2010 +0300"
      },
      "message": "vhost: break out of polling loop on error\n\nWhen ring parsing fails, we currently handle this\nas ring empty condition. This means that we enable\nkicks and recheck ring empty: if this not empty,\nwe re-start polling which of course will fail again.\n\nInstead, let\u0027s return a negative error code and stop polling.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "0dea7c12fc2c15de8b2104a322a1f47919d753fd",
      "tree": "f6f2082164d3a1fcfe3359d02beb6f19917d4c08",
      "parents": [
        "ab95bfe01f9872459c8678572ccadbf646badad0",
        "f8322fbe049687d3676690e8ad839c7169dd306a"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 02 08:26:36 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jun 02 08:26:36 2010 -0700"
      },
      "message": "Merge branch \u0027vhost-net-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost\n"
    },
    {
      "commit": "72da3bc0cb3e82bd95f278a0c5c988e506e56d13",
      "tree": "db4bf9f9265be3216dfb3d65b49e53d8448e13e2",
      "parents": [
        "8507bb0062bff1431bbcce921efe5cd1186fcff2",
        "045de01a174d9f0734f657eb4b3313d89b4fd5ad"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 28 10:18:40 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 28 10:18:40 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (22 commits)\n  netlink: bug fix: wrong size was calculated for vfinfo list blob\n  netlink: bug fix: don\u0027t overrun skbs on vf_port dump\n  xt_tee: use skb_dst_drop()\n  netdev/fec: fix ifconfig eth0 down hang issue\n  cnic: Fix context memory init. on 5709.\n  drivers/net: Eliminate a NULL pointer dereference\n  drivers/net/hamradio: Eliminate a NULL pointer dereference\n  be2net: Patch removes redundant while statement in loop.\n  ipv6: Add GSO support on forwarding path\n  net: fix __neigh_event_send()\n  vhost: fix the memory leak which will happen when memory_access_ok fails\n  vhost-net: fix to check the return value of copy_to/from_user() correctly\n  vhost: fix to check the return value of copy_to/from_user() correctly\n  vhost: Fix host panic if ioctl called with wrong index\n  net: fix lock_sock_bh/unlock_sock_bh\n  net/iucv: Add missing spin_unlock\n  net: ll_temac: fix checksum offload logic\n  net: ll_temac: fix interrupt bug when interrupt 0 is used\n  sctp: dubious bitfields in sctp_transport\n  ipmr: off by one in __ipmr_fill_mroute()\n  ...\n"
    },
    {
      "commit": "a02c37891a9b2d7ce93f9d09455b4f67c4c23b95",
      "tree": "0d2b9b630a2ff0dab8fda16008762bcaa223ca93",
      "parents": [
        "d3553a52490dcac54f45083f8fa018e26c22e947"
      ],
      "author": {
        "name": "Takuya Yoshikawa",
        "email": "yoshikawa.takuya@oss.ntt.co.jp",
        "time": "Thu May 27 19:03:56 2010 +0900"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu May 27 13:55:17 2010 +0300"
      },
      "message": "vhost: fix the memory leak which will happen when memory_access_ok fails\n\nWe need to free newmem when vhost_set_memory() fails to complete.\n\nSigned-off-by: Takuya Yoshikawa \u003cyoshikawa.takuya@oss.ntt.co.jp\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "7ad9c9d27048547e96e4e3a13b5780ec6f81bb9f",
      "tree": "0f70562d0f51c086b02953388578bd87040b5067",
      "parents": [
        "0f3d9a17469d71ba1bab79c07c8eecb9e26e60af"
      ],
      "author": {
        "name": "Takuya Yoshikawa",
        "email": "yoshikawa.takuya@oss.ntt.co.jp",
        "time": "Thu May 27 18:58:03 2010 +0900"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu May 27 13:54:59 2010 +0300"
      },
      "message": "vhost: fix to check the return value of copy_to/from_user() correctly\n\ncopy_to/from_user() returns the number of bytes that could not be copied.\n\nSo we need to check if it is not zero, and in that case, we should return\nthe error number -EFAULT rather than directly return the return value from\ncopy_to/from_user().\n\nSigned-off-by: Takuya Yoshikawa \u003cyoshikawa.takuya@oss.ntt.co.jp\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "f8322fbe049687d3676690e8ad839c7169dd306a",
      "tree": "8eaa9cd9b534a9867e50e75716e1e6f66150a48c",
      "parents": [
        "dd1f4078f0d2de74a308f00a2dffbd550cfba59f"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu May 27 12:28:03 2010 +0300"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu May 27 12:28:03 2010 +0300"
      },
      "message": "vhost: whitespace fix\n\nFix up whitespace in vq_memory_access_ok.\n\nReported-by: Aristeu Rozanski \u003caris@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "0f3d9a17469d71ba1bab79c07c8eecb9e26e60af",
      "tree": "a94a0c4e8a224261b3e2cb6f1329056f80d4e7b2",
      "parents": [
        "8a74ad60a546b13bd1096b2a61a7a5c6fd9ae17c"
      ],
      "author": {
        "name": "Krishna Kumar",
        "email": "krkumar2@in.ibm.com",
        "time": "Tue May 25 11:10:36 2010 +0530"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu May 27 12:19:02 2010 +0300"
      },
      "message": "vhost: Fix host panic if ioctl called with wrong index\n\nMissed a boundary value check in vhost_set_vring. The host panics if\nidx \u003d\u003d nvqs is used in ioctl commands in vhost_virtqueue_init.\n\nSigned-off-by: Krishna Kumar \u003ckrkumar2@in.ibm.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "4be929be34f9bdeffa40d815d32d7d60d2c7f03b",
      "tree": "4d2c6e2b8ef766e565e2e050ee151de2e02081d3",
      "parents": [
        "940370fc86b920b51a34217a1facc3e9e97c2456"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 24 14:33:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:07:02 2010 -0700"
      },
      "message": "kernel-wide: replace USHORT_MAX, SHORT_MAX and SHORT_MIN with USHRT_MAX, SHRT_MAX and SHRT_MIN\n\n- C99 knows about USHRT_MAX/SHRT_MAX/SHRT_MIN, not\n  USHORT_MAX/SHORT_MAX/SHORT_MIN.\n\n- Make SHRT_MIN of type s16, not int, for consistency.\n\n[akpm@linux-foundation.org: fix drivers/dma/timb_dma.c]\n[akpm@linux-foundation.org: fix security/keys/keyring.c]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6811d58fc148c393f80a9f5a9db49d7e75cdc546",
      "tree": "c25d5b0e49ec848943d35f819e748d157ccb492e",
      "parents": [
        "c4949f074332a64baeb2ead6ab9319ca37642f96",
        "c02db8c6290bb992442fec1407643c94cc414375"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 16 22:26:58 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun May 16 22:26:58 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tinclude/linux/if_link.h\n"
    },
    {
      "commit": "0d4993563bde70bc7c7718686bc5c5c089733001",
      "tree": "c436326c77afc9cd1c9e0315e313d6ba2502c160",
      "parents": [
        "de02d72bb3cc5b3d4c873db4ca8291723dd48479"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Tue May 11 19:44:17 2010 +0300"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed May 12 18:04:04 2010 +0300"
      },
      "message": "vhost: fix barrier pairing\n\nAccording to memory-barriers.txt, an smp memory barrier in guest\nshould always be paired with an smp memory barrier in host,\nand I quote \"a lack of appropriate pairing is almost certainly an\nerror\". In case of vhost, failure to flush out used index\nupdate before looking at the interrupt disable flag\ncould result in missed interrupts, resulting in\nnetworking hang under stress.\n\nThis might happen when flags read bypasses used index write.\nSo we see interrupts disabled and do not interrupt, at the\nsame time guest writes flags value to enable interrupt,\nreads an old used index value, thinks that\nused ring is empty and waits for interrupt.\n\nNote: the barrier we pair with here is in\ndrivers/virtio/virtio_ring.c, function\nvring_enable_cb.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nAcked-by: Juan Quintela \u003cquintela@redhat.com\u003e\n"
    },
    {
      "commit": "fea069152614cdeefba4b2bf80afcddb9c217fc8",
      "tree": "97a4ca0c1afabe94b69110409a46347a093cff45",
      "parents": [
        "5f6c01819979afbfec7e0b15fe52371b8eed87e8",
        "a8d3782f9ea7574b8648e69bbb05a0b1d93e437e"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 14 22:52:46 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 14 22:52:46 2010 -0700"
      },
      "message": "Merge branch \u0027vhost\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost\n"
    },
    {
      "commit": "a8d3782f9ea7574b8648e69bbb05a0b1d93e437e",
      "tree": "f21fa3d22453b5f701c49b2ed7f906f15bc63944",
      "parents": [
        "179b284e2fc0c638035843968f7d7ab8ab701525"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 13 14:11:25 2010 -0400"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Apr 14 11:52:08 2010 +0300"
      },
      "message": "vhost: fix sparse warnings\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "4a1032faac94ebbf647460ae3e06fc21146eb280",
      "tree": "7f31b97beb0406faa1523e619289ad0ab07c9787",
      "parents": [
        "ae4e8d63b5619d4d95f1d2bfa2b836caa6e62d06",
        "0eddb519b9127c73d53db4bf3ec1d45b13f844d1"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 02:44:30 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Apr 11 02:44:30 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of /home/davem/src/GIT/linux-2.6/\n"
    },
    {
      "commit": "179b284e2fc0c638035843968f7d7ab8ab701525",
      "tree": "6876a4fa365d13be8fb137856bf183e4085f77d7",
      "parents": [
        "535297a6ae4c3b7a0562e71fac15c213eeec68e7"
      ],
      "author": {
        "name": "Jeff Dike",
        "email": "jdike@addtoit.com",
        "time": "Wed Apr 07 09:59:10 2010 -0400"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Apr 07 17:04:45 2010 +0300"
      },
      "message": "vhost-net: fix vq_memory_access_ok error checking\n\nvq_memory_access_ok needs to check whether mem \u003d\u003d NULL\n\nSigned-off-by: Jeff Dike \u003cjdike@linux.intel.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "535297a6ae4c3b7a0562e71fac15c213eeec68e7",
      "tree": "878526e743260b3666e36fb0655c0800a5d21afc",
      "parents": [
        "0e255572121180c900e24e33b87047abd8153cce"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Mar 17 16:06:11 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Mar 17 23:07:35 2010 +0200"
      },
      "message": "vhost: fix error handling in vring ioctls\n\nStanse found a locking problem in vhost_set_vring:\nseveral returns from VHOST_SET_VRING_KICK, VHOST_SET_VRING_CALL,\nVHOST_SET_VRING_ERR with the vq-\u003emutex held.\nFix these up.\n\nReported-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nAcked-by: Laurent Chavey \u003cchavey@google.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "d6db3f5c11dc7ed5712d5d5682aa34025ee5248e",
      "tree": "30d7c7dd5987be4185943de23db686027e1a0867",
      "parents": [
        "73a99f083009d67d8e12603420e008d5c21b0b7d"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Tue Feb 23 11:25:23 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Sun Feb 28 19:42:36 2010 +0200"
      },
      "message": "vhost: fix get_user_pages_fast error handling\n\nget_user_pages_fast returns number of pages on success, negative value\non failure, but never 0. Fix vhost code to match this logic.\n\nReviewed-by: Juan Quintela \u003cquintela@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "73a99f083009d67d8e12603420e008d5c21b0b7d",
      "tree": "01937177ec99507ec28b912c0cadebd37f0becdb",
      "parents": [
        "86e9424d7252bae5ad1c17b4b8088193e6b27cbe"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Tue Feb 23 11:23:45 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Sun Feb 28 19:42:35 2010 +0200"
      },
      "message": "vhost: initialize log eventfd context pointer\n\nvq log eventfd context pointer needs to be initialized, otherwise\noperation may fail or oops if log is enabled but log eventfd not set by\nuserspace.  When log_ctx for device is created, it is copied to the vq.\nThis reset was missing.\n\nReviewed-by: Juan Quintela \u003cquintela@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "86e9424d7252bae5ad1c17b4b8088193e6b27cbe",
      "tree": "ff6bbcf61d5518bd4e06f4cd09c20a4b1f6fcaa4",
      "parents": [
        "655ffee284dfcf9a24ac0343f3e5ee6db85b85c5"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Feb 17 19:11:33 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Sun Feb 28 19:42:35 2010 +0200"
      },
      "message": "vhost: logging thinko fix\n\nvhost was dong some complex math to get\noffset to log at, and got it wrong by a couple of bytes,\nwhile in fact it\u0027s simple: get address where we write,\nsubtract start of buffer, add log base.\n\nDo it this way.\n\nReviewed-by: Juan Quintela \u003cquintela@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "5659338c88963ea791118e5e11e314b24f90c3eb",
      "tree": "1fbaa549d012e2ba9cd327ed6ac5dbcc773a0244",
      "parents": [
        "f10a1f2e7e93a35cb603b63090ff0e70a576a641"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Mon Feb 01 07:21:02 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Feb 14 22:42:53 2010 -0800"
      },
      "message": "vhost-net: switch to smp barriers\n\nvhost-net only uses memory barriers to control SMP effects\n(communication with userspace potentially running on a different CPU),\nso it should use SMP barriers and not mandatory barriers for memory\naccess ordering, as suggested by Documentation/memory-barriers.txt\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3a4d5c94e959359ece6d6b55045c3f046677f55c",
      "tree": "113cfe31540e3d77925837f6990c3284d425bfd1",
      "parents": [
        "5da779c34ccff5e1e617892b6c8bd8260fb1f04c"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Jan 14 06:17:27 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jan 15 01:43:29 2010 -0800"
      },
      "message": "vhost_net: a kernel-level virtio server\n\nWhat it is: vhost net is a character device that can be used to reduce\nthe number of system calls involved in virtio networking.\nExisting virtio net code is used in the guest without modification.\n\nThere\u0027s similarity with vringfd, with some differences and reduced scope\n- uses eventfd for signalling\n- structures can be moved around in memory at any time (good for\n  migration, bug work-arounds in userspace)\n- write logging is supported (good for migration)\n- support memory table and not just an offset (needed for kvm)\n\ncommon virtio related code has been put in a separate file vhost.c and\ncan be made into a separate module if/when more backends appear.  I used\nRusty\u0027s lguest.c as the source for developing this part : this supplied\nme with witty comments I wouldn\u0027t be able to write myself.\n\nWhat it is not: vhost net is not a bus, and not a generic new system\ncall. No assumptions are made on how guest performs hypercalls.\nUserspace hypervisors are supported as well as kvm.\n\nHow it works: Basically, we connect virtio frontend (configured by\nuserspace) to a backend. The backend could be a network device, or a tap\ndevice.  Backend is also configured by userspace, including vlan/mac\netc.\n\nStatus: This works for me, and I haven\u0027t see any crashes.\nCompared to userspace, people reported improved latency (as I save up to\n4 system calls per packet), as well as better bandwidth and CPU\nutilization.\n\nFeatures that I plan to look at in the future:\n- mergeable buffers\n- zero copy\n- scalability tuning: figure out the best threading model to use\n\nNote on RCU usage (this is also documented in vhost.h, near\nprivate_pointer which is the value protected by this variant of RCU):\nwhat is happening is that the rcu_dereference() is being used in a\nworkqueue item.  The role of rcu_read_lock() is taken on by the start of\nexecution of the workqueue item, of rcu_read_unlock() by the end of\nexecution of the workqueue item, and of synchronize_rcu() by\nflush_workqueue()/flush_work(). In the future we might need to apply\nsome gcc attribute or sparse annotation to the function passed to\nINIT_WORK(). Paul\u0027s ack below is for this RCU usage.\n\n(Includes fixes by Alan Cox \u003calan@linux.intel.com\u003e,\nDavid L Stevens \u003cdlstevens@us.ibm.com\u003e,\nChris Wright \u003cchrisw@redhat.com\u003e)\n\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ]
}
