)]}'
{
  "log": [
    {
      "commit": "07fe9977b6234ede1bd29e10e0323e478860c871",
      "tree": "802e48e78503b82953b9ff415f882fb6edb05dbc",
      "parents": [
        "39082f7e5912cdc70f9ab0767e7342711f34b9f8"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "dave@gnu.org",
        "time": "Thu Jan 12 15:44:47 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 12 15:44:47 2012 +1030"
      },
      "message": "lguest: move the lguest tool to the tools directory\n\nThis is a better location instead of having it in Documentation.\n\nSigned-off-by: Davidlohr Bueso \u003cdave@gnu.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (fixed compile)\n"
    },
    {
      "commit": "395cf9691d72173d8cdaa613c5f0255f993af94b",
      "tree": "813be524794fe1c0850805d7faca90e45fd0e60b",
      "parents": [
        "e060c38434b2caa78efe7cedaff4191040b65a15"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Mon Aug 15 02:02:26 2011 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Sep 27 18:08:04 2011 +0200"
      },
      "message": "doc: fix broken references\n\nThere are numerous broken references to Documentation files (in other\nDocumentation files, in comments, etc.). These broken references are\ncaused by typo\u0027s in the references, and by renames or removals of the\nDocumentation files. Some broken references are simply odd.\n\nFix these broken references, sometimes by dropping the irrelevant text\nthey were part of.\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "e22a539824e8ddb82c87b4f415165ede82e6ab56",
      "tree": "39d68ab2ad811abc19a1fc1595fd71a37df43aae",
      "parents": [
        "c3c53a073247ee7522ca80393319540db9f4dc1e"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Aug 15 10:15:10 2011 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Aug 15 10:15:10 2011 +0930"
      },
      "message": "lguest: allow booting guest with CONFIG_RELOCATABLE\u003dy\n\nThe CONFIG_RELOCATABLE code tries to align the unpack destination to\nthe value of \u0027kernel_alignment\u0027 in the setup_hdr.  If that\u0027s 0, it\ntries to unpack to address 0, which in fact causes the gunzip code\nto call \u0027error(\"Out of memory while allocating output buffer\")\u0027.\n\nThe bootloader (ie. the lguest Launcher in this case) should be doing\nsetting this field; the normal bzImage is 16M, we can use the same.\n\nReported-by: Stefanos Geraggelos \u003csgerag@cslab.ece.ntua.gr\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "9f54288def3f92b7805eb6d4b1ddcd73ecf6e889",
      "tree": "bb46242a92e47112c2967354b3be0c6daecae7a7",
      "parents": [
        "3c3ed482dc077a67903a58c9e1aedba1bb18c18a"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:50 2011 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:50 2011 +0930"
      },
      "message": "lguest: update comments\n\nAlso removes a long-unused #define and an extraneous semicolon.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "3c3ed482dc077a67903a58c9e1aedba1bb18c18a",
      "tree": "ad3987515d68fcfa7155574e53ab47aabd41e593",
      "parents": [
        "6d7a5d1ea34495ecb1d608f0e40afba7776ee408"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:49 2011 +0930"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:49 2011 +0930"
      },
      "message": "lguest: Simplify device initialization.\n\nWe used to notify the Host every time we updated a device\u0027s status.  However,\nit only really needs to know when we\u0027re resetting the device, or failed to\ninitialize it, or when we\u0027ve finished our feature negotiation.\n\nIn particular, we used to wait for VIRTIO_CONFIG_S_DRIVER_OK in the\nstatus byte before starting the device service threads.  But this\ncorresponds to the successful finish of device initialization, which\nmight (like virtio_blk\u0027s partition scanning) use the device.  So we\nhad a hack, if they used the device before we expected we started the\nthreads anyway.\n\nNow we hook into the finalize_features hook in the Guest: at that\npoint we tell the Launcher that it can rely on the features we have\nacked.  On the Launcher side, we look at the status at that point, and\nstart servicing the device.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e0377e25206328998d036cafddcd00a7c3252e3e",
      "tree": "6cd94c5510d439b8af4ae0ae85deeab8c1c5bdd8",
      "parents": [
        "02f8c6aee8df3cdc935e9bdd4f2d020306035dbe"
      ],
      "author": {
        "name": "Sakari Ailus",
        "email": "sakari.ailus@iki.fi",
        "time": "Sun Jun 26 19:36:46 2011 +0300"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 22 14:39:48 2011 +0930"
      },
      "message": "lguest: Do not exit on non-fatal errors\n\nDo not exit on some non-fatal errors:\n\n- writev() fails in net_output(). The result is a lost packet or packets.\n- writev() fails in console_output(). The result is partially lost console\noutput.\n- readv() fails in net_input(). The result is a lost packet or packets.\n\nRather than bringing the guest down, this patch ignores e.g. an allocation\nfailure on the host side. Example:\n\nlguest: page allocation failure. order:4, mode:0x4d0\nPid: 4045, comm: lguest Tainted: G        W   2.6.36 #1\nCall Trace:\n [\u003cc138d614\u003e] ? printk+0x18/0x1c\n [\u003cc106a4e2\u003e] __alloc_pages_nodemask+0x4d2/0x570\n [\u003cc1087954\u003e] cache_alloc_refill+0x2a4/0x4d0\n [\u003cc1305149\u003e] ? __netif_receive_skb+0x189/0x270\n [\u003cc1087c5a\u003e] __kmalloc+0xda/0xf0\n [\u003cc12fffa5\u003e] __alloc_skb+0x55/0x100\n [\u003cc1305519\u003e] ? net_rx_action+0x79/0x100\n [\u003cc12fafed\u003e] sock_alloc_send_pskb+0x18d/0x280\n [\u003cc11fda25\u003e] ? _copy_from_user+0x35/0x130\n [\u003cc13010b6\u003e] ? memcpy_fromiovecend+0x56/0x80\n [\u003cc12a74dc\u003e] tun_chr_aio_write+0x1cc/0x500\n [\u003cc108a125\u003e] do_sync_readv_writev+0x95/0xd0\n [\u003cc11fda25\u003e] ? _copy_from_user+0x35/0x130\n [\u003cc1089fa8\u003e] ? rw_copy_check_uvector+0x58/0x100\n [\u003cc108a7bc\u003e] do_readv_writev+0x9c/0x1d0\n [\u003cc12a7310\u003e] ? tun_chr_aio_write+0x0/0x500\n [\u003cc108a93a\u003e] vfs_writev+0x4a/0x60\n [\u003cc108aa21\u003e] sys_writev+0x41/0x80\n [\u003cc138f061\u003e] syscall_call+0x7/0xb\nMem-Info:\nDMA per-cpu:\nCPU    0: hi:    0, btch:   1 usd:   0\nNormal per-cpu:\nCPU    0: hi:  186, btch:  31 usd:   0\nHighMem per-cpu:\nCPU    0: hi:  186, btch:  31 usd:   0\nactive_anon:134651 inactive_anon:50543 isolated_anon:0\n active_file:96881 inactive_file:132007 isolated_file:0\n unevictable:0 dirty:3 writeback:0 unstable:0\n free:91374 slab_reclaimable:6300 slab_unreclaimable:2802\n mapped:2281 shmem:9 pagetables:330 bounce:0\nDMA free:3524kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:8kB active_file:8760kB inactive_file:2760kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15868kB mlocked:0kB dirty:0kB writeback:0kB mapped:16kB shmem:0kB slab_reclaimable:88kB slab_unreclaimable:148kB kernel_stack:40kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no\nlowmem_reserve[]: 0 865 2016 2016\nNormal free:150100kB min:3728kB low:4660kB high:5592kB active_anon:6224kB inactive_anon:15772kB active_file:324084kB inactive_file:325944kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:885944kB mlocked:0kB dirty:12kB writeback:0kB mapped:1520kB shmem:0kB slab_reclaimable:25112kB slab_unreclaimable:11060kB kernel_stack:1888kB pagetables:1320kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no\nlowmem_reserve[]: 0 0 9207 9207\nHighMem free:211872kB min:512kB low:1752kB high:2992kB active_anon:532380kB inactive_anon:186392kB active_file:54680kB inactive_file:199324kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:1178504kB mlocked:0kB dirty:0kB writeback:0kB mapped:7588kB shmem:36kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no\nlowmem_reserve[]: 0 0 0 0\nDMA: 3*4kB 65*8kB 35*16kB 18*32kB 11*64kB 9*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB \u003d 3524kB\nNormal: 35981*4kB 344*8kB 158*16kB 28*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB \u003d 150100kB\nHighMem: 5732*4kB 5462*8kB 2826*16kB 1598*32kB 84*64kB 10*128kB 7*256kB 1*512kB 1*1024kB 1*2048kB 9*4096kB \u003d 211872kB\n231237 total pagecache pages\n2340 pages in swap cache\nSwap cache stats: add 160060, delete 157720, find 189017/194106\nFree swap  \u003d 4179840kB\nTotal swap \u003d 4194300kB\n524271 pages RAM\n296946 pages HighMem\n5668 pages reserved\n867664 pages shared\n82155 pages non-shared\n\nSigned-off-by: Sakari Ailus \u003csakari.ailus@iki.fi\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "990c91f0af46c57f0291060d928c7ab82f9d5667",
      "tree": "72a347b09509e3658b12d4e013f072bf2b771299",
      "parents": [
        "bc805a03c26e1e25171bc627c6264553d27f746c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon May 30 11:14:12 2011 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon May 30 11:14:12 2011 +0930"
      },
      "message": "lguest: remove support for VIRTIO_F_NOTIFY_ON_EMPTY.\n\nNo virtio device does this any more, so no need to clutter lguest with it.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "bc805a03c26e1e25171bc627c6264553d27f746c",
      "tree": "2700f17b81a74376d6f03a0d60083ec387cbbcc4",
      "parents": [
        "15517f7c213442e4d8a098cf0732b237f764c576"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon May 30 11:14:11 2011 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon May 30 11:14:12 2011 +0930"
      },
      "message": "lguest: fix up compilation after move\n\ned16648eb5b86917f0b90bdcdbc857202da72f90 \"Move kvm, uml, and lguest\nsubdirectories\" broke the lguest example launcher.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ed16648eb5b86917f0b90bdcdbc857202da72f90",
      "tree": "a8198415a6c2f1909f02340b05d36e1d53b82320",
      "parents": [
        "bfd412db9e7b0d8f7b9c09d12d07aa2ac785f1d0"
      ],
      "author": {
        "name": "Rob Landley",
        "email": "rlandley@parallels.com",
        "time": "Fri May 06 09:22:02 2011 -0700"
      },
      "committer": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Fri May 06 09:22:02 2011 -0700"
      },
      "message": "Move kvm, uml, and lguest subdirectories under a common \"virtual\" directory, I.E:\n\n  cd Documentation\n  mkdir virtual\n  git mv kvm uml lguest virtual\n\nSigned-off-by: Rob Landley \u003crlandley@parallels.com\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\n"
    },
    {
      "commit": "5230ff0cccb0611830bb02b097535868df02752a",
      "tree": "7d1345e1ede12e2fd85918c9944fe929017cde6b",
      "parents": [
        "8aeb36e8f6d7eaa9cafc970b700414205743b258"
      ],
      "author": {
        "name": "Philip Sanderson",
        "email": "philip.k.sanderson@gmail.com",
        "time": "Thu Jan 20 21:37:28 2011 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 20 21:37:29 2011 +1030"
      },
      "message": "lguest: example launcher to use guard pages, drop PROT_EXEC, fix limit logic\n\nPROT_EXEC seems to be completely unnecessary (as the lguest binary\nnever executes there), and will allow it to work with SELinux (and\nmore importantly, PaX :-) as they can/do forbid writable and\nexecutable mappings.\n\nAlso, map PROT_NONE guard pages at start and end of guest memory for extra\nparanoia.\n\nI changed the length check to addr + size \u003e guest_limit because \u003e\u003d is wrong\n(addr of 0, size of getpagesize() with a guest_limit of getpagesize() would\nfalse positive).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "8aeb36e8f6d7eaa9cafc970b700414205743b258",
      "tree": "22add4e7eae6a329fb87180adb148a0b88b30516",
      "parents": [
        "8a335bc631ac9c43675821580c26ebf95a3044ba"
      ],
      "author": {
        "name": "Philip Sanderson",
        "email": "philip.k.sanderson@gmail.com",
        "time": "Thu Jan 20 21:37:28 2011 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 20 21:37:28 2011 +1030"
      },
      "message": "lguest: --username and --chroot options\n\nI\u0027ve attached a patch which implements dropping to privileges\nand chrooting to a directory.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "fa251f89903d73989e2f63e13d0eaed1e07ce0da",
      "tree": "3f7fe779941e3b6d67754dd7c44a32f48ea47c74",
      "parents": [
        "dd3932eddf428571762596e17b65f5dc92ca361b",
        "cd07202cc8262e1669edff0d97715f3dd9260917"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "message": "Merge branch \u0027v2.6.36-rc8\u0027 into for-2.6.37/barrier\n\nConflicts:\n\tblock/blk-core.c\n\tdrivers/block/loop.c\n\tmm/swapfile.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7bc9fddab074d6bb630344e1969e28d20b140621",
      "tree": "3f0799bb2f1a4c12fa564f2538aea54de552a108",
      "parents": [
        "02c42b7a68695c2c3e3fecf9f6b9a4ea43abe52f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:38 2010 +0200"
      },
      "message": "lguest: replace VIRTIO_F_BARRIER support with VIRTIO_F_FLUSH support\n\nVIRTIO_F_BARRIER is deprecated.  Replace it with VIRTIO_F_FLUSH\nsupport.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f846619e7f875b0efa9853b1c821bbc756656d47",
      "tree": "8d79aeea72a1d66e54b1c7ebf8db39d362ace9d0",
      "parents": [
        "d4348c678977c7093438bbbf2067c49396ae941b"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Aug 27 08:39:48 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Aug 27 08:39:51 2010 +0930"
      },
      "message": "lguest: clean up warnings in demonstration launcher.\n\nThese days the headers we use are in glibc.  If those are too old, you can\nadd the -I lines to get the kernel headers.\n\nIn file included from ../../include/linux/if_tun.h:19,\n                 from lguest.c:33:\n../../include/linux/types.h:13:2: warning: #warning \"Attempt to use kernel headers from user space, see http://kernelnewbies.org/KernelHeaders\"\nlguest.c: In function ‘setup_tun_net’:\nlguest.c:1456: warning: dereferencing pointer ‘sin’ does break strict-aliasing rules\nlguest.c:1457: warning: dereferencing pointer ‘sin’ does break strict-aliasing rules\nlguest.c:1450: note: initialized from here\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a33f32244d8550da8b4a26e277ce07d5c6d158b5",
      "tree": "2b24b891e48ae791446fef6d1b9e520190c03c62",
      "parents": [
        "6c9468e9eb1252eaefd94ce7f06e1be9b0b641b1"
      ],
      "author": {
        "name": "Francis Galiegue",
        "email": "fgaliegue@gmail.com",
        "time": "Fri Apr 23 00:08:02 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Apr 23 02:09:52 2010 +0200"
      },
      "message": "Documentation/: it\u0027s -\u003e its where appropriate\n\nFix obvious cases of \"it\u0027s\" being used when \"its\" was meant.\n\nSigned-off-by: Francis Galiegue \u003cfgaliegue@gmail.com\u003e\nAcked-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "28ff4ef71795fe6f6c0cc06a04911c9ca09c2c11",
      "tree": "b507072181412cb06558aa2e35f0bf56b16753ee",
      "parents": [
        "169c246a30808588436794e96a97c61a01af9bed"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Feb 24 14:22:18 2010 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Feb 24 14:22:22 2010 +1030"
      },
      "message": "lguest: remove unneeded zlib.h include in example launcher\n\nTwo years ago 5bbf89fc2608 removed the horrible bzImage unpacking code.\nNow it\u0027s time to remove the unneeded zlib.h include, too.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "af901ca181d92aac3a7dc265144a9081a86d8f39",
      "tree": "380054af22521144fbe1364c3bcd55ad24c9bde4",
      "parents": [
        "972b94ffb90ea6d20c589d9a47215df103388ddd"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Nov 14 13:09:05 2009 -0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 15:39:55 2009 +0100"
      },
      "message": "tree-wide: fix assorted typos all over the place\n\nThat is \"success\", \"unknown\", \"through\", \"performance\", \"[re|un]mapping\"\n, \"access\", \"default\", \"reasonable\", \"[con]currently\", \"temperature\"\n, \"channel\", \"[un]used\", \"application\", \"example\",\"hierarchy\", \"therefore\"\n, \"[over|under]flow\", \"contiguous\", \"threshold\", \"enough\" and others.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "e95646c3ec33c8ec0693992da4332a6b32eb7e31",
      "tree": "7855767cc4dccdefc4ea64584cc01b64f92176f3",
      "parents": [
        "f8b12e513b953aebf30f8ff7d2de9be7e024dbbe"
      ],
      "author": {
        "name": "Christian Borntraeger",
        "email": "borntraeger@de.ibm.com",
        "time": "Wed Sep 30 11:17:21 2009 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Oct 22 16:39:28 2009 +1030"
      },
      "message": "virtio: let header files include virtio_ids.h\n\nRusty,\n\ncommit 3ca4f5ca73057a617f9444a91022d7127041970a\n    virtio: add virtio IDs file\nmoved all device IDs into a single file. While the change itself is\na very good one, it can break userspace applications. For example\nif a userspace tool wanted to get the ID of virtio_net it used to\ninclude virtio_net.h. This does no longer work, since virtio_net.h\ndoes not include virtio_ids.h.\nThis patch moves all \"#include \u003clinux/virtio_ids.h\u003e\" from the C\nfiles into the header files, making the header files compatible with\nthe old ones.\n\nIn addition, this patch exports virtio_ids.h to userspace.\n\nCC: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nSigned-off-by: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ca60a42c9be41c07ebcc2ec8c43dd1be53f147bf",
      "tree": "ca7ef0c06dc20d0529c9c2edfb22a2925edeb721",
      "parents": [
        "6c189d8312246af776c2587c233d6afcf3714438"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Sep 23 22:26:47 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Sep 23 22:26:47 2009 +0930"
      },
      "message": "lguest: don\u0027t force VIRTIO_F_NOTIFY_ON_EMPTY\n\nVIRTIO_F_NOTIFY_ON_EMPTY indicates to the Guest that we will hit them with\nan interrupt every time the xmit queue is emptied.\n\nBecause it results in lots of tx interrupts, modern Guests probably don\u0027t\nwant it, so let\u0027s only force it when they accept the option.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "3ca4f5ca73057a617f9444a91022d7127041970a",
      "tree": "382659da29ad0a2e9878df6c7c4204913ab642e7",
      "parents": [
        "3a20210dc26bbfff3bbb48bb22d2846240b71d8f"
      ],
      "author": {
        "name": "Fernando Luis Vazquez Cao",
        "email": "fernando@oss.ntt.co.jp",
        "time": "Fri Jul 31 15:25:56 2009 +0900"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Sep 23 22:26:32 2009 +0930"
      },
      "message": "virtio: add virtio IDs file\n\nVirtio IDs are spread all over the tree which makes assigning new IDs\nbothersome. Putting them together should make the process less error-prone.\n\nSigned-off-by: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "1842f23c05b6a866be831aa60bc8a8731c58ddd0",
      "tree": "8047f21d149b3958b5c4278c1a5601ddce9e0e4b",
      "parents": [
        "a91d74a3c4de8115295ee87350c13a329164aaaf"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:46 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:46 2009 +0930"
      },
      "message": "lguest and virtio: cleanup struct definitions to Linux style.\n\nI\u0027ve been doing this for years, and akpm picked me up on it about 12\nmonths ago.  lguest partly serves as example code, so let\u0027s do it Right.\n\nAlso, remove two unused fields in struct vblk_info in the example launcher.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\n"
    },
    {
      "commit": "a91d74a3c4de8115295ee87350c13a329164aaaf",
      "tree": "02c862fccc9abedf7fc354061e69c4b5fbcce06d",
      "parents": [
        "2e04ef76916d1e29a077ea9d0f2003c8fd86724d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:45 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:46 2009 +0930"
      },
      "message": "lguest: update commentry\n\nEvery so often, after code shuffles, I need to go through and unbitrot\nthe Lguest Journey (see drivers/lguest/README).  Since we now use RCU in\na simple form in one place I took the opportunity to expand that explanation.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Paul McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2e04ef76916d1e29a077ea9d0f2003c8fd86724d",
      "tree": "2ff8d625d6e467be9f9f1b67a3674cb6e125e970",
      "parents": [
        "e969fed542cae08cb11d666efac4f7c5d624d09f"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:45 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:45 2009 +0930"
      },
      "message": "lguest: fix comment style\n\nI don\u0027t really notice it (except to begrudge the extra vertical\nspace), but Ingo does.  And he pointed out that one excuse of lguest\nis as a teaching tool, it should set a good example.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\n"
    },
    {
      "commit": "8ef562d112c82ec539775698f8b63ac5ec1bd766",
      "tree": "4bf0997d89cb138f8d061c948dca6286ab368973",
      "parents": [
        "f294526279cda8934b0313ebd02184a16ba888c9"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:43 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 30 16:03:43 2009 +0930"
      },
      "message": "lguest: fix descriptor corruption in example launcher\n\n1d589bb16b825b3a7b4edd34d997f1f1f953033d \"Add serial number support\nfor virtio_blk, V4a\" extended \u0027struct virtio_blk_config\u0027 to 536 bytes.\nLguest and S/390 both use an 8 bit value for the feature length, and\nthis change broke them (if the code is naive).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: John Cooper \u003cjohn.cooper@redhat.com\u003e\nCc: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\n"
    },
    {
      "commit": "d1f0132e76a11b05167313c606a853953f416081",
      "tree": "abd06f91d578b1927249f6a467910da88b3ec910",
      "parents": [
        "b60da13fc7bbf99d3c68578bd3fbcf66e1cb5f41"
      ],
      "author": {
        "name": "Mark McLoughlin",
        "email": "markmc@redhat.com",
        "time": "Mon May 11 18:11:46 2009 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:13 2009 +0930"
      },
      "message": "lguest: add support for indirect ring entries\n\nSupport the VIRTIO_RING_F_INDIRECT_DESC feature.\n\nThis is a simple matter of changing the descriptor walking\ncode to operate on a struct vring_desc* and supplying it\nwith an indirect table if detected.\n\nSigned-off-by: Mark McLoughlin \u003cmarkmc@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b60da13fc7bbf99d3c68578bd3fbcf66e1cb5f41",
      "tree": "6ae96583da3212755d867fdff30b2f9ae58609e8",
      "parents": [
        "4a8962e21bc505c714fc2508494d4c7dd3fe2d29"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:12 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:13 2009 +0930"
      },
      "message": "lguest: suppress notifications in example Launcher\n\nThe Guest only really needs to tell us about activity when we\u0027re going\nto listen to the eventfd: normally, we don\u0027t want to know.\n\nSo if there are no available buffers, turn on notifications, re-check,\nthen wait for the Guest to notify us via the eventfd, then turn\nnotifications off again.\n\nThere\u0027s enough else going on that the differences are in the noise.\n\nBefore:\t\t\t\tSecs\tRxKicks\tTxKicks\n 1G TCP Guest-\u003eHost:\t\t3.94\t  4686\t  32815\n 1M normal pings:\t\t104\t142862\t1000010\n 1M 1k pings (-l 120):\t\t57\t142026\t1000007\n\nAfter:\n 1G TCP Guest-\u003eHost:\t\t3.76\t  4691\t  32811\n 1M normal pings:\t\t111\t142859\t 997467\n 1M 1k pings (-l 120):\t\t55\t 19648\t 501549\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "4a8962e21bc505c714fc2508494d4c7dd3fe2d29",
      "tree": "55afdb7bc1f7e03bc910e59a17962e671a031ebc",
      "parents": [
        "95c517c09bad31a03e22f2fdb5f0aa26a490a92d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:12 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:12 2009 +0930"
      },
      "message": "lguest: try to batch interrupts on network receive\n\nRather than triggering an interrupt every time, we only trigger an\ninterrupt when there are no more incoming packets (or the recv queue\nis full).\n\nHowever, the overhead of doing the select to figure this out is\nmeasurable: 1M pings goes from 98 to 104 seconds, and 1G Guest-\u003eHost\nTCP goes from 3.69 to 3.94 seconds.  It\u0027s close to the noise though.\n\nI tested various timeouts, including reducing it as the number of\npending packets increased, timing a 1 gigabyte TCP send from Guest -\u003e\nHost and Host -\u003e Guest (GSO disabled, to increase packet rate).\n\n// time tcpblast -o -s 65536 -c 16k 192.168.2.1:9999 \u003e /dev/null\n\nTimeout\t\tGuest-\u003eHost\tPkts/irq\tHost-\u003eGuest\tPkts/irq\nBefore\t\t11.3s\t\t1.0\t\t6.3s\t\t1.0\n0\t\t11.7s\t\t1.0\t\t6.6s\t\t23.5\n1\t\t17.1s\t\t8.8\t\t8.6s\t\t26.0\n1/pending\t13.4s\t\t1.9\t\t6.6s\t\t23.8\n2/pending\t13.6s\t\t2.8\t\t6.6s\t\t24.1\n5/pending\t14.1s\t\t5.0\t\t6.6s\t\t24.4\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "95c517c09bad31a03e22f2fdb5f0aa26a490a92d",
      "tree": "aa34fdb7ca3a6b7575a2ac7639c157995d334bc3",
      "parents": [
        "38bc2b8c56a2e212bbd19de7cf9976dcc7bf9953"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:11 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:12 2009 +0930"
      },
      "message": "lguest: avoid sending interrupts to Guest when no activity occurs.\n\nIf we track how many buffers we\u0027ve used, we can tell whether we really\nneed to interrupt the Guest.  This happens as a side effect of\nspurious notifications.\n\nSpurious notifications happen because it can take a while before the\nHost thread wakes up and sets the VRING_USED_F_NO_NOTIFY flag, and\nmeanwhile the Guest can more notifications.\n\nA real fix would be to use wake counts, rather than a suppression\nflag, but the practical difference is generally in the noise: the\ninterrupt is usually coalesced into a pending one anyway so we just\nsave a system call which isn\u0027t clearly measurable.\n\n\t\t\t\tSecs\tSpurious IRQS\n1G TCP Guest-\u003eHost:\t\t3.93\t58\n1M normal pings:\t\t100\t72\n1M 1k pings (-l 120):\t\t57\t492904\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "38bc2b8c56a2e212bbd19de7cf9976dcc7bf9953",
      "tree": "26071dbb540926c329ece0ab4d4425807021b5c8",
      "parents": [
        "5dac051bc6030963181b69faddd9e0ad04f85fa8"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:11 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:11 2009 +0930"
      },
      "message": "lguest: implement deferred interrupts in example Launcher\n\nRather than sending an interrupt on every buffer, we only send an interrupt\nwhen we\u0027re about to wait for the Guest to send us a new one.  The console\ninput and network input still send interrupts manually, but the block device,\nnetwork and console output queues can simply rely on this logic to send\ninterrupts to the Guest at the right time.\n\nThe patch is cluttered by moving trigger_irq() higher in the code.\n\nIn practice, two factors make this optimization less interesting:\n(1) we often only get one input at a time, even for networking,\n(2) triggering an interrupt rapidly tends to get coalesced anyway.\n\nBefore:\t\t\t\tSecs\tRxIRQS\tTxIRQs\n 1G TCP Guest-\u003eHost:\t\t3.72\t32784\t32771\n 1M normal pings:\t\t99\t1000004\t995541\n 100,000 1k pings (-l 120):\t5\t49510\t49058\n\nAfter:\n 1G TCP Guest-\u003eHost:\t\t3.69\t32809\t32769\n 1M normal pings:\t\t99\t1000004\t996196\n 100,000 1k pings (-l 120):\t5\t52435\t52361\n\n(Note the interrupt count on 100k pings goes *up*: see next patch).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "659a0e6633567246edcb7bd400c7e2bece9237d9",
      "tree": "2ece97564e432b837389e166d9b61773d34b1063",
      "parents": [
        "df60aeef4f4fe0645d9a195a7689005520422de5"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:10 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:10 2009 +0930"
      },
      "message": "lguest: have example Launcher service all devices in separate threads\n\nCurrently lguest has three threads: the main Launcher thread, a Waker\nthread, and a thread for the block device (because synchronous block\nwas simply too painful to bear).\n\nThe Waker selects() on all the input file descriptors (eg. stdin, net\ndevices, pipe to the block thread) and when one becomes readable it calls\ninto the kernel to kick the Launcher thread out into userspace, which\nrepeats the poll, services the device(s), and then tells the kernel to\nrelease the Waker before re-entering the kernel to run the Guest.\n\nAlso, to make a slightly-decent network transmit routine, the Launcher\nwould suppress further network interrupts while it set a timer: that\nsignal handler would write to a pipe, which would rouse the Waker\nwhich would prod the Launcher out of the kernel to check the network\ndevice again.\n\nNow we can convert all our virtqueues to separate threads: each one has\na separate eventfd for when the Guest pokes the device, and can trigger\ninterrupts in the Guest directly.\n\nThe linecount shows how much this simplifies, but to really bring it\nhome, here\u0027s an strace analysis of single Guest-\u003eHost ping before:\n\n* Guest sends packet, notifies xmit vq, return control to Launcher\n* Launcher clears notification flag on xmit ring\n* Launcher writes packet to TUN device\n\twritev(4, [{\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\", 10}, {\"\\366\\r\\224`\\2058\\272m\\224vf\\274\\10\\0E\\0\\0T\\0\\0@\\0@\\1\\265\"..., 98}], 2) \u003d 108\n* Launcher sets up interrupt for Guest (xmit ring is empty)\n\twrite(10, \"\\2\\0\\0\\0\\3\\0\\0\\0\", 8) \u003d 0\n* Launcher sets up timer for interrupt mitigation\n\tsetitimer(ITIMER_REAL, {it_interval\u003d{0, 0}, it_value\u003d{0, 505}}, NULL) \u003d 0\n* Launcher re-runs guest\n\tpread64(10, 0xbfa5f4d4, 4, 0) ...\n* Waker notices reply packet in tun device (it was in select)\n\tselect(12, [0 3 4 6 11], NULL, NULL, NULL) \u003d 1 (in [4])\n* Waker kicks Launcher out of guest:\n\tpwrite64(10, \"\\3\\0\\0\\0\\1\\0\\0\\0\", 8, 0) \u003d 0\n* Launcher returns from running guest:\n\t... \u003d -1 EAGAIN (Resource temporarily unavailable)\n* Launcher looks at input fds:\n\tselect(7, [0 3 4 6], NULL, NULL, {0, 0}) \u003d 1 (in [4], left {0, 0})\n* Launcher reads pong from tun device:\n\treadv(4, [{\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\", 10}, {\"\\272m\\224vf\\274\\366\\r\\224`\\2058\\10\\0E\\0\\0T\\364\\26\\0\\0@\"..., 1518}], 2) \u003d 108\n* Launcher injects guest notification:\n\twrite(10, \"\\2\\0\\0\\0\\2\\0\\0\\0\", 8) \u003d 0\n* Launcher rechecks fds:\n\tselect(7, [0 3 4 6], NULL, NULL, {0, 0}) \u003d 0 (Timeout)\n* Launcher clears Waker:\n\tpwrite64(10, \"\\3\\0\\0\\0\\0\\0\\0\\0\", 8, 0) \u003d 0\n* Launcher reruns Guest:\n\tpread64(10, 0xbfa5f4d4, 4, 0) \u003d ? ERESTARTSYS (To be restarted)\n* Signal comes in, uses pipe to wake up Launcher:\n\t--- SIGALRM (Alarm clock) @ 0 (0) ---\n\twrite(8, \"\\0\", 1)       \u003d 1\n\tsigreturn()             \u003d ? (mask now [])\n* Waker sees write on pipe:\n\tselect(12, [0 3 4 6 11], NULL, NULL, NULL) \u003d 1 (in [6])\n* Waker kicks Launcher out of Guest:\n\tpwrite64(10, \"\\3\\0\\0\\0\\1\\0\\0\\0\", 8, 0) \u003d 0\n* Launcher exits from kernel:\n\tpread64(10, 0xbfa5f4d4, 4, 0) \u003d -1 EAGAIN (Resource temporarily unavailable)\n* Launcher looks to see what fd woke it:\n\tselect(7, [0 3 4 6], NULL, NULL, {0, 0}) \u003d 1 (in [6], left {0, 0})\n* Launcher reads timeout fd, sets notification flag on xmit ring\n\tread(6, \"\\0\", 32)       \u003d 1\n* Launcher rechecks fds:\n\tselect(7, [0 3 4 6], NULL, NULL, {0, 0}) \u003d 0 (Timeout)\n* Launcher clears Waker:\n\tpwrite64(10, \"\\3\\0\\0\\0\\0\\0\\0\\0\", 8, 0) \u003d 0\n* Launcher resumes Guest:\n\tpread64(10, \"\\0p\\0\\4\", 4, 0) ....\n\nstrace analysis of single Guest-\u003eHost ping after:\n\n* Guest sends packet, notifies xmit vq, creates event on eventfd.\n* Network xmit thread wakes from read on eventfd:\n\tread(7, \"\\1\\0\\0\\0\\0\\0\\0\\0\", 8)          \u003d 8\n* Network xmit thread writes packet to TUN device\n\twritev(4, [{\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\", 10}, {\"J\\217\\232FI\\37j\\27\\375\\276\\0\\304\\10\\0E\\0\\0T\\0\\0@\\0@\\1\\265\"..., 98}], 2) \u003d 108\n* Network recv thread wakes up from read on tunfd:\n\treadv(4, [{\"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\", 10}, {\"j\\27\\375\\276\\0\\304J\\217\\232FI\\37\\10\\0E\\0\\0TiO\\0\\0@\\1\\214\"..., 1518}], 2) \u003d 108\n* Network recv thread sets up interrupt for the Guest\n\twrite(6, \"\\2\\0\\0\\0\\2\\0\\0\\0\", 8) \u003d 0\n* Network recv thread goes back to reading tunfd\n\t13:39:42.460285 readv(4,  \u003cunfinished ...\u003e\n* Network xmit thread sets up interrupt for Guest (xmit ring is empty)\n\twrite(6, \"\\2\\0\\0\\0\\3\\0\\0\\0\", 8) \u003d 0\n* Network xmit thread goes back to reading from eventfd\n\tread(7, \u003cunfinished ...\u003e\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "7b5c806c35f6ff76b2e36a8b5b1513c8a83fcff7",
      "tree": "382e194aadcae193229c121c60c0d4838255c327",
      "parents": [
        "e606490c440900e50ccf73a54f6fc6150ff40815"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:05 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:05 2009 +0930"
      },
      "message": "lguest: fix writev returning short on console output\n\nI\u0027ve never seen it here, but I can\u0027t find anywhere that says writev\nwill write everything.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e606490c440900e50ccf73a54f6fc6150ff40815",
      "tree": "43a660399ee81b3926789bd1644513e83c605d50",
      "parents": [
        "f086122bb6e885f926f935b1418fca3b293375f0"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:04 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:05 2009 +0930"
      },
      "message": "lguest: clean up length-used value in example launcher\n\nThe \"len\" field in the used ring for virtio indicates the number of\nbytes *written* to the buffer.  This means the guest doesn\u0027t have to\nzero the buffers in advance as it always knows the used length.\n\nErroneously, the console and network example code puts the length\n*read* into that field.  The guest ignores it, but it\u0027s wrong.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ebf9a5a99c1a464afe0b4dfa64416fc8b273bc5c",
      "tree": "b5f0631172db5d97e0a5c6b8a6bc0f83c4a4eed5",
      "parents": [
        "a6c372de6e4b9a8188b66badcee3e3792eccdd26"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:01 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:02 2009 +0930"
      },
      "message": "lguest: remove invalid interrupt forcing logic.\n\n20887611523e749d99cc7d64ff6c97d27529fbae (lguest: notify on empty) introduced\nlguest support for the VIRTIO_F_NOTIFY_ON_EMPTY flag, but in fact it turned on\ninterrupts all the time.\n\nBecause we always process one buffer at a time, the inflight count is always 0\nwhen call trigger_irq and so we always ignore VRING_AVAIL_F_NO_INTERRUPT from\nthe Guest.\n\nIt should be looking to see if there are more buffers in the Guest\u0027s queue:\nif it\u0027s empty, then we force an interrupt.\n\nThis makes little difference, since we usually have an empty queue; but\nthat\u0027s the subject of another patch.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "f7027c6387d0c3acf569845165ec7947e2083c82",
      "tree": "306f36650d615491d468e040d7055b07053d2fb6",
      "parents": [
        "1028375e93a7aa4dbe466947d1c65f368b1f61c1"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:00 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:00 2009 +0930"
      },
      "message": "lguest: get more serious about wmb() in example Launcher code\n\nSince the Launcher process runs the Guest, it doesn\u0027t have to be very\nserious about its barriers: the Guest isn\u0027t running while we are (Guest\nis UP).\n\nBefore we change to use threads to service devices, we need to fix this.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "56739c802ca845435f60e909104637880e14c769",
      "tree": "3831f2b7e2c973b11e2f9823002340420fbc327b",
      "parents": [
        "713b15b3781240653d2b38414da3f4567dcbcf91"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:26:59 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:26:59 2009 +0930"
      },
      "message": "lguest: cleanup passing of /dev/lguest fd around example launcher.\n\nWe hand the /dev/lguest fd everywhere; it\u0027s far neater to just make it\na global (it already is, in fact, hidden in the waker_fds struct).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "713b15b3781240653d2b38414da3f4567dcbcf91",
      "tree": "9b6a01f00bf4aee60548d8b8cf38458863888564",
      "parents": [
        "8ebf975608aaebd7feb33d77f07ba21a6380e086"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:26:58 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:26:59 2009 +0930"
      },
      "message": "lguest: be paranoid about guest playing with device descriptors.\n\nWe can\u0027t trust the values in the device descriptor table once the\nguest has booted, so keep local copies.  They could set them to\nstrange values then cause us to segv (they\u0027re 8 bit values, so they\ncan\u0027t make our pointers go too wild).\n\nThis becomes more important with the following patches which read them.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "d1881d3192a3d3e8dc4f255b03187f4c36cb0617",
      "tree": "851f74b371136a85226d4180f84b4904762abb0d",
      "parents": [
        "df1693abc42e34bbc4351e179dbe66c28a94efb8"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 21:55:25 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 21:55:26 2009 +1030"
      },
      "message": "lguest: barrier me harder\n\nImpact: barrier correctness in example launcher\n\nI doubt either lguest user will complain about performance.\n\nReported-by: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "58a24566449892dda409b9ad92c2e56c76c5670c",
      "tree": "4dfe2305dfd078c71d949ea8cc6c9cc6e2679494",
      "parents": [
        "be3c5832d51174ef7f21cefd6ad612dabdcb62fd"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Mon Sep 29 01:40:07 2008 -0300"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:26:11 2008 +1030"
      },
      "message": "lguest: move the initial guest page table creation code to the host\n\nThis patch moves the initial guest page table creation code to the host,\nso the launcher keeps working with PAE enabled configs.\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "2966af73e70dee461c256b5eb877b2ff757f8c82",
      "tree": "5cb8a81e80cb9b513fad015f0dc4d5e5db52fd14",
      "parents": [
        "498af14783935af487d17dbee4ac451783cbc2b7"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:25:58 2008 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:26:02 2008 +1030"
      },
      "message": "virtio: use LGUEST_VRING_ALIGN instead of relying on pagesize\n\nThis doesn\u0027t really matter, since lguest is i386 only at the moment,\nbut we could actually choose a different value.  (lguest doesn\u0027t have\na guarenteed ABI).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "d5d02d6dd394b295abcadd6b0ce4932c07916fdf",
      "tree": "227678c07f2d2598ee62dc846d37968fad44549e",
      "parents": [
        "65fc716fa673cf98fb5887180fd3c52ca0371198"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Oct 31 11:24:25 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Oct 31 11:24:27 2008 +1100"
      },
      "message": "lguest: fix example launcher compile after moved asm-x86 dir.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "71cced6eb044f5b096d35755963f3a2035603b73",
      "tree": "b3e56beafa6805ae0a8549a76be9090eb2291080",
      "parents": [
        "60817c9b31ef7897d60bca2f384cbc316a3fdd8b"
      ],
      "author": {
        "name": "Uwe Hermann",
        "email": "uwe@hermann-uwe.de",
        "time": "Mon Oct 20 09:32:21 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 28 16:36:42 2008 +0100"
      },
      "message": "doc/x86: fix doc subdirs\n\nThe Documentation/i386 and Documentation/x86_64 directories and their\ncontents have been moved into Documentation/x86. Fix references to\nthose files accordingly.\n\nSigned-off-by: Uwe Hermann \u003cuwe@hermann-uwe.de\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1dc3e3bcbfe335843ec938bfdddb34d10f4dd278",
      "tree": "8666189f7a285c8e4c6512784dff39971fefa30c",
      "parents": [
        "bf2002967775cbb233876d51ff94e8daa7e77858"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Aug 26 00:19:27 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Aug 26 00:19:28 2008 +1000"
      },
      "message": "lguest: update commentry\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "40c42076ebd362dc69210cccea101ac80b6d4bd4",
      "tree": "01336076f45eb008f00940a5df86b5970b8d92d0",
      "parents": [
        "10fec20ef5eec1c91913baec1225400f0d02df40"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Aug 12 17:52:51 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Aug 12 17:52:52 2008 +1000"
      },
      "message": "lguest: don\u0027t set MAC address for guest unless specified\n\nThis shows up when trying to bridge:\n\ttap0: received packet with  own address as source address\n\nAs Max Krasnyansky points out, there\u0027s no reason to give the guest the\nsame mac address as the TUN device.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Max Krasnyansky \u003cmaxk@qualcomm.com\u003e\n"
    },
    {
      "commit": "8c79873da0d2bedf4ad6b868c54e426bb0a2fe38",
      "tree": "270efee346b70ae6615dd4796363479c94eca6d9",
      "parents": [
        "0f0c4fab8284f3b886b2e1e0e317e3bb8de176b3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:38 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:39 2008 +1000"
      },
      "message": "lguest: turn Waker into a thread, not a process\n\nlguest uses a Waker process to break it out of the kernel (ie.\nactually running the guest) when file descriptor needs attention.\n\nChanging this from a process to a thread somewhat simplifies things:\nit can directly access the fd_set of things to watch.  More\nimportantly, it means that the Waker can see Guest memory correctly,\nso /dev/vring file descriptors will work as anticipated (the\nalternative is to actually mmap MAP_SHARED, but you can\u0027t do that with\n/dev/zero).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "0f0c4fab8284f3b886b2e1e0e317e3bb8de176b3",
      "tree": "2509e74b573bac7560f42cc7ab3640814cf683d7",
      "parents": [
        "398f187d74b89d5ab198fcf9b8d86edbefecec4d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:37 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:38 2008 +1000"
      },
      "message": "lguest: Enlarge virtio rings\n\nWith big packets, 128 entries is a little small.\n\nGuest -\u003e Host 1GB TCP:\nBefore: 8.43625 seconds xmit 95640 recv 198266 timeout 49771 usec 1252\nAfter: 8.01099 seconds xmit 49200 recv 102263 timeout 26014 usec 2118\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "398f187d74b89d5ab198fcf9b8d86edbefecec4d",
      "tree": "7aee6787f46a8db0099f37e9dfea787499ecbcd1",
      "parents": [
        "9254926f85466979ef5f0e16386c294bf0973a90"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:37 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:37 2008 +1000"
      },
      "message": "lguest: Use GSO/IFF_VNET_HDR extensions on tun/tap\n\nGuest -\u003e Host 1GB TCP:\nBefore 20.1974 seconds xmit 214510 recv 5 timeout 214491 usec 278\nAfter 8.43625 seconds xmit 95640 recv 198266 timeout 49771 usec 1252\n\nHost -\u003e Guest 1GB TCP:\nBefore: Seconds 9.98854 xmit 172166 recv 5344 timeout 172157 usec 251\nAfter: Seconds 5.72803 xmit 244322 recv 9919 timeout 244302 usec 156\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "9254926f85466979ef5f0e16386c294bf0973a90",
      "tree": "c668e82dd63b50d8aea8b2459a172166880dd4f1",
      "parents": [
        "aa1249840bfc8d62431eed5796bf99887b963ab6"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:36 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:37 2008 +1000"
      },
      "message": "lguest: Remove \u0027network: no dma buffer!\u0027 warning\n\nThis warning can happen a lot under load, and it should be warnx not\nwarn anwyay.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "aa1249840bfc8d62431eed5796bf99887b963ab6",
      "tree": "35cf6cd82910af52e271c5e78ad47529e6daaed6",
      "parents": [
        "a161883a29bf6100efe7b5346bec274e5023c29c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:36 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:36 2008 +1000"
      },
      "message": "lguest: Adaptive timeout\n\nSince the correct timeout value varies, use a heuristic which adjusts\nthe timeout depending on how many packets we\u0027ve seen.  This gives\nslightly worse results, but doesn\u0027t need tweaking when GSO is\nintroduced.\n\n500 usec\t19.1887\t\txmit 561141 recv 1 timeout 559657\nDynamic (278)\t20.1974\t\txmit 214510 recv 5 timeout 214491 usec 278\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a161883a29bf6100efe7b5346bec274e5023c29c",
      "tree": "5d5b65172a64789eada0e3b824564a793033d0ad",
      "parents": [
        "5dae785a82c1a8c05b5b4f9709bd9ce658dcf1b6"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:35 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:36 2008 +1000"
      },
      "message": "lguest: Tell Guest net not to notify us on every packet xmit\n\nvirtio_ring has the ability to suppress notifications.  This prevents\na guest exit for every packet, but we need to set a timer on packet\nreceipt to re-check if there were any remaining packets.\n\nHere are the times for 1G TCP Guest-\u003eHost with different timeout\nsettings (it matters because the TCP window doesn\u0027t grow big enough to\nfill the entire buffer):\n\nTimeout value\tSeconds\t\tXmit/Recv/Timeout\nNone (before)\t25.3784\t\txmit 7750233 recv 1\n2500 usec\t62.5119\t\txmit 207020 recv 2 timeout 207020\n1000 usec\t34.5379\t\txmit 207003 recv 2 timeout 207003\n750 usec\t29.2305\t\txmit 207002 recv 1 timeout 207002\n500 usec\t19.1887\t\txmit 561141 recv 1 timeout 559657\n250 usec\t20.0465\t\txmit 214128 recv 2 timeout 214110\n100 usec\t19.2583\t\txmit 561621 recv 1 timeout 560153\n\n(Note that these values are sensitive to the GSO patches which come\n later, and probably other traffic-related variables, so take with a\n large grain of salt).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "5dae785a82c1a8c05b5b4f9709bd9ce658dcf1b6",
      "tree": "e737c655acb7ea53644392263d9dd99aae76aec9",
      "parents": [
        "b5111790fa6695b1502d4f5d389f6b22b9de10c3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:35 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:35 2008 +1000"
      },
      "message": "lguest: net block unneeded receive queue update notifications\n\nNumber of exits transmitting 10GB Guest-\u003eHost before:\n\tnetwork xmit 7858610 recv 118136\n\nAfter:\n\tnetwork xmit 7750233 recv 1\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b5111790fa6695b1502d4f5d389f6b22b9de10c3",
      "tree": "f937d643aaf845ecd7952055fcb6c4d8b879e040",
      "parents": [
        "cf485e566bc4a8098680162e1cc2ac1dfbef8a3c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:34 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:35 2008 +1000"
      },
      "message": "lguest: wrap last_avail accesses.\n\nTo simplify the transition to when we publish indices in the ring\n(and make shuffling my patch queue easier), wrap them in a lg_last_avail()\nmacro.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "28fd6d7f953711fbf67496701be05513052d967d",
      "tree": "08b3b76e4b0e3440a552facbbef55993be2932e1",
      "parents": [
        "dec6a2be085f046d42eb0bdce95ecb73de526429"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:33 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:34 2008 +1000"
      },
      "message": "lguest: virtio-rng support\n\nThis is a simple patch to add support for the virtio \"hardware random\ngenerator\" to lguest.  It gets about 1.2 MB/sec reading from /dev/hwrng\nin the guest.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "dec6a2be085f046d42eb0bdce95ecb73de526429",
      "tree": "0e2bd1576b32167259bb8d290f134c1b7eb1017a",
      "parents": [
        "34bdaab44dd5dac861b0d23bc29b147b569e5783"
      ],
      "author": {
        "name": "Mark McLoughlin",
        "email": "markmc@redhat.com",
        "time": "Tue Jul 29 09:58:33 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:33 2008 +1000"
      },
      "message": "lguest: Support assigning a MAC address\n\nIf you\u0027ve got a nice DHCP configuration which maps MAC\naddresses to specific IP addresses, then you\u0027re going to\nwant to start your guest with one of those MAC addresses.\n\nAlso, in Fedora, we have persistent network interface naming\nbased on the MAC address, so with randomly assigned\naddresses you\u0027re soon going to hit eth13. Who knows what\nwill happen then!\n\nAllow assigning a MAC address to the network interface with\ne.g.\n\n  --tunnet\u003dbridge:eth0:00:FF:95:6B:DA:3D\n\nor:\n\n  --tunnet\u003d192.168.121.1:00:FF:95:6B:DA:3D\n\nwhich is pretty unintelligable, but ...\n\n(includes Rusty\u0027s minor rework)\n\nSigned-off-by: Mark McLoughlin \u003cmarkmc@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "34bdaab44dd5dac861b0d23bc29b147b569e5783",
      "tree": "15dfb12a794d9de9341a90af3a5f6358216eaec0",
      "parents": [
        "32c68e5c569fdf016b494ce2fc8eecf59b6881bd"
      ],
      "author": {
        "name": "Mark McLoughlin",
        "email": "markmc@redhat.com",
        "time": "Fri Jun 13 14:04:58 2008 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:33 2008 +1000"
      },
      "message": "lguest: Don\u0027t leak /dev/zero fd\n\nSigned-off-by: Mark McLoughlin \u003cmarkmc@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "32c68e5c569fdf016b494ce2fc8eecf59b6881bd",
      "tree": "c61a79f3c34854a4ce9e6131352e05baec46c7b8",
      "parents": [
        "0a707210aa1b8ac40fe781b2a9d0b203b6ebb921"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:32 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 29 09:58:32 2008 +1000"
      },
      "message": "lguest: fix verbose printing of device features.\n\n%02x is more appropriate for bytes than %08x.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "20887611523e749d99cc7d64ff6c97d27529fbae",
      "tree": "a0b74c524c23762133b8b3de8235753760b13071",
      "parents": [
        "b4f68be6c5d507afdcd74f5be3df0b1209cda503"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 30 15:09:46 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 30 15:09:46 2008 +1000"
      },
      "message": "lguest: notify on empty\n\nThis is the lguest implementation of the VIRTIO_F_NOTIFY_ON_EMPTY feature.\nIt is currently only published for network devices, but it is turned on for\neveryone.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a007a751d98fe97142e4724a83a4e31ec66b7532",
      "tree": "ab9d1d844688834875359c600982a3c8ae738014",
      "parents": [
        "9f3f746741d917fe3c6c544c7d319d533176d90b"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 02 21:50:53 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 02 21:50:54 2008 +1000"
      },
      "message": "lguest: make Launcher see device status updates\n\nThis brings us closer to Real Life, where we\u0027d examine the device\nfeatures once it\u0027s set the DRIVER_OK status bit.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "cb38fa23c17519faf46a76d2f71a8430705fe474",
      "tree": "8a2a4ac0c4d8091cc15216871bc74e98337bfa41",
      "parents": [
        "81473132878f8a1d0c6a78cffa0cf84c8a19c1be"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 02 21:50:45 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri May 02 21:50:45 2008 +1000"
      },
      "message": "virtio: de-structify virtio_block status byte\n\nRon Minnich points out that a struct containing a char is not always\nsizeof(char); simplest to remove the structure to avoid confusion.\n\nCc: \"ron minnich\" \u003crminnich@gmail.com\u003e\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a6bd8e13034dd7d60b6f14217096efa192d0adc1",
      "tree": "23890908b06eb8357e6ce633d35df1216f5e4213",
      "parents": [
        "e18b094f0faa4889b06a112da17230a10b88c815"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Mar 28 11:05:53 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Mar 28 11:05:54 2008 +1100"
      },
      "message": "lguest: comment documentation update.\n\nTook some cycles to re-read the Lguest Journey end-to-end, fix some\nrot and tighten some phrases.\n\nOnly comments change.  No new jokes, but a couple of recycled old jokes.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e18b094f0faa4889b06a112da17230a10b88c815",
      "tree": "a06aa97ac95c45ee6774ddae7b8390af02129f54",
      "parents": [
        "9b7a448e2b23101a776ddf639c9037d47244f7ab"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Mar 28 11:05:52 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Mar 28 11:05:53 2008 +1100"
      },
      "message": "lguest: Don\u0027t need comment terminator before disk section.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "1ef36fa64e65079de18ff5179a51af58e44d49a6",
      "tree": "3c59c9e4ed6327327191e916051c5f088e7478bf",
      "parents": [
        "4357bd9453b81e0a41db1dec16e06d74256b7560"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Mon Mar 10 16:39:03 2008 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 11 09:35:58 2008 +1100"
      },
      "message": "lguest: Do not append space to guests kernel command line\n\nThe lguest launcher appends a space to the kernel command line (if kernel\narguments are specified on its command line). This space is unneeded. More\nimportantly, this appended space will make Red Hat\u0027s nash script interpreter\n(used in a Fedora style initramfs) add an empty argument to init\u0027s command\nline. This empty argument will make kernel arguments like \"init\u003d/bin/bash\"\nfail (because the shell will try to execute a script with an empty name).\nThis could be considered a bug in nash, but is easily fixed in the lguest\nlauncher too.\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "6e5aa7efb27aec7e55b6463fa2c8db594c4226fa",
      "tree": "060a955e711ac224136157a5410e88dcdab965af",
      "parents": [
        "b3369c1fb410fddeb38a404316c861395f6d6ae8"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Feb 04 23:50:03 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Feb 04 23:50:03 2008 +1100"
      },
      "message": "virtio: reset function\n\nA reset function solves three problems:\n\n1) It allows us to renegotiate features, eg. if we want to upgrade a\n   guest driver without rebooting the guest.\n\n2) It gives us a clean way of shutting down virtqueues: after a reset,\n   we know that the buffers won\u0027t be used by the host, and\n\n3) It helps the guest recover from messed-up drivers.\n\nSo we remove the -\u003eshutdown hook, and the only way we now remove\nfeature bits is via reset.\n\nWe leave it to the driver to do the reset before it deletes queues:\nthe balloon driver, for example, needs to chat to the host in its\nremove function.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "426e3e0af5d2473e67d4256fc1340b7faebd1cc7",
      "tree": "29912e63889e45307f41ef08116ecd895b17e21c",
      "parents": [
        "3309daaad724dd08eb598bf9c12b7bb9daddd706"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Feb 04 23:49:59 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Feb 04 23:50:00 2008 +1100"
      },
      "message": "virtio: clarify NO_NOTIFY flag usage\n\nThe other side (host) can set the NO_NOTIFY flag as an optimization,\nto say \"no need to kick me when you add things\".  Make it clear that\nthis is advisory only; especially that we should always notify when\nthe ring is full.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "a586d4f6016f7139d8c26df0e6927131168d3b5b",
      "tree": "1c47e1a6b6b8fb18baa42f32980f29c4ae9cbbdc",
      "parents": [
        "f35d9d8aae08940b7fdd1bb8110619da2ece6b28"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Feb 04 23:49:56 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Feb 04 23:49:57 2008 +1100"
      },
      "message": "virtio: simplify config mechanism.\n\nPreviously we used a type/len pair within the config space, but this\nseems overkill.  We now simply define a structure which represents the\nlayout in the config space: the config space can now only be extended\nat the end.\n\nThe main driver-visible changes:\n1) We indicate what fields are present with an explicit feature bit.\n2) Virtqueues are explicitly numbered, and not in the config space.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e3283fa0cc5c4f9bde52339a40da89297e51b481",
      "tree": "c289c2681d2cedd5ee778a8a754417ab50946d8a",
      "parents": [
        "badb1e04028e3e029ff9447d4aeb162a84ad68c2"
      ],
      "author": {
        "name": "Glauber de Oliveira Costa",
        "email": "gcosta@redhat.com",
        "time": "Mon Jan 07 11:05:23 2008 -0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Jan 30 22:50:05 2008 +1100"
      },
      "message": "lguest: adapt launcher to per-cpuness\n\nThis patch makes uses of pread() and pwrite() in lguest launcher\nto communicate the vcpu id to the lguest driver. The id is kept in\na thread variable, which means we\u0027ll span in the future, vcpus as\nthreads. But right now, only the infrastructure is out there.\n\nSigned-off-by: Glauber de Oliveira Costa \u003cgcosta@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ec04b13f67be3c90b38c625f4b8bdfea54c1ff60",
      "tree": "7819de21361fdd65487ef75ea9f2b774e4203f83",
      "parents": [
        "5c55841d16dbf7c759fa6fb2ecc5e615b86d17db"
      ],
      "author": {
        "name": "Balaji Rao",
        "email": "balajirrao@gmail.com",
        "time": "Fri Dec 28 14:26:24 2007 +0530"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Jan 30 22:50:04 2008 +1100"
      },
      "message": "lguest: Reboot support\n\nReboot Implemented\n\n(Prevent fd leak, fix style and fix documentation --RR)\n\nSigned-off-by: Balaji Rao \u003cbalajirrao@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "d1c856e0f1a4c946c6329cff126548ef4288735f",
      "tree": "e9f6c6754c9937b4a5de26a41b05b7e79cf661fd",
      "parents": [
        "2ffbb8377c7a0713baf6644e285adc27a5654582"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Nov 19 11:20:40 2007 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Nov 19 11:20:41 2007 +1100"
      },
      "message": "lguest: Fix uninitialized members in example launcher\n\nThanks valgrind!\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "42b36cc0ce717deeb10030141a43dede763a3ebe",
      "tree": "b2dc48b4f16c5dc59461ad24b027d631edda1da4",
      "parents": [
        "1200e646ae238afc536be70257290eb33fb6e364"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Nov 12 13:39:18 2007 +1100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Nov 12 13:59:40 2007 +1100"
      },
      "message": "virtio: Force use of power-of-two for descriptor ring sizes\n\nThe virtio descriptor rings of size N-1 were nicely set up to be\naligned to an N-byte boundary.  But as Anthony Liguori points out, the\nfree-running indices used by virtio require that the sizes be a power\nof 2, otherwise we get problems on wrap (demonstrated with lguest).\n\nSo we replace the clever \"2^n-1\" scheme with a simple \"align to page\nboundary\" scheme: this means that all virtio rings take at least two\npages, but it\u0027s safer than guessing cache alignment.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "1200e646ae238afc536be70257290eb33fb6e364",
      "tree": "c9efa72365b96fdc4323834b39068442f5caef89",
      "parents": [
        "1bc4953ed44454c7f53d0b609445d1534981ee75"
      ],
      "author": {
        "name": "Anthony Liguori",
        "email": "aliguori@us.ibm.com",
        "time": "Thu Nov 08 21:13:44 2007 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Nov 12 13:59:26 2007 +1100"
      },
      "message": "lguest: Fix lguest virtio-blk backend size computation\n\nThis seems like an obvious typo but it\u0027s worked in the past because the virtio\nblk frontend just ignores the length field on completion.\n\nSigned-off-by: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "e1e72965ec2c02db99b415cd06c17ea90767e3a4",
      "tree": "94e43aac35bdc33220e64f285b72b3b2b787fd57",
      "parents": [
        "568a17ffce2eeceae0cd9fc37e97cbad12f70278"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Oct 25 15:02:50 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Oct 25 15:02:50 2007 +1000"
      },
      "message": "lguest: documentation update\n\nWent through the documentation doing typo and content fixes.  This\npatch contains only comment and whitespace changes.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n\n"
    },
    {
      "commit": "db24e8c2ef7eceb46818a8c22fc38dea733fe159",
      "tree": "5ad38b8aa9effd7572db57c480747b66f056e493",
      "parents": [
        "c9927c2bf4f45bb85e8b502ab3fb79ad6483c244"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Oct 25 14:09:25 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Oct 25 14:09:25 2007 +1000"
      },
      "message": "lguest: example launcher header cleanup.\n\nNow the kernel headers are clean for userspace export, we don\u0027t need\nto typedef kernel types before including them.  We also don\u0027t need\npci_ids.h (that was from an earlier virtio draft).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n\n"
    },
    {
      "commit": "43d33b21a03d3abcc8cbdeb4d52bc4568f822c5e",
      "tree": "0d4962a625b028e84586c645deb4387861865fb6",
      "parents": [
        "5bbf89fc260830f3f58b331d946a16b39ad1ca2d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Oct 22 11:29:57 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:57 2007 +1000"
      },
      "message": "Use \"struct boot_params\" in example launcher\n\nNow that the \"struct boot_params\" is userspace accessible, we don\u0027t need\nmagic numbers.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "5bbf89fc260830f3f58b331d946a16b39ad1ca2d",
      "tree": "7b5401eefe9239cd84bf843fd8d8e8bcc79f26cd",
      "parents": [
        "814a0e5cdfbd384f4bf7a8443f9c3b885f413d58"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Oct 22 11:29:56 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:57 2007 +1000"
      },
      "message": "Loading bzImage directly.\n\nNow arch/i386/boot/compressed/head.S understands the hardware_platform field,\nwe can directly execute bzImages.  No more horrific unpacking code.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "814a0e5cdfbd384f4bf7a8443f9c3b885f413d58",
      "tree": "4cb82a6ec1db54ce00fbc3700762cd3dc46a0b4e",
      "parents": [
        "1f5a29022ac66bc90cbe2a2162f56e9cd7b393ef"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Oct 22 11:29:44 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:57 2007 +1000"
      },
      "message": "Revert lguest magic and use hook in head.S\n\nVersion 2.07 of the boot protocol uses 0x23C for the hardware_subarch\nfield, that for lguest is \"1\".  This allows us to use the standard\nboot entry point rather than the \"GenuineLguest\" string hack.\n\nThe standard entry point also clears the BSS and copies the boot parameters\nand commandline for us, saving more code.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "56ae43dfe233323683248a5c553bad7160db2fa5",
      "tree": "27260aff3586bd0373ee6cf4a468dd5962209e88",
      "parents": [
        "17cbca2ba3de990258943d9e5a1788430ca3ad0d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Oct 22 11:24:23 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:56 2007 +1000"
      },
      "message": "Example launcher handle guests not being ready for input\n\nWe currently discard console and network input when the guest has no\ninput buffers.  This patch changes that, so that we simply stop\nlistening to that fd until the guest refills its input buffers.\n\nThis is particularly important because hvc_console without interrupts\ndoes backoff polling and so often lose characters if we discard.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "17cbca2ba3de990258943d9e5a1788430ca3ad0d",
      "tree": "528bc7c927fd4e29832101b6e98672698463bcb2",
      "parents": [
        "19f1537b7b8a9a82665db3ad8210a9d954d13acd"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Oct 22 11:24:22 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:56 2007 +1000"
      },
      "message": "Update example launcher for virtio\n\nImplements virtio-based console, network and block servers.  The block\nserver uses a thread so it\u0027s async, which is an improvement over the\nold synchronous implementation (but a little more complex).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "47436aa4ad054c1c7c8231618e86ebd9305308dc",
      "tree": "a9ba6e0521f9116442144a86e781a3164ec86094",
      "parents": [
        "c18acd73ffc209def08003a1927473096f66c5ad"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Oct 22 11:03:36 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:54 2007 +1000"
      },
      "message": "Boot with virtual \u003d\u003d physical to get closer to native Linux.\n\n1) This allows us to get alot closer to booting bzImages.\n\n2) It means we don\u0027t have to know page_offset.\n\n3) The Guest needs to modify the boot pagetables to create the\n   PAGE_OFFSET mapping before jumping to C code.\n\n4) guest_pa() walks the page tables rather than using page_offset.\n\n5) We don\u0027t use page_offset to figure out whether to emulate: it was\n   always kinda quesationable, and won\u0027t work for instructions done\n   before remapping (bzImage unpacking in particular).\n\n6) We still want the kernel address for tlb flushing: have the initial\n   hypercall give us that, too.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "511801dc31c095b2bfe3bf5c6a370dbe9b042a70",
      "tree": "fcd0f1111e503f33e39660d3aba55ff5b64ebf56",
      "parents": [
        "b410e7b1499c49513cab18275db8a8ab549d9e09"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Mon Oct 22 11:03:31 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:52 2007 +1000"
      },
      "message": "Change example launcher to use unsigned long not u32\n\nApply Clue 2x4 to lguest userland\u003c-\u003ekernel handling code and the\nlguest launcher. Pointers are not to be passed in u32\u0027s!\n\nBasic rule of thumb: Anything passing u32\u0027s back and forth should be\npassing unsigned longs to be portable to 64 bit archs.\n\nFor those who forgotten already, I repeat: NO POINTERS IN u32!\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "3c6b5bfa3cf3b4057788e08482a468cc3bc00780",
      "tree": "f0d67890f6f8c9d0840c9b19a483ec06cbf822ef",
      "parents": [
        "6649bb7af6a819b675bfcf22ab704737e905645a"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Oct 22 11:03:26 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:50 2007 +1000"
      },
      "message": "Introduce guest mem offset, static link example launcher\n\nIn order to avoid problematic special linking of the Launcher, we give\nthe Host an offset: this means we can use any memory region in the\nLauncher as Guest memory rather than insisting on mmap() at 0.\n\nThe result is quite pleasing: a number of casts are replaced with\nsimple additions.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "6649bb7af6a819b675bfcf22ab704737e905645a",
      "tree": "64e3b9e120ff1bafa074db2f76302230b88ac3f6",
      "parents": [
        "1f4e1de4f23e158abf976a76e1d0fce6e39b532a"
      ],
      "author": {
        "name": "Ronald G. Minnich",
        "email": "rminnich@gmail.com",
        "time": "Tue Aug 28 14:35:59 2007 -0700"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:50 2007 +1000"
      },
      "message": "Accept elf files that are valid but have sections that can not be mmap\u0027ed for some reason.\n\nPlan9 kernel binaries don\u0027t neatly align their ELF sections to our\npage boundaries.\n\nSigned-off-by: Ronald G. Minnich \u003crminnich@gmail.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b45d8cb054d7677d75176ae22a584fd84e4650e9",
      "tree": "f9b91a045a6e602ccb3d8a478d2b235701e1c09e",
      "parents": [
        "9653c4aff94e43de5f4ef918d47e00018beb4105"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Oct 22 10:56:24 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:49 2007 +1000"
      },
      "message": "Make lguest_launcher.h types userspace-friendly\n\nlguest_launcher.h uses \"u32\" not \"__u32\", which sets a bad example.  Fix that,\nand include \u003clinux/types.h\u003e.\n\nThis means we need to use -I on the Launcher build line so types.h is found.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "babed5c00225f109d6ebea368ad2deea2abcce32",
      "tree": "dbe48e07afdd57834fae74c5a7e40493ffc78019",
      "parents": [
        "25e82eba3a351cc3b263cae765a8786c827e42af"
      ],
      "author": {
        "name": "Glauber de Oliveira Costa",
        "email": "gcosta@redhat.com",
        "time": "Mon Oct 22 10:56:21 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:47 2007 +1000"
      },
      "message": "turn err into errx in lguest call sites\n\nThese two callsites should really be errx instead of err, since there is\nno errno associated with them in the moment they are issued.\n\nSigned-off-by: Glauber de Oliveira Costa \u003cgcosta@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Glauber de Oliveira Costa \u003cgcosta@redhat.com\u003e\n"
    },
    {
      "commit": "ee8e7cfe9d330d6f1ce0b9b1620d6df5d9cf6b70",
      "tree": "a9534bac7060e546c0c3e6ea34d0469d8903bf0e",
      "parents": [
        "9525ca0286afd54a5cd69d9ded741b4df8d0c554"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Oct 22 10:56:19 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:47 2007 +1000"
      },
      "message": "Make asm-x86/bootparam.h includable from userspace.\n\nTo actually write a bootloader (or, say, the lguest launcher)\ncurrently requires duplication of these structures.  Making them\nincludable from userspace is much nicer.\n\nWe merge the common userspace-required definitions of e820_32/64.h\ninto e820.h for export.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "96a388de5dc53a8b234b3fd41f3ae2cedc9ffd42",
      "tree": "d947a467aa2da3140279617bc4b9b101640d7bf4",
      "parents": [
        "27bd0c955648646abf2a353a8371d28c37bcd982"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Oct 11 11:20:03 2007 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Oct 11 11:20:03 2007 +0200"
      },
      "message": "i386/x86_64: move headers to include/asm-x86\n\nMove the headers to include/asm-x86 and fixup the\nheader install make rules\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f6a592e8abd2f2394623ce5427cbb4c265495974",
      "tree": "ff5e176b3ee0832978babae80bb13f32c8a77699",
      "parents": [
        "78bd8fbbcd66fc977baa40e7fd838a4461b0f727"
      ],
      "author": {
        "name": "Chris Malley",
        "email": "mail@chrismalley.co.uk",
        "time": "Wed Sep 26 14:19:18 2007 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Sep 26 09:22:04 2007 -0700"
      },
      "message": "lguest example launcher truncates block device file to 0 length on problems\n\nThe function should also use ftruncate64() rather than ftruncate() to prevent\nfiles over 4GB (not uncommon for a root filesystem) being zeroed.\n\nSigned-off-by: Chris Malley \u003cmail@chrismalley.co.uk\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f56a384e98aa81065038c4e16f39ed989ccae687",
      "tree": "923bcaabd76a88351fe5e61370143350747a90c4",
      "parents": [
        "f8f0fdcd40449d318f8dc30c1b361b0b7f54134a"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 26 10:41:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 26 11:35:17 2007 -0700"
      },
      "message": "lguest: documentation VII: FIXMEs\n\nDocumentation: The FIXMEs\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dde797899ac17ebb812b7566044124d785e98dc7",
      "tree": "531ae7fd415d267e49acfedbbf4f03cf86e5eac1",
      "parents": [
        "e2c9784325490c878b7f69aeec1bed98b288bd97"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 26 10:41:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 26 11:35:17 2007 -0700"
      },
      "message": "lguest: documentation IV: Launcher\n\nDocumentation: The Launcher\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f938d2c892db0d80d144253d4a7b7083efdbedeb",
      "tree": "1fbc946a9fb59827001a5d4d5224abe5e624e605",
      "parents": [
        "dfb68689bf3e3d31dc9fb5c2bde5379a4ca9b0ec"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 26 10:41:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 26 11:35:16 2007 -0700"
      },
      "message": "lguest: documentation I: Preparation\n\nThe netfilter code had very good documentation: the Netfilter Hacking HOWTO.\nNoone ever read it.\n\nSo this time I\u0027m trying something different, using a bit of Knuthiness.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6570c45995a6339597462434a81f358a38941ac4",
      "tree": "e1d963379a71e847f92c447a7ebffeb45bdf1d0f",
      "parents": [
        "6ddb23c78aeef40f549c5ad22a3e8dfa1f8297e0"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 23 18:43:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 24 12:24:59 2007 -0700"
      },
      "message": "link lguest example launcher non-static\n\nS.Caglar Onur points out that many distributions don\u0027t ship a static\nzlib.  Unfortunately the launcher currently maps virtual device memory\nwhere shared libraries want to go.\n\nThe solution is to pre-scan the args to figure out how much memory we\nhave, then allocate devices above that, rather than down from the top\npossible address.  This also turns out to be simpler.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8ca47e00690914a9e5e6c734baa37c829a2f2fa1",
      "tree": "928350cf70a685428cc5a9779044aa88c5771af9",
      "parents": [
        "b754416bfe9adac6468e45fba244d77f52048aeb"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 19 01:49:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:53 2007 -0700"
      },
      "message": "lguest: the documentation, example launcher\n\nA brief document describing how to use lguest.  Because lguest doesn\u0027t have an\nABI we also include an example launcher in the Documentation directory.\n\n[jmorris@namei.org: Fix up nat example in documentation]\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\nCc: Matias Zabaljauregui \u003cmatias.zabaljauregui@cern.ch\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
