)]}'
{
  "log": [
    {
      "commit": "d172fcd3ae1ca7ac27ec8904242fd61e0e11d332",
      "tree": "5009ae88a2ab2aa7f17219c7ddfc0a694c2ff6b4",
      "parents": [
        "94886b84b1bcdc95f34f70e7fce407efefe472e1"
      ],
      "author": {
        "name": "Laurent Vivier",
        "email": "Laurent.Vivier@bull.net",
        "time": "Mon Oct 15 17:00:19 2007 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 15 17:00:19 2007 +0200"
      },
      "message": "sched: guest CPU accounting: maintain guest state in KVM\n\nModify KVM to update guest time accounting.\n\n[ mingo@elte.hu: ported to 2.6.24 KVM. ]\n\nSigned-off-by: Laurent Vivier \u003cLaurent.Vivier@bull.net\u003e\nAcked-by: Avi Kivity \u003cavi@qumranet.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "054b1369679fb97582fc77f25a700d4290ff3e89",
      "tree": "fc06afd41830c263f6c068d1bd743ef7fcf9637d",
      "parents": [
        "fd2a76086527cbe074b08a8820253228cd919ece"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Sep 12 13:21:09 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:28 2007 +0200"
      },
      "message": "KVM: Improve emulation failure reporting\n\nReport failed opcodes from all locations.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "04d2cc7780d48a212843e38d46402d97fa1f4774",
      "tree": "a209131bad59abcf574abbaae23145db3c4005e0",
      "parents": [
        "29bd8a78082f2d7e2165a735f50b5c716ef3213b"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Sep 10 18:10:54 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:28 2007 +0200"
      },
      "message": "KVM: Move main vcpu loop into subarch independent code\n\nThis simplifies adding new code as well as reducing overall code size.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "cbdd1bea2a2dce4c0b45c5f0122c150d9f07f0bc",
      "tree": "c01443051868880733c2973abdd59c1d82fdd243",
      "parents": [
        "0d8d2bd4f20c8a2a254b4fe3bc114f12214a6d73"
      ],
      "author": {
        "name": "Christian Ehrhardt",
        "email": "ehrhardt@linux.vnet.ibm.com",
        "time": "Sun Sep 09 15:41:59 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:27 2007 +0200"
      },
      "message": "KVM: Rename kvm_arch_ops to kvm_x86_ops\n\nThis patch just renames the current (misnamed) _arch namings to _x86 to\nensure better readability when a real arch layer takes place.\n\nSigned-off-by: Christian Ehrhardt \u003cehrhardt@linux.vnet.ibm.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "0d8d2bd4f20c8a2a254b4fe3bc114f12214a6d73",
      "tree": "ca8234bdcb71b7cc0955ef89ae5b028d19ca709e",
      "parents": [
        "1747fb71fd7c9389696e91f354d2f841b5c85790"
      ],
      "author": {
        "name": "Laurent Vivier",
        "email": "Laurent.Vivier@bull.net",
        "time": "Thu Aug 30 14:56:21 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:27 2007 +0200"
      },
      "message": "KVM: Simplify memory allocation\n\nThe mutex-\u003esplinlock convertion alllows us to make some code simplifications.\nAs we can keep the lock longer, we don\u0027t have to release it and then\nhave to check if the environment has not been modified before re-taking it. We\ncan remove kvm-\u003ebusy and kvm-\u003ememory_config_version.\n\nSigned-off-by: Laurent Vivier \u003cLaurent.Vivier@bull.net\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "1747fb71fd7c9389696e91f354d2f841b5c85790",
      "tree": "8c0658884e62693a94c2ebd35f83331ffa083a7d",
      "parents": [
        "81f50e3bfdf864103ef890ca156e7a9c922c7089"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Sep 06 01:21:32 2007 +1000"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:27 2007 +0200"
      },
      "message": "KVM: Hoist SVM\u0027s get_cs_db_l_bits into core code.\n\nSVM gets the DB and L bits for the cs by decoding the segment.  This\nis in fact the completely generic code, so hoist it for kvm-lite to use.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "b85b9ee9259917f248ee1507d7d1f575f4fc27dd",
      "tree": "7455f36a04f4e87665a1b44dcfc1b5595eeb9289",
      "parents": [
        "c9a1185c945c8db3185ad40092963cbb39192e31"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sun Sep 09 14:12:54 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:27 2007 +0200"
      },
      "message": "KVM: Clean up unloved invlpg emulation\n\ninvlpg shouldn\u0027t fetch the \"src\" address, since it may not be valid,\nhowever SVM\u0027s \"solution\" which neuters emulation of all group 7\ninstruction is horrible and breaks kvm-lite.  The simplest fix is to\nput a special check in for invlpg.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "c9a1185c945c8db3185ad40092963cbb39192e31",
      "tree": "f3125cea5f345710a0074a1f7c9c54e0d2cbe71e",
      "parents": [
        "380102c8e431ba8b25a5b3a29e4529ca02ede4c8"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sun Sep 09 14:10:57 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:27 2007 +0200"
      },
      "message": "KVM: Remove the unused invlpg member of struct kvm_arch_ops.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "c5ec153402b6d276fe20029da1059ba42a4b55e5",
      "tree": "a323fd0466f606b66fc7239e78569863d62f6300",
      "parents": [
        "932f72adbe76f098922c746737cb0bd75fc21e27"
      ],
      "author": {
        "name": "He, Qing",
        "email": "qing.he@intel.com",
        "time": "Mon Sep 03 17:07:41 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:26 2007 +0200"
      },
      "message": "KVM: enable in-kernel APIC INIT/SIPI handling\n\nThis patch enables INIT/SIPI handling using in-kernel APIC by\nintroducing a -\u003emp_state field to emulate the SMP state transition.\n\n[avi: remove smp_processor_id() warning]\n\nSigned-off-by: Qing He \u003cqing.he@intel.com\u003e\nSigned-off-by: Xin Li \u003cxin.b.li@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "932f72adbe76f098922c746737cb0bd75fc21e27",
      "tree": "55a98bd0692094289d4bea4f5b2c58835f8b59df",
      "parents": [
        "40487c680d5855459dfdce340df13d40071bb774"
      ],
      "author": {
        "name": "He, Qing",
        "email": "qing.he@intel.com",
        "time": "Mon Sep 03 17:01:36 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:26 2007 +0200"
      },
      "message": "KVM: round robin for APIC lowest priority delivery mode\n\nSigned-off-by: Qing He \u003cqing.he@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "2a8067f17b8442ecce0b14e134823020ff33b4fa",
      "tree": "e7f65775b3ced0c42de2df8118a84e7ddb9fff7d",
      "parents": [
        "96ad2cc6132479aa0aea485d0838a13fda765bd5"
      ],
      "author": {
        "name": "Eddie Dong",
        "email": "eddie.dong@intel.com",
        "time": "Mon Aug 06 16:29:07 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:26 2007 +0200"
      },
      "message": "KVM: pending irq save/restore\n\nAdd in kernel irqchip save/restore support for pending vectors.\n\n[avi: fix compile warning on i386]\n[avi: remove printk]\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": "1fd4f2a5ed8f80cf6e23d2bdf78554f6a1ac7997",
      "tree": "eb7d79c7f39788547a5dd9844295814085fcccc6",
      "parents": [
        "97222cc8316328965851ed28d23f6b64b4c912d2"
      ],
      "author": {
        "name": "Eddie Dong",
        "email": "eddie.dong@intel.com",
        "time": "Wed Jul 18 12:03:39 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:25 2007 +0200"
      },
      "message": "KVM: In-kernel I/O APIC model\n\nThis allows in-kernel host-side device drivers to raise guest interrupts\nwithout going to userspace.\n\n[avi: fix level-triggered interrupt redelivery on eoi]\n[avi: add missing #include]\n[avi: avoid redelivery of edge-triggered interrupt]\n[avi: implement polarity]\n[avi: don\u0027t deliver edge-triggered interrupts when unmasking]\n[avi: fix host oops on invalid guest access]\n\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": "7017fc3d1a12e30ea7df4992152978a188433457",
      "tree": "ebbe0e5852ddd58bddfed389412c86c7692d2724",
      "parents": [
        "85f455f7ddbed403b34b4d54b1eaf0e14126a126"
      ],
      "author": {
        "name": "Eddie Dong",
        "email": "eddie.dong@intel.com",
        "time": "Wed Jul 18 11:34:57 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:25 2007 +0200"
      },
      "message": "KVM: Define and use cr8 access functions\n\nThis patch is to wrap APIC base register and CR8 operation which can\nprovide a unique API for user level irqchip and kernel irqchip.\nThis is a preparation of merging lapic/ioapic patch.\n\nSigned-off-by: Yaozu (Eddie) Dong \u003ceddie.dong@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": "2e2c618dad6d5768da4a891ff71fc1ca0cbd3fe0",
      "tree": "7fe724c27e9c3215266542db5141b5da972b5bc3",
      "parents": [
        "33f5fa1664046208b890e9231a47e377fdfc7762"
      ],
      "author": {
        "name": "Izik Eidus",
        "email": "izike@qumranet.com",
        "time": "Mon Aug 20 18:11:00 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:24 2007 +0200"
      },
      "message": "KVM: Support more memory slots\n\nNeeded for mapping memory at 4GB.\n\nSigned-off-by: Izik Eidus \u003cizike@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "3090dd7377c7eb5cbe229e2a538f9dc7e5b06814",
      "tree": "7f93e361f5bcea61b9b10f607fb69e4d9b124478",
      "parents": [
        "e70669abd4e60dfea3ac1639848e20e2b8dd1255"
      ],
      "author": {
        "name": "Laurent Vivier",
        "email": "Laurent.Vivier@bull.net",
        "time": "Sun Aug 05 10:43:32 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:23 2007 +0200"
      },
      "message": "KVM: Clean up kvm_setup_pio()\n\nSplit kvm_setup_pio() into two functions, one to setup in/out pio\n(kvm_emulate_pio()) and one to setup ins/outs pio (kvm_emulate_pio_string()).\n\nSigned-off-by: Laurent Vivier \u003cLaurent.Vivier@bull.net\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "f02424785ab83bab8283ad33044284f749c08db8",
      "tree": "020d73469f801e33012702c58233e776381d3008",
      "parents": [
        "33830b4f5bdf2bc21d0c10d38beffdce8edcded7"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed Aug 01 10:48:02 2007 +1000"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:22 2007 +0200"
      },
      "message": "KVM: Add and use pr_unimpl for standard formatting of unimplemented features\n\nAll guest-invokable printks should be ratelimited to prevent malicious\nguests from flooding logs.  This is a start.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "002c7f7c32a6123f0894d7d579ffae8e98911830",
      "tree": "91d46dd1d6f04f25e4f658eb8620fe69c1557c17",
      "parents": [
        "39214915f50f6ac2350355f2db63910d968fa790"
      ],
      "author": {
        "name": "Yang, Sheng",
        "email": "sheng.yang@intel.com",
        "time": "Tue Jul 31 14:23:01 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:22 2007 +0200"
      },
      "message": "KVM: VMX: Add cpu consistency check\n\nAll the physical CPUs on the board should support the same VMX feature\nset.  Add check_processor_compatibility to kvm_arch_ops for the consistency\ncheck.\n\nSigned-off-by: Sheng Yang \u003csheng.yang@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "b114b0804df7131cb6764b948c1c530c834fa3c0",
      "tree": "4e5ced9ed1cdb673d27b26b166cd0bd7c845d5b9",
      "parents": [
        "c16f862d0257349607b7a9be7b4a4b7ed419a3ab"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 30 21:13:43 2007 +1000"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:21 2007 +0200"
      },
      "message": "KVM: Use alignment properties of vcpu to simplify FPU ops\n\nNow we use a kmem cache for allocating vcpus, we can get the 16-byte\nalignment required by fxsave \u0026 fxrstor instructions, and avoid\nmanually aligning the buffer.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "c16f862d0257349607b7a9be7b4a4b7ed419a3ab",
      "tree": "f84e9f43f845640a0cc887fe8697ab0b3a4e788b",
      "parents": [
        "e7d5d76cae970117affe07f809faf0f18bbac675"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 30 21:12:19 2007 +1000"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:21 2007 +0200"
      },
      "message": "KVM: Use kmem cache for allocating vcpus\n\nAvi wants the allocations of vcpus centralized again.  The easiest way\nis to add a \"size\" arg to kvm_init_arch, and expose the thus-prepared\ncache to the modules.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "e7d5d76cae970117affe07f809faf0f18bbac675",
      "tree": "3410ce6d12e1095affcd4e6f7fd36716587916c6",
      "parents": [
        "cebff02b11b02a81d21b6cc8390938dc9bdf0a12"
      ],
      "author": {
        "name": "Laurent Vivier",
        "email": "Laurent.Vivier@bull.net",
        "time": "Mon Jul 30 13:41:19 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:21 2007 +0200"
      },
      "message": "KVM: Remove kvm_{read,write}_guest()\n\n... in favor of the more general emulator_{read,write}_*.\n\nSigned-off-by: Laurent Vivier \u003cLaurent.Vivier@bull.net\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "11ec2804711896546ee3c945f3786c7f9fdd175a",
      "tree": "1e26102931efb8b0b48c440887577d21170ef94a",
      "parents": [
        "15ad71460d75fd7ca41bb248a2310f3f39b302ba"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Jul 23 14:51:37 2007 +0800"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:20 2007 +0200"
      },
      "message": "KVM: Convert vm lock to a mutex\n\nThis allows the kvm mmu to perform sleepy operations, such as memory\nallocation.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "15ad71460d75fd7ca41bb248a2310f3f39b302ba",
      "tree": "1ea549e5c5629561c121a54def146fb6b706c2d4",
      "parents": [
        "519ef35341b4f360f072ea74e398b70a5a2fc270"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Jul 11 18:17:21 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:20 2007 +0200"
      },
      "message": "KVM: Use the scheduler preemption notifiers to make kvm preemptible\n\nCurrent kvm disables preemption while the new virtualization registers are\nin use.  This of course is not very good for latency sensitive workloads (one\nuse of virtualization is to offload user interface and other latency\ninsensitive stuff to a container, so that it is easier to analyze the\nremaining workload).  This patch re-enables preemption for kvm; preemption\nis now only disabled when switching the registers in and out, and during\nthe switch to guest mode and back.\n\nContains fixes from Shaohua Li \u003cshaohua.li@intel.com\u003e.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "fb3f0f51d92d1496f9628ca6f0fb06a48dc9ed2a",
      "tree": "38da1073dae5f30fd8f162669bb5a86959f8ace5",
      "parents": [
        "a2fa3e9f52d875f7d4ca98434603b8756be71ba8"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jul 27 17:16:56 2007 +1000"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:20 2007 +0200"
      },
      "message": "KVM: Dynamically allocate vcpus\n\nThis patch converts the vcpus array in \"struct kvm\" to a pointer\narray, and changes the \"vcpu_create\" and \"vcpu_setup\" hooks into one\n\"vcpu_create\" call which does the allocation and initialization of the\nvcpu (calling back into the kvm_vcpu_init core helper).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "a2fa3e9f52d875f7d4ca98434603b8756be71ba8",
      "tree": "915c13bfedc867d4d2e4b98c4d3b10b6ef25d451",
      "parents": [
        "c820c2aa27bb5b6069aa708b0a0b44b59a16bfa7"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Fri Jul 27 08:13:10 2007 -0400"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:20 2007 +0200"
      },
      "message": "KVM: Remove arch specific components from the general code\n\nstruct kvm_vcpu has vmx-specific members; remove them to a private structure.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "fe5518819463d57ed032bc12458ed681bc790609",
      "tree": "15d13f175f2b77970eb7d84d442689426cafd283",
      "parents": [
        "9ae0448f53324b3c476f68bd134d97ac4ec27e0c"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Jul 23 14:51:39 2007 +0800"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:19 2007 +0200"
      },
      "message": "KVM: Move gfn_to_page out of kmap/unmap pairs\n\ngfn_to_page might sleep with swap support. Move it out of the kmap calls.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@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": "66aee91aaab8f998d28a61ed7733be17ad8e6d8f",
      "tree": "f3cd552c4a176cbba0929788b03867cb33d7b5b5",
      "parents": [
        "f802a307cb2cabdd0c6b48067dbe901d6fe27246"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 17 23:34:16 2007 +1000"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:18 2007 +0200"
      },
      "message": "KVM: Use standard CR4 flags, tighten checking\n\nOn this machine (Intel), writing to the CR4 bits 0x00000800 and\n0x00001000 cause a GPF.  The Intel manual is a little unclear, but\nAFIACT they\u0027re reserved, too.\n\nAlso fix spelling of CR4_RESEVED_BITS.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "f802a307cb2cabdd0c6b48067dbe901d6fe27246",
      "tree": "57c5faaada33142fff92be62a78555716feb597a",
      "parents": [
        "707d92fa72b425bc919a84670c01402e81505c58"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 17 23:32:55 2007 +1000"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:18 2007 +0200"
      },
      "message": "KVM: Use standard CR3 flags, tighten checking\n\nThe kernel now has asm/cpu-features.h: use those macros instead of inventing\nour own.\n\nAlso spell out definition of CR3_RESEVED_BITS, fix spelling and\ntighten it for the non-PAE case.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "707d92fa72b425bc919a84670c01402e81505c58",
      "tree": "9e3a55293e867e499fd625ebac45db565ff0fc38",
      "parents": [
        "9a2b85c620b9779360c7726de4caeda78cac38d4"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 17 23:19:08 2007 +1000"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:18 2007 +0200"
      },
      "message": "KVM: Trivial: Use standard CR0 flags macros from asm/cpu-features.h\n\nThe kernel now has asm/cpu-features.h: use those macros instead of\ninventing our own.\n\nAlso spell out definition of CR0_RESEVED_BITS (no code change) and fix typo.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "dad3795d2baa4e02cbfd161d9089c73dea16b4ba",
      "tree": "56bedc042a5ba0a2b92eecc4e488b0328a35db54",
      "parents": [
        "cd0d91379776cb6850c7b11c0a8843ca75967558"
      ],
      "author": {
        "name": "Qing He",
        "email": "qing.he@intel.com",
        "time": "Thu Jul 12 12:33:56 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Oct 13 10:18:17 2007 +0200"
      },
      "message": "KVM: SMP: Add vcpu_id field in struct vcpu\n\nThis patch adds a `vcpu_id\u0027 field in `struct vcpu\u0027, so we can\ndifferentiate BSP and APs without pointer comparison or arithmetic.\n\nSigned-off-by: Qing He \u003cqing.he@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "22d95b1282810f5af599ee292b3fc443aefbdad0",
      "tree": "dafe050aef12ea4bbac4ffb77070d8ec416a0838",
      "parents": [
        "44e3ff32ac229a10a30b7b840f092f5b32a5f72a"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Sep 14 20:26:06 2007 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Sep 14 13:59:55 2007 -0700"
      },
      "message": "KVM: MMU: Fix rare oops on guest context switch\n\nA guest context switch to an uncached cr3 can require allocation of\nshadow pages, but we only recycle shadow pages in kvm_mmu_page_fault().\n\nMove shadow page recycling to mmu_topup_memory_caches(), which is called\nfrom both the page fault handler and from guest cr3 reload.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "35f3f28613bc7263949db23a4c7078e425810c8c",
      "tree": "134729d56cf503029e1e667df9bfe30b7410ad3b",
      "parents": [
        "90cb0529dd230548a7f0d6b315997be854caea1b"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jul 17 14:20:30 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jul 20 20:16:29 2007 +0300"
      },
      "message": "KVM: x86 emulator: implement rdmsr and wrmsr\n\nAllow real-mode emulation of rdmsr and wrmsr.  This allows smp Windows to\nboot, presumably for its sipi trampoline.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "90cb0529dd230548a7f0d6b315997be854caea1b",
      "tree": "31aad8e119781b7df846a8f8d8522a82ff3e4b25",
      "parents": [
        "d55e2cb20123cdb5020ec4a2b2f1eace5038c292"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jul 17 13:04:56 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jul 20 20:16:29 2007 +0300"
      },
      "message": "KVM: Fix memory slot management functions for guest smp\n\nThe memory slot management functions were oriented against vcpu 0, where\nthey should be kvm-wide.  This causes hangs starting X on guest smp.\n\nFix by making the functions (and resultant tail in the mmu) non-vcpu-specific.\nUnfortunately this reduces the efficiency of the mmu object cache a bit.  We\nmay have to revisit this later.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "d55e2cb20123cdb5020ec4a2b2f1eace5038c292",
      "tree": "6a02bb893638ded6448ee78687ee25072ea82360",
      "parents": [
        "2cb7e714229681408e323852bed939989faf6991"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jul 10 17:50:55 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jul 20 20:16:29 2007 +0300"
      },
      "message": "KVM: MMU: Store nx bit for large page shadows\n\nWe need to distinguish between large page shadows which have the nx bit set\nand those which don\u0027t.  The problem shows up when booting a newer smp Linux\nkernel, where the trampoline page (which is in real mode, which uses the\nsame shadow pages as large pages) is using the same mapping as a kernel data\npage, which is mapped using nx, causing kvm to spin on that page.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "74906345ff9f84f2b3b772d368c7e49f4ba27456",
      "tree": "c7da7fb64d076e8350233f6d0c3fb8e53a53566f",
      "parents": [
        "ff1dc7942ba8fa4a86619bcb37ed68afae1f69ca"
      ],
      "author": {
        "name": "Eddie Dong",
        "email": "eddie.dong@intel.com",
        "time": "Tue Jun 19 18:05:03 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:48 2007 +0300"
      },
      "message": "KVM: Add support for in-kernel pio handlers\n\nUseful for the PIC and PIT.\n\nSigned-off-by: Yaozu (Eddie) Dong \u003ceddie.dong@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "2eeb2e94eb6232f0895da696c10e6636093ff72b",
      "tree": "2b60e438899054f50ce0e93c33a7dcfee4dc5edc",
      "parents": [
        "d9413cd757a7c96d97ddb46ab4e3e04760ae4c55"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Thu May 31 14:08:53 2007 -0400"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:47 2007 +0300"
      },
      "message": "KVM: Adds support for in-kernel mmio handlers\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "d9e368d61263055eceac2966bb7ea31b89da3425",
      "tree": "9d507b851ea7bd667cdd50dde640e47e0d4773e9",
      "parents": [
        "39c3b86e5c193e09f69f0e99c93600a4999ffc60"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Jun 07 19:18:30 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:46 2007 +0300"
      },
      "message": "KVM: Flush remote tlbs when reducing shadow pte permissions\n\nWhen a vcpu causes a shadow tlb entry to have reduced permissions, it\nmust also clear the tlb on remote vcpus.  We do that by:\n\n- setting a bit on the vcpu that requests a tlb flush before the next entry\n- if the vcpu is currently executing, we send an ipi to make sure it\n  exits before we continue\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "39c3b86e5c193e09f69f0e99c93600a4999ffc60",
      "tree": "94272c98789224f53d4f4f19587a08d95103f837",
      "parents": [
        "72d6e5a08a8ba2105b3f36e32285e8fbfbed1f71"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Jun 07 19:11:53 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:46 2007 +0300"
      },
      "message": "KVM: Keep an upper bound of initialized vcpus\n\nThat way, we don\u0027t need to loop for KVM_MAX_VCPUS for a single vcpu\nvm.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "72d6e5a08a8ba2105b3f36e32285e8fbfbed1f71",
      "tree": "6d20932e350683760d79f2c6cca6ef3bfafbce96",
      "parents": [
        "d3bef15f84f91c73a5515ad4c6a1749f8f63afcf"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jun 05 16:15:51 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:46 2007 +0300"
      },
      "message": "KVM: Emulate hlt on real mode for Intel\n\nThis has two use cases: the bios can\u0027t boot from disk, and guest smp\nbootstrap.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "d3bef15f84f91c73a5515ad4c6a1749f8f63afcf",
      "tree": "3349c121f16a5fe0e1c30d4370573c2a9ed88bb9",
      "parents": [
        "ef9254df0b3aeba729e26a062803ee7d90437b5e"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jun 05 15:53:05 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:46 2007 +0300"
      },
      "message": "KVM: Move duplicate halt handling code into kvm_main.c\n\nWill soon have a thid user.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "ef9254df0b3aeba729e26a062803ee7d90437b5e",
      "tree": "b176b72cbe12a18541aa0b7fa059601bad33aad3",
      "parents": [
        "120e9a453b5e7d9a708caff7d97b71fc4ccd59e8"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jun 05 14:37:09 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:46 2007 +0300"
      },
      "message": "KVM: Enable guest smp\n\nAs we don\u0027t support guest tlb shootdown yet, this is only reliable\nfor real-mode guests.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "17c3ba9d37dbda490792a2b52953f09d0dee30d6",
      "tree": "44749b8658b61c7aa6cdb38d7823fa061d24b12c",
      "parents": [
        "bd2b2baa5c5fbb08b4b0df7508ff419407f7ece6"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jun 04 15:58:30 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:45 2007 +0300"
      },
      "message": "KVM: Lazy guest cr3 switching\n\nSwitch guest paging context may require us to allocate memory, which\nmight fail.  Instead of wiring up error paths everywhere, make context\nswitching lazy and actually do the switch before the next guest entry,\nwhere we can return an error if allocation fails.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "d3d25b048b9c7e5c1c20918157a71df734f71766",
      "tree": "3e1f2cf029a1c23497067dfdfeffe69838fe6f0f",
      "parents": [
        "8d7282036f82244c5a1146a1a7edf03c50d278d9"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed May 30 12:34:53 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:43 2007 +0300"
      },
      "message": "KVM: MMU: Use slab caches for shadow pages and their headers\n\nUse slab caches instead of a simple custom list.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "06ff0d37285094cf9cc25370e6a78ce9bc70ddb0",
      "tree": "acf491e521d39818303bf630ba36cf2a4df5fd59",
      "parents": [
        "687fdbfe64086020e60547bd14773da3762056c1"
      ],
      "author": {
        "name": "Markus Rechberger",
        "email": "markus.rechberger@amd.com",
        "time": "Sun May 27 10:46:52 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:42 2007 +0300"
      },
      "message": "KVM: Fix includes\n\nKVM compilation fails for some .configs.  This fixes it.\n\nSigned-off-by: Markus Rechberger \u003cmarkus.rechberger@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "2cc51560aed0edb291341089d3475e1fbe8bfd04",
      "tree": "e4fd63e0e79613fbb7e475dcdd0ea01c370e02a8",
      "parents": [
        "f2be4dd65437c60a4eb222bc40bc8caded62631a"
      ],
      "author": {
        "name": "Eddie Dong",
        "email": "eddie.dong@intel.com",
        "time": "Mon May 21 07:28:09 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:42 2007 +0300"
      },
      "message": "KVM: VMX: Avoid saving and restoring msr_efer on lightweight vmexit\n\nMSR_EFER.LME/LMA bits are automatically save/restored by VMX\nhardware, KVM only needs to save NX/SCE bits at time of heavy\nweight VM Exit. But clearing NX bits in host envirnment may\ncause system hang if the host page table is using EXB bits,\nthus we leave NX bits as it is. If Host NX\u003d1 and guest NX\u003d0, we\ncan do guest page table EXB bits check before inserting a shadow\npte (though no guest is expecting to see this kind of gp fault).\nIf host NX\u003d0, we present guest no Execute-Disable feature to guest,\nthus no host NX\u003d0, guest NX\u003d1 combination.\n\nThis patch reduces raw vmexit time by ~27%.\n\nMe: fix compile warnings on i386.\n\nSigned-off-by: Yaozu (Eddie) Dong \u003ceddie.dong@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "a75beee6e4f5d2f0ae6e28cd626b2f157e93afd2",
      "tree": "ef5fcd31527f5e211526f65180be2a6f73a1783e",
      "parents": [
        "b3f37707b05e9ce82d5bec660e9d0b15452ee9a0"
      ],
      "author": {
        "name": "Eddie Dong",
        "email": "eddie.dong@intel.com",
        "time": "Thu May 17 18:55:15 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:41 2007 +0300"
      },
      "message": "KVM: VMX: Avoid saving and restoring msrs on lightweight vmexit\n\nIn a lightweight exit (where we exit and reenter the guest without\nscheduling or exiting to userspace in between), we don\u0027t need various\nmsrs on the host, and avoiding shuffling them around reduces raw exit\ntime by 8%.\n\ni386 compile fix by Daniel Hecken \u003cdh@bahntechnik.de\u003e.\n\nSigned-off-by: Yaozu (Eddie) Dong \u003ceddie.dong@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "47ad8e689b4f94f9fc3b2588a7aaa65e4eca667c",
      "tree": "ee050d3f0a86f937f10bbc2f6e1893201de323af",
      "parents": [
        "4b02d6daa12465b209ec4f50c363f9553a51f45b"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun May 06 15:50:58 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:40 2007 +0300"
      },
      "message": "KVM: MMU: Store shadow page tables as kernel virtual addresses, not physical\n\nSimpifies things a bit.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "a3a0636725ff172031072434d722b69bf49b7823",
      "tree": "d57029a6f19a671e764ca842f91883d9bff24a4d",
      "parents": [
        "5fd86fcfc0dbdd42296b1182945f7a0a05578211"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed May 02 23:06:22 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:40 2007 +0300"
      },
      "message": "KVM: Set cr0.mp for guests\n\nThis allows fwait instructions to be trapped when the guest fpu is not\nloaded.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "5fd86fcfc0dbdd42296b1182945f7a0a05578211",
      "tree": "0fffa1f468d9b44f00ee16a5b82bb1c65713d4a6",
      "parents": [
        "abd3f2d622a810b7f6687f7ddb405e90e4cfb7ab"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed May 02 20:40:00 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:39 2007 +0300"
      },
      "message": "KVM: Consolidate guest fpu activation and deactivation\n\nEasier to keep track of where the fpu is this way.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "33ed6329210f3ad0638306bfa46cd3aaf5a5f929",
      "tree": "6b5b4570641fe071b3544ded46a223a11e9f338f",
      "parents": [
        "7494c0ccbb8fa0903bcb1ced89cc2b79c3624974"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed May 02 16:54:03 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:39 2007 +0300"
      },
      "message": "KVM: Fix potential guest state leak into host\n\nThe lightweight vmexit path avoids saving and reloading certain host\nstate.  However in certain cases lightweight vmexit handling can schedule()\nwhich requires reloading the host state.\n\nSo we store the host state in the vcpu structure, and reloaded it if we\nrelinquish the vcpu.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "7494c0ccbb8fa0903bcb1ced89cc2b79c3624974",
      "tree": "356972d612a5dfba6422555b655f41db69d527a8",
      "parents": [
        "0028425f647b6b78a0de8810d6b782fc3ce6c272"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue May 01 18:24:38 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:39 2007 +0300"
      },
      "message": "KVM: Increase mmu shadow cache to 1024 pages\n\nThis improves kbuild times by about 10%, bringing it within a respectable\n25% of native.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "09072daf37abbfe8e2d5018dd913f229c76190f7",
      "tree": "dbccbe493a9412cb89bd48b7c0c8ec21f70cf091",
      "parents": [
        "621358455ae043ab39bc3481f13b101bd6016c8d"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue May 01 14:16:52 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:38 2007 +0300"
      },
      "message": "KVM: Unify kvm_mmu_pre_write() and kvm_mmu_post_write()\n\nInstead of calling two functions and repeating expensive checks, call one\nfunction and provide it with before/after information.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "e6adf28365b2fca0b5235cabff00c9f3d1e7bdf4",
      "tree": "75cdf0f0635a32e9337a4c2e3e5f332cf932f902",
      "parents": [
        "e925c5ba9380dad5fdf1d0a9d9199ac43be74c6a"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Apr 30 16:07:54 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Jul 16 12:05:38 2007 +0300"
      },
      "message": "KVM: Avoid saving and restoring some host CPU state on lightweight vmexit\n\nMany msrs and the like will only be used by the host if we schedule() or\nreturn to userspace.  Therefore, we avoid saving them if we handle the\nexit within the kernel, and if a reschedule is not requested.\n\nBased on a patch from Eddie Dong \u003ceddie.dong@intel.com\u003e with a couple of\nfixes by me.\n\nSigned-off-by: Yaozu(Eddie) Dong \u003ceddie.dong@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "7702fd1f6fea57921f2e643d27a23a2d0394499c",
      "tree": "9a5275fb2f5eaccc491bfe5d9617c3da7f69aa5a",
      "parents": [
        "22b1a9203ea634ac0ee5240e021613da3328275f"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Jun 14 16:27:40 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jun 15 12:30:59 2007 +0300"
      },
      "message": "KVM: Prevent guest fpu state from leaking into the host\n\nThe lazy fpu changes did not take into account that some vmexit handlers\ncan sleep.  Move loading the guest state into the inner loop so that it\ncan be reloaded if necessary, and move loading the host state into\nvmx_vcpu_put() so it can be performed whenever we relinquish the vcpu.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "e8edc6e03a5c8562dc70a6d969f732bdb355a7e7",
      "tree": "fc86c863655128a7041dfe613d14393d761fa7b9",
      "parents": [
        "ff1be9ad61e3e17ba83702d8ed0b534e5b8ee15c"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 21 01:22:52 2007 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 21 09:18:19 2007 -0700"
      },
      "message": "Detach sched.h from mm.h\n\nFirst thing mm.h does is including sched.h solely for can_do_mlock() inline\nfunction which has \"current\" dereference inside. By dealing with can_do_mlock()\nmm.h can be detached from sched.h which is good. See below, why.\n\nThis patch\na) removes unconditional inclusion of sched.h from mm.h\nb) makes can_do_mlock() normal function in mm/mlock.c\nc) exports can_do_mlock() to not break compilation\nd) adds sched.h inclusions back to files that were getting it indirectly.\ne) adds less bloated headers to some files (asm/signal.h, jiffies.h) that were\n   getting them indirectly\n\nNet result is:\na) mm.h users would get less code to open, read, preprocess, parse, ... if\n   they don\u0027t need sched.h\nb) sched.h stops being dependency for significant number of files:\n   on x86_64 allmodconfig touching sched.h results in recompile of 4083 files,\n   after patch it\u0027s only 3744 (-8.3%).\n\nCross-compile tested on\n\n\tall arm defconfigs, all mips defconfigs, all powerpc defconfigs,\n\talpha alpha-up\n\tarm\n\ti386 i386-up i386-defconfig i386-allnoconfig\n\tia64 ia64-up\n\tm68k\n\tmips\n\tparisc parisc-up\n\tpowerpc powerpc-up\n\ts390 s390-up\n\tsparc sparc-up\n\tsparc64 sparc64-up\n\tum-x86_64\n\tx86_64 x86_64-up x86_64-defconfig x86_64-allnoconfig\n\nas well as my two usual configs.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e7df56e4a00358b6975fae3b70dc9df1282d427a",
      "tree": "76a19e32d603dcc0936313fbb9e5a1de759a159d",
      "parents": [
        "94dfbdb3894eda2f673b70e20da2743c4a8d3968"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Mar 14 15:54:54 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:32 2007 +0300"
      },
      "message": "KVM: Remove extraneous guest entry on mmio read\n\nWhen emulating an mmio read, we actually emulate twice: once to determine\nthe physical address of the mmio, and, after we\u0027ve exited to userspace to\nget the mmio value, we emulate again to place the value in the result\nregister and update any flags.\n\nBut we don\u0027t really need to enter the guest again for that, only to take\nan immediate vmexit.  So, if we detect that we\u0027re doing an mmio read,\nemulate a single instruction before entering the guest again.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "25c4c2762e31a75403eca0dd59f2cab85e3a2532",
      "tree": "151c4a309da81608bdf729d701dcbfc3d4e1e9d7",
      "parents": [
        "e0e5127d06957e76da3906b7a58d5d2665e81f59"
      ],
      "author": {
        "name": "Anthony Liguori",
        "email": "aliguori@us.ibm.com",
        "time": "Fri Apr 27 09:29:21 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:31 2007 +0300"
      },
      "message": "KVM: VMX: Properly shadow the CR0 register in the vcpu struct\n\nSet all of the host mask bits for CR0 so that we can maintain a proper\nshadow of CR0.  This exposes CR0.TS, paving the way for lazy fpu handling.\n\nSigned-off-by: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "7807fa6ca5af2e5660a0eb3cd90276ca0c5bdfc8",
      "tree": "8f97af3538acc40a6a72af29f31351d8f0f69296",
      "parents": [
        "4c690a1e8667a84b61a6114a4ad293681f32cb11"
      ],
      "author": {
        "name": "Anthony Liguori",
        "email": "aliguori@us.ibm.com",
        "time": "Mon Apr 23 09:17:21 2007 -0500"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:31 2007 +0300"
      },
      "message": "KVM: Lazy FPU support for SVM\n\nAvoid saving and restoring the guest fpu state on every exit.  This\nshaves ~100 cycles off the guest/host switch.\n\nSigned-off-by: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "1165f5fec18c077bdba88e7125fd41f8e3617cb4",
      "tree": "a1931bfddfabaa909f4ebd14a5c00a549d1e37ec",
      "parents": [
        "3fca03653010b8c5fa63b99fc94c78cbfb433d00"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Apr 19 17:27:43 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:30 2007 +0300"
      },
      "message": "KVM: Per-vcpu statistics\n\nMake the exit statistics per-vcpu instead of global.  This gives a 3.5%\nboost when running one virtual machine per core on my two socket dual core\n(4 cores total) machine.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "b5a33a75720c03d58d8281a72b45ffd214f00ed7",
      "tree": "7451b196f292eb96caf5173ad3c6459ab9efb1d7",
      "parents": [
        "417726a3fbecb2092f1054bbaee87bc442b05ef3"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Apr 15 16:31:09 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:29 2007 +0300"
      },
      "message": "KVM: Use slab caches to allocate mmu data structures\n\nBetter leak detection, statistics, memory use, speed -- goodness all\naround.\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": "954bbbc236afe23b368abdf4942f313a5f6e1d50",
      "tree": "4c990bff08f7a9a13980deb68a85e091065bb1ec",
      "parents": [
        "e0fa826f969c262c23908953bf85add487cc2e6c"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Mar 30 14:02:32 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:28 2007 +0300"
      },
      "message": "KVM: Simply gfn_to_page()\n\nMapping a guest page to a host page is a common operation.  Currently,\none has first to find the memory slot where the page belongs (gfn_to_memslot),\nthen locate the page itself (gfn_to_page()).\n\nThis is clumsy, and also won\u0027t work well with memory aliases.  So simplify\ngfn_to_page() not to require memory slot translation first, and instead do it\ninternally.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "e0fa826f969c262c23908953bf85add487cc2e6c",
      "tree": "b9fdaaffea660aadd1120267e6966da3f5d10afe",
      "parents": [
        "df513e2cdd099822ed32cbc20aaf4ff310372202"
      ],
      "author": {
        "name": "Dor Laor",
        "email": "dor.laor@qumranet.com",
        "time": "Fri Mar 30 13:06:33 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:28 2007 +0300"
      },
      "message": "KVM: Add mmu cache clear function\n\nFunctions that play around with the physical memory map\nneed a way to clear mappings to possibly nonexistent or\ninvalid memory.  Both the mmu cache and the processor tlb\nare cleared.\n\nSigned-off-by: Dor Laor \u003cdor.laor@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "0cc5064d335543a72c5ef904a3f528966fa3f2d2",
      "tree": "4e6f8b4e013fc24821cb0f1af26d33d906e4d870",
      "parents": [
        "d28c6cfbbc5e2d4fccfe6d733995ed5971ca87f6"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 25 12:07:27 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:27 2007 +0300"
      },
      "message": "KVM: SVM: Ensure timestamp counter monotonicity\n\nWhen a vcpu is migrated from one cpu to another, its timestamp counter\nmay lose its monotonic property if the host has unsynced timestamp counters.\nThis can confuse the guest, sometimes to the point of refusing to boot.\n\nAs the rdtsc instruction is rather fast on AMD processors (7-10 cycles),\nwe can simply record the last host tsc when we drop the cpu, and adjust\nthe vcpu tsc offset when we detect that we\u0027ve migrated to a different cpu.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "d28c6cfbbc5e2d4fccfe6d733995ed5971ca87f6",
      "tree": "0da31407f97a92c81d189b18608e54ad2064ebad",
      "parents": [
        "916ce2360fadc71d924e02403b31280112a31280"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Mar 23 09:55:25 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:27 2007 +0300"
      },
      "message": "KVM: MMU: Fix hugepage pdes mapping same physical address with different access\n\nThe kvm mmu keeps a shadow page for hugepage pdes; if several such pdes map\nthe same physical address, they share the same shadow page.  This is a fairly\ncommon case (kernel mappings on i386 nonpae Linux, for example).\n\nHowever, if the two pdes map the same memory but with different permissions, kvm\nwill happily use the cached shadow page.  If the access through the more\npermissive pde will occur after the access to the strict pde, an endless pagefault\nloop will be generated and the guest will make no progress.\n\nFix by making the access permissions part of the cache lookup key.\n\nThe fix allows Xen pae to boot on kvm and run guest domains.\n\nThanks to Jeremy Fitzhardinge for reporting the bug and testing the fix.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "f6528b03f167785301908bf124db7be591e983ca",
      "tree": "ca52c2a5553d8f0c4bcd7b3a9587fcf00e374731",
      "parents": [
        "8cb5b0333250beb382624f626851a31f601b4830"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Mar 20 18:44:51 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:25 2007 +0300"
      },
      "message": "KVM: Remove set_cr0_no_modeswitch() arch op\n\nset_cr0_no_modeswitch() was a hack to avoid corrupting segment registers.\nAs we now cache the protected mode values on entry to real mode, this\nisn\u0027t an issue anymore, and it interferes with reboot (which usually _is_\na modeswitch).\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "aac012245a59d78372dc66d292ba567367d86b60",
      "tree": "4faf7564b746b4efd6be91ca83b475cfd9d446e7",
      "parents": [
        "ca5aac1f96c18b5e4dcfea253d7ab607b5dcd5c9"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Mar 20 14:34:28 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:25 2007 +0300"
      },
      "message": "KVM: MMU: Remove global pte tracking\n\nThe initial, noncaching, version of the kvm mmu flushed the all nonglobal\nshadow page table translations (much like a native tlb flush).  The new\nimplementation flushes translations only when they change, rendering global\npte tracking superfluous.\n\nThis removes the unused tracking mechanism and storage space.\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": "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": "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": "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": "270fd9b96f5fcb7df15d3ca6166545d4aa0f3ee9",
      "tree": "06dcbab8d87b120ddf80ed4e184743fe542b4da8",
      "parents": [
        "02e235bc8eebf8a6fef10d46479b3c18f3e9c4f2"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Feb 19 14:37:47 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:41 2007 +0200"
      },
      "message": "KVM: Wire up hypercall handlers to a central arch-independent location\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "102d8325a1d2f266d3d0a03fdde948544e72c12d",
      "tree": "21024c8b9b2b702c79200343e26f14f075da0479",
      "parents": [
        "5972e9535e94bf875eb8eab8a667ba04c7583874"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 19 14:37:47 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:40 2007 +0200"
      },
      "message": "KVM: add MSR based hypercall API\n\nThis adds a special MSR based hypercall API to KVM. This is to be\nused by paravirtual kernels and virtual drivers.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "5972e9535e94bf875eb8eab8a667ba04c7583874",
      "tree": "bdce4e46ab7277c8811cef4b9464646eff3fed3e",
      "parents": [
        "9d8f549dc69b1fc65d0b03916c02f12ca49b3ea0"
      ],
      "author": {
        "name": "Markus Rechberger",
        "email": "markus.rechberger@amd.com",
        "time": "Mon Feb 19 14:37:47 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:39 2007 +0200"
      },
      "message": "KVM: Use page_private()/set_page_private() apis\n\nBesides using an established api, this allows using kvm in older kernels.\n\nSigned-off-by: Markus Rechberger \u003cmarkus.rechberger@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "774c47f1d78e373a6bd2964f4e278d1ce26c21cb",
      "tree": "665fe9939425d7b4a16b97241e784f4183bd9558",
      "parents": [
        "8d0be2b3bf4a55606967d7d84e56c52521e94333"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Feb 12 00:54:47 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:41 2007 -0800"
      },
      "message": "[PATCH] KVM: cpu hotplug support\n\nOn hotplug, we execute the hardware extension enable sequence.  On unplug, we\ndecache any vcpus that last ran on the exiting cpu, and execute the hardware\nextension disable sequence.\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": "133de9021d2988f3fbdad84c2d26484c7a757526",
      "tree": "dc56020026f28b91d2304aa355c8b6cf859a7223",
      "parents": [
        "47e627bc8c9a70392d2049e6af5bd55fae61fe53"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Feb 12 00:54:44 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:40 2007 -0800"
      },
      "message": "[PATCH] KVM: Add a global list of all virtual machines\n\nThis will allow us to iterate over all vcpus and see which cpus they are\nrunning on.\n\n[akpm@osdl.org: use standard (ugly) initialisers]\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": "a0610ddf6be6465049a5da448d7e6c5e821240e6",
      "tree": "a0554e41c4536b7c7d774a43f3e7d864f87de7aa",
      "parents": [
        "96958231cea5985e32db2ae1125ec20483e3556b"
      ],
      "author": {
        "name": "S.Caglar Onur",
        "email": "caglar@pardus.org.tr",
        "time": "Mon Feb 12 00:54:34 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 asm constraint for lldt instruction\n\nlldt does not accept immediate operands, which \"g\" allows.\n\nSigned-off-by: S.Caglar Onur \u003ccaglar@pardus.org.tr\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6f00e68f210c0407dd666743ce61ae543cfd509d",
      "tree": "03abbd7c7c2dbda3316e4f2db61adc20a0366062",
      "parents": [
        "bce66ca4a2f695509e1b021311eb4de1e4fdf3e4"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jan 26 00:56:40 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jan 26 13:50:57 2007 -0800"
      },
      "message": "[PATCH] KVM: Emulate IA32_MISC_ENABLE msr\n\nThis allows netbsd 3.1 i386 to get further along installing.\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@linux-foundation.org\u003e\n"
    },
    {
      "commit": "714b93da1a6d97307dfafb9915517879d8a66c0d",
      "tree": "619f30567c9e13b79830301023bef58b98b8f433",
      "parents": [
        "f51234c2cd3ab8bed836e09686e27877e1b55f2a"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jan 05 16:36:53 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:27 2007 -0800"
      },
      "message": "[PATCH] KVM: MMU: Replace atomic allocations by preallocated objects\n\nThe mmu sometimes needs memory for reverse mapping and parent pte chains.\nhowever, we can\u0027t allocate from within the mmu because of the atomic context.\n\nSo, move the allocations to a central place that can be executed before the\nmain mmu machinery, where we can bail out on failure before any damage is\ndone.\n\n(error handling is deffered for now, but the basic structure is there)\n\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": "3bb65a22a4502067f8cd3cb4c923ffa70be62091",
      "tree": "b8ee904c9a4b99f0c8f58e93b257f653222e3ba0",
      "parents": [
        "86a5ba025d0a0b251817d0efbeaf7037d4175d21"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jan 05 16:36:51 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:26 2007 -0800"
      },
      "message": "[PATCH] KVM: MMU: Never free a shadow page actively serving as a root\n\nWe always need cr3 to point to something valid, so if we detect that we\u0027re\nfreeing a root page, simply push it back to the top of the active list.\n\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": "86a5ba025d0a0b251817d0efbeaf7037d4175d21",
      "tree": "35dbc71edaa0d242ba4c0ca429c41cff67df38d0",
      "parents": [
        "139bdb2d9e410d448281057a37b53770324ccac8"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jan 05 16:36:50 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:26 2007 -0800"
      },
      "message": "[PATCH] KVM: MMU: Page table write flood protection\n\nIn fork() (or when we protect a page that is no longer a page table), we can\nexperience floods of writes to a page, which have to be emulated.  This is\nexpensive.\n\nSo, if we detect such a flood, zap the page so subsequent writes can proceed\nnatively.\n\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": "5f015a5b28c75bb6cc5158640db58689b1ee1b51",
      "tree": "7b103d11d256bfc83c8cd61841cdb893d2b09617",
      "parents": [
        "ebeace8609205bf5e1b96fe325b7dea148042232"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jan 05 16:36:47 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:25 2007 -0800"
      },
      "message": "[PATCH] KVM: MMU: Remove invlpg interception\n\nSince we write protect shadowed guest page tables, there is no need to trap\npage invalidations (the guest will always change the mapping before issuing\nthe invlpg instruction).\n\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": "ebeace8609205bf5e1b96fe325b7dea148042232",
      "tree": "863991639d7df2a4aa5fd8b20b6b3a28c2cc2cda",
      "parents": [
        "cc4529efc7b730b596d9c7d5a917c00a357e92aa"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jan 05 16:36:47 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:25 2007 -0800"
      },
      "message": "[PATCH] KVM: MMU: oom handling\n\nWhen beginning to process a page fault, make sure we have enough shadow pages\navailable to service the fault.  If not, free some pages.\n\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": "a436036baf331703b4d2c8e8a45f02c597bf6913",
      "tree": "ba134b0b42ca42c53e818073af8d51d73771c56b",
      "parents": [
        "9b7a032567ee1128daeebebfc14d3acedfe28c8c"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jan 05 16:36:45 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:25 2007 -0800"
      },
      "message": "[PATCH] KVM: MMU: If emulating an instruction fails, try unprotecting the page\n\nA page table may have been recycled into a regular page, and so any\ninstruction can be executed on it.  Unprotect the page and let the cpu do its\nthing.\n\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": "da4a00f002239f72b0d7d0eeaa3b60100e2b1438",
      "tree": "7c7e72ea1fd48025c029429b413e127a3a580c10",
      "parents": [
        "815af8d42ee3f844c0ceaf2104bd9c6a0bb1e26c"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jan 05 16:36:44 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:25 2007 -0800"
      },
      "message": "[PATCH] KVM: MMU: Support emulated writes into RAM\n\nAs the mmu write protects guest page table, we emulate those writes.  Since\nthey are not mmio, there is no need to go to userspace to perform them.\n\nSo, perform the writes in the kernel if possible, and notify the mmu about\nthem so it can take the approriate action.\n\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": "cea0f0e7ea54753c3265dc77f605a6dad1912cfc",
      "tree": "e0a3e64b45fe83f1f0ae89556e1f6fcf92f07185",
      "parents": [
        "25c0de2cc6c26cb99553c2444936a7951c120c09"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jan 05 16:36:43 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:24 2007 -0800"
      },
      "message": "[PATCH] KVM: MMU: Shadow page table caching\n\nDefine a hashtable for caching shadow page tables. Look up the cache on\ncontext switch (cr3 change) or during page faults.\n\nThe key to the cache is a combination of\n- the guest page table frame number\n- the number of paging levels in the guest\n   * we can cache real mode, 32-bit mode, pae, and long mode page\n     tables simultaneously.  this is useful for smp bootup.\n- the guest page table table\n   * some kernels use a page as both a page table and a page directory.  this\n     allows multiple shadow pages to exist for that page, one per level\n- the \"quadrant\"\n   * 32-bit mode page tables span 4MB, whereas a shadow page table spans\n     2MB.  similarly, a 32-bit page directory spans 4GB, while a shadow\n     page directory spans 1GB.  the quadrant allows caching up to 4 shadow page\n     tables for one guest page in one level.\n- a \"metaphysical\" bit\n   * for real mode, and for pse pages, there is no guest page table, so set\n     the bit to avoid write protecting the page.\n\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": "17ac10ad2bb7d8c4f401668484b2e661a15726c6",
      "tree": "671a11b2be1d9f48e96eae8af2b05867f4199db0",
      "parents": [
        "ac79c978f173586ab3624427c89cd22b393cabd4"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jan 05 16:36:40 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:24 2007 -0800"
      },
      "message": "[PATCH] KVM: MU: Special treatment for shadow pae root pages\n\nSince we\u0027re not going to cache the pae-mode shadow root pages, allocate a\nsingle pae shadow that will hold the four lower-level pages, which will act as\nroots.\n\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": "1342d3536d6a12541ceb276da15f043db90716eb",
      "tree": "fefac89864ed7b34b466237e5c02fc783242b80e",
      "parents": [
        "6bcbd6aba00fced696fc99f1a4fcd7ac7d42d6ef"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jan 05 16:36:39 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:24 2007 -0800"
      },
      "message": "[PATCH] KVM: MMU: Load the pae pdptrs on cr3 change like the processor does\n\nIn pae mode, a load of cr3 loads the four third-level page table entries in\naddition to cr3 itself.\n\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": "cd4a4e5374110444dc38831af517e51ff5a053c3",
      "tree": "ed82756435e7909c7698d112195994c2e8062328",
      "parents": [
        "399badf315bd4dd571b4b3b7cf666d9a2af40229"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jan 05 16:36:38 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:24 2007 -0800"
      },
      "message": "[PATCH] KVM: MMU: Implement simple reverse mapping\n\nKeep in each host page frame\u0027s page-\u003eprivate a pointer to the shadow pte which\nmaps it.  If there are multiple shadow ptes mapping the page, set bit 0 of\npage-\u003eprivate, and use the rest as a pointer to a linked list of all such\nmappings.\n\nReverse mappings are needed because we when we cache shadow page tables, we\nmust protect the guest page tables from being modified by the guest, as that\nwould invalidate the cached ptes.\n\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": "399badf315bd4dd571b4b3b7cf666d9a2af40229",
      "tree": "5c84e0392454df650cb4ce25d6bfcb3bac843bc3",
      "parents": [
        "cb26b572dc39467ba0969d1a76c2f723d2d6a2a6"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jan 05 16:36:38 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:23 2007 -0800"
      },
      "message": "[PATCH] KVM: Prevent stale bits in cr0 and cr4\n\nHardware virtualization implementations allow the guests to freely change some\nof the bits in cr0 and cr4, but trap when changing the other bits.  This is\nuseful to avoid excessive exits due to changing, for example, the ts flag.\n\nIt also means the kvm\u0027s copy of cr0 and cr4 may be stale with respect to these\nbits.  most of the time this doesn\u0027t matter as these bits are not very\ninteresting.  Other times, however (for example when returning cr0 to\nuserspace), they are, so get the fresh contents of these bits from the guest\nby means of a new arch operation.\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": "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": "8018c27b26af56af18eb8b2dc600eba825792d8f",
      "tree": "1125fea536282ff9605f101728a880157796692e",
      "parents": [
        "55a54f79e091d52c3c2835985c347ea4d2e1c21f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 29 16:50:01 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 30 10:56:44 2006 -0800"
      },
      "message": "[PATCH] kvm: fix GFP_KERNEL allocation in atomic section in kvm_dev_ioctl_create_vcpu()\n\nfix an GFP_KERNEL allocation in atomic section: kvm_dev_ioctl_create_vcpu()\ncalled kvm_mmu_init(), which calls alloc_pages(), while holding the vcpu.\n\nThe fix is to set up the MMU state in two phases: kvm_mmu_create() and\nkvm_mmu_setup().\n\n(NOTE: free_vcpus does an kvm_mmu_destroy() call so there\u0027s no need for any\nextra teardown branch on allocation/init failure here.)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: 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": "3bab1f5dda3443043cc8fe68c5ae75530339f28f",
      "tree": "d1b675e8f5328094c1a3d651da5e7563ad692252",
      "parents": [
        "671d6564796e0c90398aab30f89b5e48fc5a3fbe"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Dec 29 16:49:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 30 10:56:44 2006 -0800"
      },
      "message": "[PATCH] KVM: Move common msr handling to arch independent code\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": "a9058ecd3cd72634cf548588ce79b3f225c9ca32",
      "tree": "11d1edd2dfdcec03ba6b54b3b06d41cae826b940",
      "parents": [
        "1e885461f02259d75e7480a70d291d2d8aaa938e"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Dec 29 16:49:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 30 10:56:44 2006 -0800"
      },
      "message": "[PATCH] KVM: Simplify is_long_mode()\n\nInstead of doing tricky stuff with the arch dependent virtualization\nregisters, take a peek at the guest\u0027s efer.\n\nThis simlifies some code, and fixes some confusion in the mmu branch.\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": "05b3e0c2c791a70bf0735aaec53cdf6d340eef85",
      "tree": "cfdc46f216e5a7996972ff88681dd03bed9b0022",
      "parents": [
        "5aff458e9c90df55d6badabd89a1a063a80d9768"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Dec 13 00:33:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:46 2006 -0800"
      },
      "message": "[PATCH] KVM: Replace __x86_64__ with CONFIG_X86_64\n\nAs per akpm\u0027s request.\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"
    }
  ],
  "next": "6aa8b732ca01c3d7a54e93f4d701b8aabbe60fb7"
}
