)]}'
{
  "log": [
    {
      "commit": "5e18247b02d60a1ea4bf98c05e139461ca9aec64",
      "tree": "ccb92d5f599413e138fd148594c04d9f3aa43701",
      "parents": [
        "fca540ab5f4718c6133f71f7be1793066008bf89"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Tue Jan 18 13:04:43 2011 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Tue Feb 01 16:48:46 2011 +0200"
      },
      "message": "vhost: rcu annotation fixup\n\nWhen built with rcu checks enabled, vhost triggers\nbogus warnings as vhost features are read without\ndev-\u003emutex sometimes, and private pointer is read\nwith our kind of rcu where work serves as a\nread side critical section.\n\nFixing it properly is not trivial.\nDisable the warnings by stubbing out the checks for now.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "9fe146aef44afe5ec677d8150b6ae94e09b773f7",
      "tree": "25342064d136f582e57c6c2ebf4ec62dc8c71576",
      "parents": [
        "6389aa73ab8c15084fce18307a8e198eaff818da",
        "4e53f78e5b06c073a5c10814c72e98c1ca8a9f10"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 14 11:33:23 2010 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Dec 14 11:33:23 2010 -0800"
      },
      "message": "Merge branch \u0027vhost-net-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost\n"
    },
    {
      "commit": "a290aec88a9c4747353ea7aa9b2569bd61297c3c",
      "tree": "c9d46a48b3f6f8f6986e746f54683241dc0b287c",
      "parents": [
        "bf5e0bd27f7cbaca4d52ae395bbf3715775efebd"
      ],
      "author": {
        "name": "Jason Wang",
        "email": "jasowang@redhat.com",
        "time": "Mon Nov 29 13:48:40 2010 +0800"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Dec 09 15:39:15 2010 +0200"
      },
      "message": "vhost: fix typos in comment\n\nSigned-off-by: Jason Wang \u003cjasowang@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "11cd1a8b8cad1acfc140d9acce93762a9c140b20",
      "tree": "7714d74c5525950d73ed7e2f80f687a8b62ed85f",
      "parents": [
        "a27e13d370415add3487949c60810e36069a23a6"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Sun Nov 14 17:31:52 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Nov 25 11:29:16 2010 +0200"
      },
      "message": "vhost/net: fix rcu check usage\n\nIncorrect rcu check was used as rcu isn\u0027t done\nunder mutex here. Force check to 1 for now,\nto stop it from complaining.\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": "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": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\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": "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": "ee05d6939ed17b55e9c2466af32c208e0d547eb8",
      "tree": "72c0737e0c0ac93a9fd58970f5c5d95ca3c67914",
      "parents": [
        "053d8f6622701f849fda2ca2c9ae596c13599ba9"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Tue Sep 14 15:15:52 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Tue Sep 14 15:22:41 2010 +0200"
      },
      "message": "vhost-net: fix range checking in mrg bufs case\n\nIn mergeable buffer case, we use headcount, log_num\nand seg as indexes in same-size arrays, and\nwe know that headcount \u003c\u003d seg and\nlog_num equals either 0 or seg.\n\nTherefore, the right thing to do is range-check seg,\nnot headcount as we do now: these will be different\nif guest chains s/g descriptors (this does not\nhappen now, but we can not trust the guest).\n\nLong term, we should add BUG_ON checks to verify\ntwo other indexes are what we think they should be.\n\nReported-by: Jason Wang \u003cjasowang@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\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": "6ba74014c1ab0e37af7de6f64b4eccbbae3cb9e7",
      "tree": "8f3892fc44f1e403675a6d7e88fda5c70e56ee4c",
      "parents": [
        "5abd9ccced7a726c817dd6b5b96bc933859138d1",
        "3ff1c25927e3af61c6bf0e4ed959504058ae4565"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 04 11:47:58 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 04 11:47:58 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: (1443 commits)\n  phy/marvell: add 88ec048 support\n  igb: Program MDICNFG register prior to PHY init\n  e1000e: correct MAC-PHY interconnect register offset for 82579\n  hso: Add new product ID\n  can: Add driver for esd CAN-USB/2 device\n  l2tp: fix export of header file for userspace\n  can-raw: Fix skb_orphan_try handling\n  Revert \"net: remove zap_completion_queue\"\n  net: cleanup inclusion\n  phy/marvell: add 88e1121 interface mode support\n  u32: negative offset fix\n  net: Fix a typo from \"dev\" to \"ndev\"\n  igb: Use irq_synchronize per vector when using MSI-X\n  ixgbevf: fix null pointer dereference due to filter being set for VLAN 0\n  e1000e: Fix irq_synchronize in MSI-X case\n  e1000e: register pm_qos request on hardware activation\n  ip_fragment: fix subtracting PPPOE_SES_HLEN from mtu twice\n  net: Add getsockopt support for TCP thin-streams\n  cxgb4: update driver version\n  cxgb4: add new PCI IDs\n  ...\n\nManually fix up conflicts in:\n - drivers/net/e1000e/netdev.c: due to pm_qos registration\n   infrastructure changes\n - drivers/net/phy/marvell.c: conflict between adding 88ec048 support\n   and cleaning up the IDs\n - drivers/net/wireless/ipw2x00/ipw2100.c: trivial ipw2100_pm_qos_req\n   conflict (registration change vs marking it static)\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": "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": "4c3e5edf2f33546392fbd9beaae04e9bed7304ff",
      "tree": "b1ea5d3b8c139ca9a9edf65cd3e7ac4606053ace",
      "parents": [
        "3f30fc1570626f11e8f3efe5ebd41fe96e847ed1"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 21 21:09:23 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Jul 21 21:09:23 2010 -0700"
      },
      "message": "vhost net: Fix warning.\n\nReported by Stephen Rothwell.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "11fe883936980fe242869d671092a466cf1db3e3",
      "tree": "14ff24e81eb4326e94eb5aa6432a1dd55cef5ece",
      "parents": [
        "70d4bf6d467a330ccc947df9b2608e329d9e7708",
        "573201f36fd9c7c6d5218cdcd9948cee700b277d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 20 18:25:24 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 20 18:25:24 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/vhost/net.c\n\tnet/bridge/br_device.c\n\nFix merge conflict in drivers/vhost/net.c with guidance from\nStephen Rothwell.\n\nRevert the effects of net-2.6 commit 573201f36fd9c7c6d5218cdcd9948cee700b277d\nsince net-next-2.6 has fixes that make bridge netpoll work properly thus\nwe don\u0027t need it disabled.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "516bd664153d76f5c814633cee6500e2ff8e861b",
      "tree": "f67a1c70b013961849d3491ef22596cd0b0d9af9",
      "parents": [
        "844b9a8707f1fcf0482e0c52f44a555e799ccda6",
        "573201f36fd9c7c6d5218cdcd9948cee700b277d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 20 16:26:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 20 16:26:42 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: (24 commits)\n  bridge: Partially disable netpoll support\n  tcp: fix crash in tcp_xmit_retransmit_queue\n  IPv6: fix CoA check in RH2 input handler (mip6_rthdr_input())\n  ibmveth: lost IRQ while closing/opening device leads to service loss\n  rt2x00: Fix lockdep warning in rt2x00lib_probe_dev()\n  vhost: avoid pr_err on condition guest can trigger\n  ipmr: Don\u0027t leak memory if fib lookup fails.\n  vhost-net: avoid flush under lock\n  net: fix problem in reading sock TX queue\n  net/core: neighbour update Oops\n  net: skb_tx_hash() fix relative to skb_orphan_try()\n  rfs: call sock_rps_record_flow() in tcp_splice_read()\n  xfrm: do not assume that template resolving always returns xfrms\n  hostap_pci: set dev-\u003ebase_addr during probe\n  axnet_cs: use spin_lock_irqsave in ax_interrupt\n  dsa: Fix Kconfig dependencies.\n  act_nat: not all of the ICMP packets need an IP header payload\n  r8169: incorrect identifier for a 8168dp\n  Phonet: fix skb leak in pipe endpoint accept()\n  Bluetooth: Update sec_level/auth_type for already existing connections\n  ...\n"
    },
    {
      "commit": "95c0ec6a97ae82d39a6e13fc01aa76861a4a76d0",
      "tree": "a581adc7aa2fdd2330790adb3e76b93b112c3ef4",
      "parents": [
        "1680e9063ea28099a1efa8ca11cee069cc7a9bc3"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Jun 24 17:10:25 2010 +0300"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Fri Jul 16 12:18:17 2010 +0300"
      },
      "message": "vhost: avoid pr_err on condition guest can trigger\n\nGuest can trigger packet truncation by posting\na very short buffer and disabling buffer merging.\nConvert pr_err to pr_debug to avoid log from filling\nup when this happens.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "1680e9063ea28099a1efa8ca11cee069cc7a9bc3",
      "tree": "92fda29b75a081151d6e460f7ae8ec874517b6e5",
      "parents": [
        "7b3384fc30633738ae4eaf8e1bc6ce70470ced80"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Jul 15 15:19:12 2010 +0300"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Jul 15 15:26:12 2010 +0300"
      },
      "message": "vhost-net: avoid flush under lock\n\nWe flush under vq mutex when changing backends.\nThis creates a deadlock as workqueue being flushed\nneeds this lock as well.\n\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d612421\n\nDrop the vq mutex before flush: we have the device mutex\nwhich is sufficient to prevent another ioctl from touching\nthe vq.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "2aa72f612144a0a7d4b0b22ae7c122692ac6a013",
      "tree": "8af2d2ac975887a04b4e4109de3d785f7046979b",
      "parents": [
        "78178c7d6e127fff6dba027315fd6914304b05cf",
        "33b665eeeb85956ccbdf31c4c31a4e2a31133c44"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 07 19:56:00 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 07 19:56:00 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: (35 commits)\n  NET: SB1250: Initialize .owner\n  vxge: show startup message with KERN_INFO\n  ll_temac: Fix missing iounmaps\n  bridge: Clear IPCB before possible entry into IP stack\n  bridge br_multicast: BUG: unable to handle kernel NULL pointer dereference\n  net: Fix definition of netif_vdbg() when VERBOSE_DEBUG is defined\n  net/ne: fix memory leak in ne_drv_probe()\n  xfrm: fix xfrm by MARK logic\n  virtio_net: fix oom handling on tx\n  virtio_net: do not reschedule rx refill forever\n  s2io: resolve statistics issues\n  linux/net.h: fix kernel-doc warnings\n  net: decreasing real_num_tx_queues needs to flush qdisc\n  sched: qdisc_reset_all_tx is calling qdisc_reset without qdisc_lock\n  qlge: fix a eeh handler to not add a pending timer\n  qlge: Replacing add_timer() to mod_timer()\n  usbnet: Set parent device early for netdev_printk()\n  net: Revert \"rndis_host: Poll status channel before control channel\"\n  netfilter: ip6t_REJECT: fix a dst leak in ipv6 REJECT\n  drivers: bluetooth: bluecard_cs.c: Fixed include error, changed to linux/io.h\n  ...\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": "79907d89c397b8bc2e05b347ec94e928ea919d33",
      "tree": "1f0047491ef1424272f14a032acf01f569fe84c4",
      "parents": [
        "84f7586edab93052bbe7eb72e1e9bce5f7b6ae45"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@linux.intel.com",
        "time": "Wed Jun 09 09:39:49 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 09 08:50:31 2010 -0700"
      },
      "message": "misc: Fix allocation \u0027borrowed\u0027 by vhost_net\n\n10, 233 is allocated officially to /dev/kmview which is shipping in\nUbuntu and Debian distributions.  vhost_net seem to have borrowed it\nwithout making a proper request and this causes regressions in the other\ndistributions.\n\nvhost_net can use a dynamic minor so use that instead.  Also update the\nfile with a comment to try and avoid future misunderstandings.\n\ncc: stable@kernel.org\nSigned-off-by: Alan Cox \u003cdevice@lanana.org\u003e\n[ We should have caught this before 2.6.34 got released.  - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "d3553a52490dcac54f45083f8fa018e26c22e947",
      "tree": "7a9d272840b3e7d106d30b93d71a0c36a3c30790",
      "parents": [
        "7ad9c9d27048547e96e4e3a13b5780ec6f81bb9f"
      ],
      "author": {
        "name": "Takuya Yoshikawa",
        "email": "yoshikawa.takuya@oss.ntt.co.jp",
        "time": "Thu May 27 19:01:58 2010 +0900"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu May 27 13:55:13 2010 +0300"
      },
      "message": "vhost-net: 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": "dd1f4078f0d2de74a308f00a2dffbd550cfba59f",
      "tree": "d8a31277e7d37bc2fdda54abe0837bc829074c6f",
      "parents": [
        "373a83a6997bfdaf767f6a65fc5cc0054b246984"
      ],
      "author": {
        "name": "Jeff Dike",
        "email": "jdike@addtoit.com",
        "time": "Thu Mar 04 16:10:14 2010 -0500"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu May 27 12:25:37 2010 +0300"
      },
      "message": "vhost-net: minor cleanup\n\nDelete a label and goto from vhost_net_set_backend\nInverting a test allows a label and goto to be eliminated.\n\nSigned-off-by: Jeff Dike \u003cjdike@linux.intel.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "373a83a6997bfdaf767f6a65fc5cc0054b246984",
      "tree": "a57a01ac7a1aea068a9664f587ce0899b557e2fb",
      "parents": [
        "7a9b149212f3716c598afe973b6261fd58453b7a"
      ],
      "author": {
        "name": "Tobias Klauser",
        "email": "tklauser@distanz.ch",
        "time": "Mon May 17 15:12:49 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu May 27 12:23:49 2010 +0300"
      },
      "message": "vhost: Storage class should be before const qualifier\n\nThe C99 specification states in section 6.11.5:\n\nThe placement of a storage-class specifier other than at the beginning\nof the declaration specifiers in a declaration is an obsolescent\nfeature.\n\nSigned-off-by: Tobias Klauser \u003ctklauser@distanz.ch\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@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": "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": "0e255572121180c900e24e33b87047abd8153cce",
      "tree": "f28e91b088f7a751ef8349a226e7d7c4c7046756",
      "parents": [
        "1dace8c801ac531022bd31a7316a6b4351837617"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Mon Mar 08 23:24:22 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Mar 17 16:44:20 2010 +0200"
      },
      "message": "vhost: fix interrupt mitigation with raw sockets\n\nA thinko in code means we never trigger interrupt\nmitigation. Fix this.\n\nReported-by: Juan Quintela \u003cquintela@redhat.com\u003e\nReported-by: Unai Uribarri \u003cunai.uribarri@optenet.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "1dace8c801ac531022bd31a7316a6b4351837617",
      "tree": "4a2edd69b3fb495a5eaaf7426e8a49ad5a56f990",
      "parents": [
        "39286fa41a8b2c6a9c1f656a7b3c3efca95bc1b9"
      ],
      "author": {
        "name": "Jeff Dike",
        "email": "jdike@addtoit.com",
        "time": "Thu Mar 04 16:10:14 2010 -0500"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Sun Mar 07 13:28:53 2010 +0200"
      },
      "message": "vhost: fix error path in vhost_net_set_backend\n\nAn error could cause vhost_net_set_backend to exit without unlocking\nvq-\u003emutex. Fix this.\n\nSigned-off-by: Jeff Dike \u003cjdike@linux.intel.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "39286fa41a8b2c6a9c1f656a7b3c3efca95bc1b9",
      "tree": "1639935ff004a1ba9452314bd8921f81058bb29a",
      "parents": [
        "d6db3f5c11dc7ed5712d5d5682aa34025ee5248e"
      ],
      "author": {
        "name": "Sridhar Samudrala",
        "email": "samudrala@us.ibm.com",
        "time": "Sun Feb 28 19:39:16 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Sun Feb 28 19:50:33 2010 +0200"
      },
      "message": "vhost-net: restart tx poll on sk_sndbuf full\n\nguest to remote communication with vhost net sometimes stops until\nguest driver is restarted. This happens when we get guest kick precisely\nwhen the backend send queue is full, as a result handle_tx() returns without\npolling backend. This patch fixes this by restarting tx poll on this condition.\n\nSigned-off-by: Sridhar Samudrala \u003csamudrala@us.ibm.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nTested-by: Tom Lendacky \u003ctoml@us.ibm.com\u003e\n"
    },
    {
      "commit": "501c774cb13c3ef8fb7fc5f08fa19473f7d9a0db",
      "tree": "65db25ce76a5c038d69c304d9b6456e4f68e9f47",
      "parents": [
        "02df55d28c6001a3cdb7a997a34a0b01f01d015e"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Thu Feb 18 05:46:50 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 18 14:08:38 2010 -0800"
      },
      "message": "net/macvtap: add vhost support\n\nThis adds support for passing a macvtap file descriptor into\nvhost-net, much like we already do for tun/tap.\n\nMost of the new code is taken from the respective patch\nin the tun driver and may get consolidated in the future.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Sridhar Samudrala \u003csri@us.ibm.com\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"
    }
  ]
}
