)]}'
{
  "log": [
    {
      "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": "acdd0b6292b282c4511897ac2691a47befbf1c6a",
      "tree": "1bfcfc32b11d35e99fec5bbf52b19d6ee038f25e",
      "parents": [
        "cefcad1773197523e11e18b669f245e6a8d32058"
      ],
      "author": {
        "name": "Matias Zabaljauregui",
        "email": "zabaljauregui@gmail.com",
        "time": "Fri Jun 12 22:27:07 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:08 2009 +0930"
      },
      "message": "lguest: PAE support\n\nThis version requires that host and guest have the same PAE status.\nNX cap is not offered to the guest, yet.\n\nSigned-off-by: Matias Zabaljauregui \u003czabaljauregui@gmail.com\u003e\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": "2644f17d6c932929fd68cfec95691490947e0fd1",
      "tree": "82e3c567fec2c48aa4d5a053da2563e4a2fdcf5a",
      "parents": [
        "61f4bc83fea248a3092beb7ba43daa5629615513"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:03 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jun 12 22:27:03 2009 +0930"
      },
      "message": "lguest: clean up example launcher compile flags.\n\n18 months ago 5bbf89fc260830f3f58b331d946a16b39ad1ca2d changed to loading\nbzImages directly, and no longer manually ungzipping them, so we no longer\nneed libz.\n\nAlso, -m32 is useful for those on 64-bit platforms (and harmless on\n32-bit).\n\nReported-by: Ron Minnich \u003crminnich@gmail.com\u003e\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": "38cfe968040250b89c3554a17219a9fda45b9665",
      "tree": "9a4bcf5f2194ceed0a3f17eb95fb13cbe0b3f3e9",
      "parents": [
        "9536c26b31ae34ba6371a1b8f406028e9756f913"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sun Apr 19 23:14:02 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sun Apr 19 23:14:02 2009 +0930"
      },
      "message": "lguest: document 32-bit and PAE requirements\n\nRobert noted that we don\u0027t actually document that lguest is 32-bit only,\nnor that PAE must be off (CONFIG_PAE is now prompted for if HIGHMEM is\nset to \"off).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: lguest@ozlabs.org\nCc: \"Robert P. J. Day\" \u003crpjday@crashcourse.ca\u003e\n"
    },
    {
      "commit": "9536c26b31ae34ba6371a1b8f406028e9756f913",
      "tree": "c9f4026fe71e3ceeff12849fc9a568b01514e65d",
      "parents": [
        "84a139a985300901dfad99bd93c7345d180af860"
      ],
      "author": {
        "name": "Matt Kraai",
        "email": "kraai@ftbfs.org",
        "time": "Thu Apr 16 23:46:20 2009 -0700"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sun Apr 19 23:14:02 2009 +0930"
      },
      "message": "lguest: tell git to ignore Documentation/lguest/lguest\n\nThis is the example lguest launcher binary.\n\nSigned-off-by: Matt Kraai \u003ckraai@ftbfs.org\u003e\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": "b44d49ab0954accefba4c71274ab58abe1c25c52",
      "tree": "fb160500ae840f137e8289a2d74f130813d3cdd4",
      "parents": [
        "72410af921cbc9018da388ca1ddf75880a033ac1"
      ],
      "author": {
        "name": "Tim \u0027mithro\u0027 Ansell",
        "email": "mithro@mithis.com",
        "time": "Thu Jan 22 15:06:41 2009 +1100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 30 11:34:10 2009 +1030"
      },
      "message": "lguest: disable the FORTIFY for lguest.\n\nMakes all the warnings go away when compiling lguest on Ubuntu on\nIntrepid or greater.\n\nSigned-off-by: Timothy R Ansell \u003cmithro@mithis.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": "9b7a448e2b23101a776ddf639c9037d47244f7ab",
      "tree": "43ad3b84a51a0af1a6b252222946f45b29d999b7",
      "parents": [
        "b488f22d70f1c2451618b9991b9665d2c6b31e2b"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Tue Mar 11 13:36:14 2008 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Mar 28 11:05:52 2008 +1100"
      },
      "message": "lguest: lguest.txt documentation fix\n\nMention the config options for the Virtio drivers and move the Virtualization\nmenu to the toplevel.\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b488f22d70f1c2451618b9991b9665d2c6b31e2b",
      "tree": "f2d7d91408edced2ee31744c857ae4e7546f974f",
      "parents": [
        "bd6c26900bae19bd51abedfc9a8a281afbba3a06"
      ],
      "author": {
        "name": "Tim Ansell",
        "email": "mithro@mithis.com",
        "time": "Mon Feb 11 18:13:42 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Mar 28 11:05:52 2008 +1100"
      },
      "message": "lguest: Add puppies which where previously missing.\n\nlguest doesn\u0027t have features, it has puppies!\n\nSigned-off-by: Timothy R Ansell \u003cmithro@mithis.com\u003e\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": "2e12a7fb0d79d011ff9e0b09b53ca4438e5604de",
      "tree": "12e57ede14d794601ef98732733c1f7e4c0bbcf3",
      "parents": [
        "459e216429a04779216b61f0fb61938a459fd1ca"
      ],
      "author": {
        "name": "Sheela",
        "email": "sheela.sequeira@gmail.com",
        "time": "Mon Dec 17 16:19:53 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Dec 17 19:28:16 2007 -0800"
      },
      "message": "Fix lguest documentation\n\nShare net is not supported, Rusty is an \"idiot\" .\n\nSigned-off-by: Sheela Sequeira \u003csheela.sequeira@gmail.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-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": "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": "1f5a29022ac66bc90cbe2a2162f56e9cd7b393ef",
      "tree": "9cc0827eb6417522ce61ea36f26ca1e4415409f2",
      "parents": [
        "2d37f94a28170ca656438758fca577acb49a7932"
      ],
      "author": {
        "name": "Chris Malley",
        "email": "mail@chrismalley.co.uk",
        "time": "Mon Oct 22 11:27:54 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:57 2007 +1000"
      },
      "message": "Update lguest documentation to reflect the new virtual block device name.\n\nSigned-off-by: Chris Malley \u003cmail@chrismalley.co.uk\u003e\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": "9653c4aff94e43de5f4ef918d47e00018beb4105",
      "tree": "a02ea6c46dbb471c54996c376c8e5c2510133b73",
      "parents": [
        "141341cdae5f1745e3903a6b9732672230b1dd64"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Oct 22 10:56:23 2007 +1000"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Oct 23 15:49:48 2007 +1000"
      },
      "message": "lguest.txt update\n\no Describe the new split configurations\no Highlight code documentation in drivers/lguest/README\no Point out necessity of having a getty on /dev/hvc0\no Remove gratuitous \"m\" in example\no Don\u0027t discuss I/O model here, stick to user documentation.\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": "e3bcf5e2785aa49f75f36a8d27d601891a7ff12b",
      "tree": "8a79cd195751b325e4972ef1b53ff2cc5a9eb5fe",
      "parents": [
        "0d027c01cd36b8cff727c78d2e40d334ba9895a8"
      ],
      "author": {
        "name": "Ronald G. Minnich",
        "email": "rminnich@gmail.com",
        "time": "Thu Aug 09 21:07:24 2007 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Aug 09 08:14:56 2007 -0700"
      },
      "message": "lguest: avoid shared libraries mapped over guest memory\n\nSome versions of ld.so mmap the shared libraries right in over guest\nmemory, so compile lguest statically by default.\n\n[ FC7 maps shared libraries very low, where the launcher maps guest\u0027s\n  physical memory.  Quick fix is to link Launcher static, real fix is\n  for 2.6.24. ]\n\n-static is a simple fix. I expect this problem will be more common than we\nlike, as different distro\u0027s make different \"improvements\" to ld.so\n\nSigned-off-by: Ronald G. Minnich \u003crminnich@gmail.com\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"
    }
  ]
}
