)]}'
{
  "log": [
    {
      "commit": "8a45450d0a559912873428077908f9bc1411042c",
      "tree": "9f643a1c6d58fcdaf9b3555131c4258d860793d2",
      "parents": [
        "0967b7bf1c22b55777aba46ff616547feed0b141"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Oct 10 14:03:16 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:29 2007 +0200"
      },
      "message": "KVM: Replace enum by #define\n\nEasier for existence test (#ifdef) in userspace.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "96ad2cc6132479aa0aea485d0838a13fda765bd5",
      "tree": "dc3596b92981332cee0749004b7076a7d52a90b1",
      "parents": [
        "6bf9e962d14deb9e460afbbfd83ea2f450325c2d"
      ],
      "author": {
        "name": "Eddie Dong",
        "email": "eddie.dong@intel.com",
        "time": "Thu Sep 06 12:22:56 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:25 2007 +0200"
      },
      "message": "KVM: in-kernel LAPIC save and restore support\n\nThis patch adds a new vcpu-based IOCTL to save and restore the local\napic registers for a single vcpu. The kernel only copies the apic page as\na whole, extraction of registers is left to userspace side. On restore, the\nAPIC timer is restarted from the initial count, this introduces a little\ndelay, but works fine.\n\nSigned-off-by: Yaozu (Eddie) Dong \u003ceddie.dong@intel.com\u003e\nSigned-off-by: Qing He \u003cqing.he@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "6bf9e962d14deb9e460afbbfd83ea2f450325c2d",
      "tree": "050b2be2fcded255afbb2512ed9c07adbd3f5b0f",
      "parents": [
        "c52fb35a8b5dada749d35fbe15ac1f9857b22896"
      ],
      "author": {
        "name": "He, Qing",
        "email": "qing.he@intel.com",
        "time": "Sun Aug 05 10:49:16 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:25 2007 +0200"
      },
      "message": "KVM: in-kernel IOAPIC save and restore support\n\nThis patch adds support for in-kernel ioapic save and restore (to\nand from userspace). It uses the same get/set_irqchip ioctl as\nin-kernel PIC.\n\nSigned-off-by: Qing He \u003cqing.he@intel.com\u003e\nSigned-off-by: Yaozu (Eddie) Dong \u003ceddie.dong@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "6ceb9d791eeeb0a5493958f5d6d4dc7d91e59cf7",
      "tree": "8cef21acf9346fdbea36075029dc007fe969b51e",
      "parents": [
        "9cf98828d12285d1fb43e774c8c100a55f8f34e1"
      ],
      "author": {
        "name": "He, Qing",
        "email": "qing.he@intel.com",
        "time": "Thu Jul 26 11:05:18 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:25 2007 +0200"
      },
      "message": "KVM: Add get/set irqchip ioctls for in-kernel PIC live migration support\n\nThis patch adds two new ioctls to dump and write kernel irqchips for\nsave/restore and live migration. PIC s/r and l/m is implemented in this\npatch.\n\nSigned-off-by: Yaozu (Eddie) Dong \u003ceddie.dong@intel.com\u003e\nSigned-off-by: Qing He \u003cqing.he@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "b6958ce44a11a9e9425d2b67a653b1ca2a27796f",
      "tree": "503478ef27254df9b6ea21d2a6a279a7dfe2ef04",
      "parents": [
        "1fd4f2a5ed8f80cf6e23d2bdf78554f6a1ac7997"
      ],
      "author": {
        "name": "Eddie Dong",
        "email": "eddie.dong@intel.com",
        "time": "Wed Jul 18 12:15:21 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:25 2007 +0200"
      },
      "message": "KVM: Emulate hlt in the kernel\n\nBy sleeping in the kernel when hlt is executed, we simplify the in-kernel\nguest interrupt path considerably.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Yaozu (Eddie) Dong \u003ceddie.dong@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "97222cc8316328965851ed28d23f6b64b4c912d2",
      "tree": "469b2f72e74046a7aec5061df194c3f68812a224",
      "parents": [
        "7017fc3d1a12e30ea7df4992152978a188433457"
      ],
      "author": {
        "name": "Eddie Dong",
        "email": "eddie.dong@intel.com",
        "time": "Wed Sep 12 10:58:04 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:25 2007 +0200"
      },
      "message": "KVM: Emulate local APIC in kernel\n\nBecause lightweight exits (exits which don\u0027t involve userspace) are many\ntimes faster than heavyweight exits, it makes sense to emulate high usage\ndevices in the kernel.  The local APIC is one such device, especially for\nWindows and for SMP, so we add an APIC model to kvm.\n\nIt also allows in-kernel host-side drivers to inject interrupts without\ngoing through userspace.\n\n[compile fix on i386 from Jindrich Makovicka]\n\nSigned-off-by: Yaozu (Eddie) Dong \u003cEddie.Dong@intel.com\u003e\nSigned-off-by: Qing He \u003cqing.he@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "85f455f7ddbed403b34b4d54b1eaf0e14126a126",
      "tree": "1dba7aa8fee3c8f756e12049c496dee5baae752c",
      "parents": [
        "152d3f2f246ce3c2a0cf2fc6c2214663cd99aa83"
      ],
      "author": {
        "name": "Eddie Dong",
        "email": "eddie.dong@intel.com",
        "time": "Fri Jul 06 12:20:49 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:24 2007 +0200"
      },
      "message": "KVM: Add support for in-kernel PIC emulation\n\nSigned-off-by: Yaozu (Eddie) Dong \u003ceddie.dong@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "253abdee5ec2edd0a7f6dc2358bef42e3fdf1f39",
      "tree": "a9823774dcf3fa7a66c1895b78528d3239eaa71b",
      "parents": [
        "7e66f350cfc853043bfa71b281581dd6f92fa347"
      ],
      "author": {
        "name": "Yang, Sheng",
        "email": "sheng.yang@intel.com",
        "time": "Thu Aug 16 13:01:00 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:23 2007 +0200"
      },
      "message": "KVM: Communicate cr8 changes to userspace\n\nThis allows running 64-bit Windows.\n\nSigned-off-by: Sheng Yang \u003csheng.yang@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "519ef35341b4f360f072ea74e398b70a5a2fc270",
      "tree": "aabebcfaea5ed195dfa106863361c6e8c24269f7",
      "parents": [
        "1c3d14fe0ab75337a3f6c06b6bc18bcbc2b3d0bc"
      ],
      "author": {
        "name": "Jeff Dike",
        "email": "jdike@addtoit.com",
        "time": "Mon Jul 16 15:24:47 2007 -0400"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:20 2007 +0200"
      },
      "message": "KVM: add hypercall nr to kvm_run\n\nAdd the hypercall number to kvm_run and initialize it.  This changes the ABI,\nbut as this particular ABI was unusable before this no users are affected.\n\nSigned-off-by: Jeff Dike \u003cjdike@linux.intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "9eb829ced8c6f2e43a3a644ddf1279ffeee38a33",
      "tree": "ea8360405de41110dd0063a9838447c5a7ab2632",
      "parents": [
        "66aee91aaab8f998d28a61ed7733be17ad8e6d8f"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Jul 18 13:05:58 2007 +1000"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:18 2007 +0200"
      },
      "message": "KVM: Trivial: Use standard BITMAP macros, open-code userspace-exposed header\n\nCreating one\u0027s own BITMAP macro seems suboptimal: if we use manual\narithmetic in the one place exposed to userspace, we can use standard\nmacros elsewhere.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "dea8caee7b6971ae90e9d303b5d98dbf2dafed53",
      "tree": "64a6e284fa5ae8a7699937ef19c8994a5b7b49a1",
      "parents": [
        "65619eb5a88dae3dadbb1050f957ed357aa54a50"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 17 23:12:26 2007 +1000"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:17 2007 +0200"
      },
      "message": "KVM: Trivial: /dev/kvm interface is no longer experimental.\n\nKVM interface is no longer experimental.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "24cbc7e9cb0488095e4e144a762276c85ff55f9b",
      "tree": "edcd9287db085d197fd9935a4c29817bbcd6b3f9",
      "parents": [
        "dad3795d2baa4e02cbfd161d9089c73dea16b4ba"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jul 17 11:45:55 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:17 2007 +0200"
      },
      "message": "KVM: Future-proof the exit information union ABI\n\nNote that as the size of struct kvm_run is not part of the ABI, we can add\nthings at the end.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "2ff81f70b56dc1cdd3bf2f08414608069db6ef1a",
      "tree": "e0db2209f7a3a0284240e8245b12c7e72a5760b8",
      "parents": [
        "02c83209726270ddf9597deabc45e08f6fc3942c"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Apr 29 16:25:49 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:32 2007 +0300"
      },
      "message": "KVM: Remove unused \u0027instruction_length\u0027\n\nAs we no longer emulate in userspace, this is meaningless.  We don\u0027t\ncompute it on SVM anyway.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "02c83209726270ddf9597deabc45e08f6fc3942c",
      "tree": "570c2d96c1daba96ae2891e63b1e55b3959e9aba",
      "parents": [
        "e7df56e4a00358b6975fae3b70dc9df1282d427a"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Apr 29 15:02:17 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:32 2007 +0300"
      },
      "message": "KVM: Don\u0027t require explicit indication of completion of mmio or pio\n\nIt is illegal not to return from a pio or mmio request without completing\nit, as mmio or pio is an atomic operation.  Therefore, we can simplify\nthe userspace interface by avoiding the completion indication.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "b8836737d92c139be770eae3d6574e33d1224caf",
      "tree": "9c03b429fda12e6fbdc97469eb039076aa397744",
      "parents": [
        "e8207547d2f7b2f557bdb73015c1f74c32474438"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Apr 01 16:34:31 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:28 2007 +0300"
      },
      "message": "KVM: Add fpu get/set operations\n\nThese are really helpful when migrating an floating point app to another\nmachine.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "e8207547d2f7b2f557bdb73015c1f74c32474438",
      "tree": "7e5c15bec5cf9ef45a81227b009e6449f5c6d47c",
      "parents": [
        "954bbbc236afe23b368abdf4942f313a5f6e1d50"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Mar 30 16:54:30 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:28 2007 +0300"
      },
      "message": "KVM: Add physical memory aliasing feature\n\nWith this, we can specify that accesses to one physical memory range will\nbe remapped to another.  This is useful for the vga window at 0xa0000 which\nis used as a movable window into the (much larger) framebuffer.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "039576c03c35e2f990ad9bb9c39e1bad3cd60d34",
      "tree": "fa6c81a40a36d2c0da1cf20c5deb45cb9bd7ba95",
      "parents": [
        "f0fe510864a4520a85dfa35ae14f5f376c56efc7"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Mar 20 12:46:50 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:25 2007 +0300"
      },
      "message": "KVM: Avoid guest virtual addresses in string pio userspace interface\n\nThe current string pio interface communicates using guest virtual addresses,\nrelying on userspace to translate addresses and to check permissions.  This\ninterface cannot fully support guest smp, as the check needs to take into\naccount two pages at one in case an unaligned string transfer straddles a\npage boundary.\n\nChange the interface not to communicate guest addresses at all; instead use\na buffer page (mmaped by userspace) and do transfers there.  The kernel\nmanages the virtual to physical translation and can perform the checks\natomically by taking the appropriate locks.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "07c45a366d89f8eaec5d9890e810171b408f9a52",
      "tree": "2f54f8c4ba795a1432ee6ac2e8042a472b87550a",
      "parents": [
        "1961d276c877b99f5f16aaf36377c75e0e191c3a"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Mar 07 13:05:38 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:24 2007 +0300"
      },
      "message": "KVM: Allow kernel to select size of mmap() buffer\n\nThis allows us to store offsets in the kernel/user kvm_run area, and be\nsure that userspace has them mapped.  As offsets can be outside the\nkvm_run struct, userspace has no way of knowing how much to mmap.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "1961d276c877b99f5f16aaf36377c75e0e191c3a",
      "tree": "4ea92fc2821bd0f9013ee567ee2f11c6cc532d79",
      "parents": [
        "6722c51c51518af9581ab6cd9b6aec93774334a6"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Mar 05 19:46:05 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:24 2007 +0300"
      },
      "message": "KVM: Add guest mode signal mask\n\nAllow a special signal mask to be used while executing in guest mode.  This\nallows signals to be used to interrupt a vcpu without requiring signal\ndelivery to a userspace handler, which is quite expensive.  Userspace still\nreceives -EINTR and can get the signal via sigwait().\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "1b19f3e61d7e1edb395dd64bf7d63621a37af8ca",
      "tree": "52d90cc6e505f84ec741770950f4f07be45b7fba",
      "parents": [
        "8eb7d334bd8e693340ee198280f7d45035cdab8c"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 14:24:03 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:24 2007 +0300"
      },
      "message": "KVM: Add a special exit reason when exiting due to an interrupt\n\nThis is redundant, as we also return -EINTR from the ioctl, but it\nallows us to examine the exit_reason field on resume without seeing\nold data.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "8eb7d334bd8e693340ee198280f7d45035cdab8c",
      "tree": "438ec0b6b6c7714e436884576a3fdce84507813f",
      "parents": [
        "b4e63f560beb187cffdaf706e534a1e2f9effb66"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 14:17:08 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:24 2007 +0300"
      },
      "message": "KVM: Fold kvm_run::exit_type into kvm_run::exit_reason\n\nCurrently, userspace is told about the nature of the last exit from the\nguest using two fields, exit_type and exit_reason, where exit_type has\njust two enumerations (and no need for more).  So fold exit_type into\nexit_reason, reducing the complexity of determining what really happened.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "b4e63f560beb187cffdaf706e534a1e2f9effb66",
      "tree": "1fe1a640530af04d1d722e0c99c8086b0e13f1e7",
      "parents": [
        "5d308f4550d9dc4c236e08b0377b610b9578577b"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 13:59:30 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:24 2007 +0300"
      },
      "message": "KVM: Allow userspace to process hypercalls which have no kernel handler\n\nThis is useful for paravirtualized graphics devices, for example.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "5d308f4550d9dc4c236e08b0377b610b9578577b",
      "tree": "c19005059de37403db7962bcfa7bac657331b052",
      "parents": [
        "739872c56f3322c38320c7a5a543ef6f56f174bc"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Mar 01 17:56:20 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:24 2007 +0300"
      },
      "message": "KVM: Add method to check for backwards-compatible API extensions\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "739872c56f3322c38320c7a5a543ef6f56f174bc",
      "tree": "1dbd6e3c541f14e9553fc32a1b1c1d4096a77858",
      "parents": [
        "2a4dac3952468157297b81ae0a29815c02ead179"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Mar 01 17:20:13 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:23 2007 +0300"
      },
      "message": "KVM: Renumber ioctls\n\nThe recent changes have left the ioctl numbers in complete disarray.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "2a4dac3952468157297b81ae0a29815c02ead179",
      "tree": "d3ee5dcf749061cc588be792b0eeaa06f02e69a1",
      "parents": [
        "106b552b43beac2694df5fbafc8f125a72df5f65"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Mar 01 16:47:06 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:23 2007 +0300"
      },
      "message": "KVM: Remove minor wart from KVM_CREATE_VCPU ioctl\n\nThat ioctl does not transfer any data, so it should be an _IO rather than an\n_IOW.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "106b552b43beac2694df5fbafc8f125a72df5f65",
      "tree": "3d26f1f7148eaa4cb6e6d882418db283d9f2d29f",
      "parents": [
        "06465c5a3aa9948a7b00af49cd22ed8f235cdb0f"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Mar 01 16:20:40 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:23 2007 +0300"
      },
      "message": "KVM: Remove the \u0027emulated\u0027 field from the userspace interface\n\nWe no longer emulate single instructions in userspace.  Instead, we service\nmmio or pio requests.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "06465c5a3aa9948a7b00af49cd22ed8f235cdb0f",
      "tree": "2a21941ae6f28445abbb3cc80dd3416cf2241b8d",
      "parents": [
        "46fc1477887c41c8e900f2c95485e222b9a54822"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Feb 28 20:46:53 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:23 2007 +0300"
      },
      "message": "KVM: Handle cpuid in the kernel instead of punting to userspace\n\nKVM used to handle cpuid by letting userspace decide what values to\nreturn to the guest.  We now handle cpuid completely in the kernel.  We\nstill let userspace decide which values the guest will see by having\nuserspace set up the value table beforehand (this is necessary to allow\nmanagement software to set the cpu features to the least common denominator,\nso that live migration can work).\n\nThe motivation for the change is that kvm kernel code can be impacted by\ncpuid features, for example the x86 emulator.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "46fc1477887c41c8e900f2c95485e222b9a54822",
      "tree": "ef9d4d4b6fc32f3d6b4e77a87d1b47b6da455574",
      "parents": [
        "9a2bb7f486dc639a1cf2ad803bf2227f0dc0809d"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Feb 22 19:39:30 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:23 2007 +0300"
      },
      "message": "KVM: Do not communicate to userspace through cpu registers during PIO\n\nCurrently when passing the a PIO emulation request to userspace, we\nrely on userspace updating %rax (on \u0027in\u0027 instructions) and %rsi/%rdi/%rcx\n(on string instructions).  This (a) requires two extra ioctls for getting\nand setting the registers and (b) is unfriendly to non-x86 archs, when\nthey get kvm ports.\n\nSo fix by doing the register fixups in the kernel and passing to userspace\nonly an abstract description of the PIO to be done.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "9a2bb7f486dc639a1cf2ad803bf2227f0dc0809d",
      "tree": "db323e11ae5a5286a1e344b444162be53bc4d9fc",
      "parents": [
        "1ea252afcd4b264b71d9c3f55358ff5ba4c04f1b"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Feb 22 12:58:31 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:23 2007 +0300"
      },
      "message": "KVM: Use a shared page for kernel/user communication when runing a vcpu\n\nInstead of passing a \u0027struct kvm_run\u0027 back and forth between the kernel and\nuserspace, allocate a page and allow the user to mmap() it.  This reduces\nneedless copying and makes the interface expandable by providing lots of\nfree space.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "f7e6a45ad9224dfe9f0d76a45c43be7ccafe0b82",
      "tree": "70a99de2820f90186facd2caf41c14b7e2504e1c",
      "parents": [
        "bccf2150fe62dda5fb09efa2f64d2a234694eb48"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Feb 21 19:47:40 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:42 2007 +0200"
      },
      "message": "KVM: Bump API version\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "bccf2150fe62dda5fb09efa2f64d2a234694eb48",
      "tree": "b5e6fc6440b864ddd1c32c4cee1916a0c5484c63",
      "parents": [
        "c5ea76600653b1a242321734435cb1c54778941a"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Feb 21 18:04:26 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:42 2007 +0200"
      },
      "message": "KVM: Per-vcpu inodes\n\nAllocate a distinct inode for every vcpu in a VM.  This has the following\nbenefits:\n\n - the filp cachelines are no longer bounced when f_count is incremented on\n   every ioctl()\n - the API and internal code are distinctly clearer; for example, on the\n   KVM_GET_REGS ioctl, there is no need to copy the vcpu number from\n   userspace and then copy the registers back; the vcpu identity is derived\n   from the fd used to make the call\n\nRight now the performance benefits are completely theoretical since (a) we\ndon\u0027t support more than one vcpu per VM and (b) virtualization hardware\ninefficiencies completely everwhelm any cacheline bouncing effects.  But\nboth of these will change, and we need to prepare the API today.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "f17abe9a44425ff9c9858bc1806cc09d6b5dad1c",
      "tree": "47b060818bbea16dfecf21b8008a99c978a5f0c3",
      "parents": [
        "37e29d906c6eb1ece907e509160518b2edc2c083"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Feb 21 19:28:04 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:42 2007 +0200"
      },
      "message": "KVM: Create an inode per virtual machine\n\nThis avoids having filp-\u003ef_op and the corresponding inode-\u003ei_fop different,\nwhich is a little unorthodox.\n\nThe ioctl list is split into two: global kvm ioctls and per-vm ioctls.  A new\nioctl, KVM_CREATE_VM, is used to create VMs and return the VM fd.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "8cd133073f9b5cd335c0b2e4740aceb025d50ca9",
      "tree": "9cbfc34b90769163c75788d15ded022127791ee5",
      "parents": [
        "26bb83a755593a53bd248e20d699b0c813f1e238"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Feb 12 00:54:41 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:40 2007 -0800"
      },
      "message": "[PATCH] kvm: Fix mismatch between 32-bit and 64-bit abi\n\nUnfortunately requiring a version bump.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54810342f1372afdaf6cb9a6aea0c35df187db12",
      "tree": "97775733e60a5875f88f30c38a69ba278479299a",
      "parents": [
        "d92899a0014aa795c21d3cf726ef5ff7684399f4"
      ],
      "author": {
        "name": "Dor Laor",
        "email": "dor.laor@qumranet.com",
        "time": "Mon Feb 12 00:54:39 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:40 2007 -0800"
      },
      "message": "[PATCH] kvm: Two-way apic tpr synchronization\n\nWe report the value of cr8 to userspace on an exit.  Also let userspace change\ncr8 when we re-enter the guest.  The lets 64-bit guest code maintain the tpr\ncorrectly.\n\nThanks for Yaniv Kamay for the idea.\n\nSigned-off-by: Dor Laor \u003cdor.laor@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "46fe4ddd9dbb15305ab9b458e6cfa4dd47ac3e47",
      "tree": "d7a7d0443d519f7de0b6c5157cf610726b4ab0bf",
      "parents": [
        "73b1087e6176a34c01eea3db269848f72fad72c1"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Fri Jan 26 00:56:42 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jan 26 13:50:57 2007 -0800"
      },
      "message": "[PATCH] KVM: SVM: Propagate cpu shutdown events to userspace\n\nThis patch implements forwarding of SHUTDOWN intercepts from the guest on to\nuserspace on AMD SVM.  A SHUTDOWN event occurs when the guest produces a\ntriple fault (e.g.  on reboot).  This also fixes the bug that a guest reboot\nactually causes a host reboot under some circumstances.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c1150d8cf9e9d2b356fab52d79f2366985e5511b",
      "tree": "dbd50c3e064c22dcab7ce4acc7236370c6750923",
      "parents": [
        "e097f35ce58eb8d687f3a300247cf1a978fcea39"
      ],
      "author": {
        "name": "Dor Laor",
        "email": "dor.laor@qumranet.com",
        "time": "Fri Jan 05 16:36:24 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:22 2007 -0800"
      },
      "message": "[PATCH] KVM: Improve interrupt response\n\nThe current interrupt injection mechanism might delay an interrupt under\nthe following circumstances:\n\n - if injection fails because the guest is not interruptible (rflags.IF clear,\n   or after a \u0027mov ss\u0027 or \u0027sti\u0027 instruction).  Userspace can check rflags,\n   but the other cases or not testable under the current API.\n - if injection fails because of a fault during delivery.  This probably\n   never happens under normal guests.\n - if injection fails due to a physical interrupt causing a vmexit so that\n   it can be handled by the host.\n\nIn all cases the guest proceeds without processing the interrupt, reducing\nthe interactive feel and interrupt throughput of the guest.\n\nThis patch fixes the situation by allowing userspace to request an exit\nwhen the \u0027interrupt window\u0027 opens, so that it can re-inject the interrupt\nat the right time.  Guest interactivity is very visibly improved.\n\nSigned-off-by: Dor Laor \u003cdor.laor@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0b76e20b27d20f7cb240e6b1b2dbebaa1b7f9b60",
      "tree": "409d8ca0f46500b5998aca9400c3419f9ebb789f",
      "parents": [
        "0f8e3d365a30a8788d4c348e2885bac9640bf4d0"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Dec 22 01:06:02 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 08:55:46 2006 -0800"
      },
      "message": "[PATCH] KVM: API versioning\n\nAdd compile-time and run-time API versioning.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6aa8b732ca01c3d7a54e93f4d701b8aabbe60fb7",
      "tree": "23fcbe6f4918cacdae26d513a2bd13e91d8b4c38",
      "parents": [
        "f5f1a24a2caa299bb7d294aee92d7dd3410d9ed7"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Dec 10 02:21:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:22 2006 -0800"
      },
      "message": "[PATCH] kvm: userspace interface\n\nweb site: http://kvm.sourceforge.net\n\nmailing list: kvm-devel@lists.sourceforge.net\n  (http://lists.sourceforge.net/lists/listinfo/kvm-devel)\n\nThe following patchset adds a driver for Intel\u0027s hardware virtualization\nextensions to the x86 architecture.  The driver adds a character device\n(/dev/kvm) that exposes the virtualization capabilities to userspace.  Using\nthis driver, a process can run a virtual machine (a \"guest\") in a fully\nvirtualized PC containing its own virtual hard disks, network adapters, and\ndisplay.\n\nUsing this driver, one can start multiple virtual machines on a host.\n\nEach virtual machine is a process on the host; a virtual cpu is a thread in\nthat process.  kill(1), nice(1), top(1) work as expected.  In effect, the\ndriver adds a third execution mode to the existing two: we now have kernel\nmode, user mode, and guest mode.  Guest mode has its own address space mapping\nguest physical memory (which is accessible to user mode by mmap()ing\n/dev/kvm).  Guest mode has no access to any I/O devices; any such access is\nintercepted and directed to user mode for emulation.\n\nThe driver supports i386 and x86_64 hosts and guests.  All combinations are\nallowed except x86_64 guest on i386 host.  For i386 guests and hosts, both pae\nand non-pae paging modes are supported.\n\nSMP hosts and UP guests are supported.  At the moment only Intel\nhardware is supported, but AMD virtualization support is being worked on.\n\nPerformance currently is non-stellar due to the naive implementation of the\nmmu virtualization, which throws away most of the shadow page table entries\nevery context switch.  We plan to address this in two ways:\n\n- cache shadow page tables across tlb flushes\n- wait until AMD and Intel release processors with nested page tables\n\nCurrently a virtual desktop is responsive but consumes a lot of CPU.  Under\nWindows I tried playing pinball and watching a few flash movies; with a recent\nCPU one can hardly feel the virtualization.  Linux/X is slower, probably due\nto X being in a separate process.\n\nIn addition to the driver, you need a slightly modified qemu to provide I/O\ndevice emulation and the BIOS.\n\nCaveats (akpm: might no longer be true):\n\n- The Windows install currently bluescreens due to a problem with the\n  virtual APIC.  We are working on a fix.  A temporary workaround is to\n  use an existing image or install through qemu\n- Windows 64-bit does not work.  That\u0027s also true for qemu, so it\u0027s\n  probably a problem with the device model.\n\n[bero@arklinux.org: build fix]\n[simon.kagstrom@bth.se: build fix, other fixes]\n[uril@qumranet.com: KVM: Expose interrupt bitmap]\n[akpm@osdl.org: i386 build fix]\n[mingo@elte.hu: i386 fixes]\n[rdreier@cisco.com: add log levels to all printks]\n[randy.dunlap@oracle.com: Fix sparse NULL and C99 struct init warnings]\n[anthony@codemonkey.ws: KVM: AMD SVM: 32-bit host support]\nSigned-off-by: Yaniv Kamay \u003cyaniv@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\nCc: Simon Kagstrom \u003csimon.kagstrom@bth.se\u003e\nCc: Bernhard Rosenkraenzer \u003cbero@arklinux.org\u003e\nSigned-off-by: Uri Lublin \u003curil@qumranet.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Anthony Liguori \u003canthony@codemonkey.ws\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
