)]}'
{
  "log": [
    {
      "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": "39959588f58668472bc7108942a8998acedce911",
      "tree": "16c460db4bacff9b5b0505aa3ed5b3c18f55d50e",
      "parents": [
        "b2b77b233557bde22498a519f650b1ccc91ddb4e"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Fri Jun 01 00:47:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jun 01 08:18:30 2007 -0700"
      },
      "message": "kvm: fix section mismatch warning in kvm-intel.o\n\nFix following section mismatch warning in kvm-intel.o:\nWARNING: o-i386/drivers/kvm/kvm-intel.o(.init.text+0xbd): Section mismatch: reference to .exit.text: (between \u0027hardware_setup\u0027 and \u0027vmx_disabled_by_bios\u0027)\n\nThe function free_kvm_area is used in the function alloc_kvm_area which\nis marked __init.\nThe __exit area is discarded by some archs during link-time if a\nmodule is built-in resulting in an oops.\n\nNote: This warning is only seen by my local copy of modpost\n      but the change will soon hit upstream.\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Avi Kivity \u003cavi@qumranet.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "eeca7a36a86db8bfc1945dd7f6f0c22a6b66b31d",
      "tree": "7963466b0106b4daf90f6c5ce039fc2c330335ab",
      "parents": [
        "490f03d6595fade75a9b26e6ea9c9ebb1e4fd05a"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Thu May 10 15:45:56 2007 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Thu May 10 15:46:07 2007 +0200"
      },
      "message": "[S390] Kconfig: refine depends statements.\n\nRefine some depends statements to limit their visibility to the\nenvironments that are actually supported.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d",
      "tree": "f4e305edaedbde05774bb1e4acd89a9475661d2e",
      "parents": [
        "f37bc2712b54ec641e0c0c8634f1a4b61d9956c0"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 09 02:35:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Add suspend-related notifications for CPU hotplug\n\nSince nonboot CPUs are now disabled after tasks and devices have been\nfrozen and the CPU hotplug infrastructure is used for this purpose, we need\nspecial CPU hotplug notifications that will help the CPU-hotplug-aware\nsubsystems distinguish normal CPU hotplug events from CPU hotplug events\nrelated to a system-wide suspend or resume operation in progress.  This\npatch introduces such notifications and causes them to be used during\nsuspend and resume transitions.  It also changes all of the\nCPU-hotplug-aware subsystems to take these notifications into consideration\n(for now they are handled in the same way as the corresponding \"normal\"\nones).\n\n[oleg@tv-sign.ru: cleanups]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2ff81f70b56dc1cdd3bf2f08414608069db6ef1a",
      "tree": "e0db2209f7a3a0284240e8245b12c7e72a5760b8",
      "parents": [
        "02c83209726270ddf9597deabc45e08f6fc3942c"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Apr 29 16:25:49 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:32 2007 +0300"
      },
      "message": "KVM: Remove unused \u0027instruction_length\u0027\n\nAs we no longer emulate in userspace, this is meaningless.  We don\u0027t\ncompute it on SVM anyway.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "02c83209726270ddf9597deabc45e08f6fc3942c",
      "tree": "570c2d96c1daba96ae2891e63b1e55b3959e9aba",
      "parents": [
        "e7df56e4a00358b6975fae3b70dc9df1282d427a"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Apr 29 15:02:17 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:32 2007 +0300"
      },
      "message": "KVM: Don\u0027t require explicit indication of completion of mmio or pio\n\nIt is illegal not to return from a pio or mmio request without completing\nit, as mmio or pio is an atomic operation.  Therefore, we can simplify\nthe userspace interface by avoiding the completion indication.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "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": "94dfbdb3894eda2f673b70e20da2743c4a8d3968",
      "tree": "74e7a4a31a72ed0e3753e9390189d2e8132ecf0e",
      "parents": [
        "2807696c3791d6dd1dcf20f022eaa2dc7615bc5d"
      ],
      "author": {
        "name": "Anthony Liguori",
        "email": "aliguori@us.ibm.com",
        "time": "Sun Apr 29 11:56:06 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:32 2007 +0300"
      },
      "message": "KVM: SVM: Only save/restore MSRs when needed\n\nWe only have to save/restore MSR_GS_BASE on every VMEXIT.  The rest can be\nsaved/restored when we leave the VCPU.  Since we don\u0027t emulate the DEBUGCTL\nMSRs and the guest cannot write to them, we don\u0027t have to worry about\nsaving/restoring them at all.\n\nThis shaves a whopping 40% off raw vmexit costs on AMD.\n\nSigned-off-by: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "2807696c3791d6dd1dcf20f022eaa2dc7615bc5d",
      "tree": "7a5161b93b9f15264b741aede046992594287d2b",
      "parents": [
        "2ab455ccceb07945368709ba852e49f4c3119331"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sat Apr 28 21:20:48 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:31 2007 +0300"
      },
      "message": "KVM: fix an if() condition\n\nIt might have worked in this case since PT_PRESENT_MASK is 1, but let\u0027s\nexpress this correctly.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "2ab455ccceb07945368709ba852e49f4c3119331",
      "tree": "de79805085d8dfcf5714c45e7873116c110bd182",
      "parents": [
        "25c4c2762e31a75403eca0dd59f2cab85e3a2532"
      ],
      "author": {
        "name": "Anthony Liguori",
        "email": "aliguori@us.ibm.com",
        "time": "Fri Apr 27 09:29:49 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:31 2007 +0300"
      },
      "message": "KVM: VMX: Add lazy FPU support for VT\n\nOnly save/restore the FPU host state when the guest is actually using the\nFPU.\n\nSigned-off-by: Anthony Liguori \u003caliguori@us.ibm.com\u003e\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": "e0e5127d06957e76da3906b7a58d5d2665e81f59",
      "tree": "765776424d3215b8e16909caa7f7ddc810c484bb",
      "parents": [
        "7807fa6ca5af2e5660a0eb3cd90276ca0c5bdfc8"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Apr 25 10:59:52 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:31 2007 +0300"
      },
      "message": "KVM: Don\u0027t complain about cpu erratum AA15\n\nIt slows down Windows x64 horribly.\n\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": "4c690a1e8667a84b61a6114a4ad293681f32cb11",
      "tree": "ed5ffaedc83068a7cf791530a2f54483107f3d21",
      "parents": [
        "1165f5fec18c077bdba88e7125fd41f8e3617cb4"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Apr 22 15:28:19 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:31 2007 +0300"
      },
      "message": "KVM: Allow passing 64-bit values to the emulated read/write API\n\nThis simplifies the API somewhat (by eliminating the special-case\ncmpxchg8b on i386).\n\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": "3fca03653010b8c5fa63b99fc94c78cbfb433d00",
      "tree": "9102be63cdedd172fa1d58959218d1c698df7848",
      "parents": [
        "d6c69ee9a24b307ce94e55ebfba6208a830c9ecb"
      ],
      "author": {
        "name": "Yaozu Dong",
        "email": "eddie.dong@intel.com",
        "time": "Wed Apr 25 16:49:19 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:30 2007 +0300"
      },
      "message": "KVM: VMX: Avoid unnecessary vcpu_load()/vcpu_put() cycles\n\nBy checking if a reschedule is needed, we avoid dropping the vcpu.\n\n[With changes by me, based on Anthony Liguori\u0027s observations]\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "d6c69ee9a24b307ce94e55ebfba6208a830c9ecb",
      "tree": "6e3d10f96412932e4e8d3b7cbbc1c0c85189ad6f",
      "parents": [
        "4d56c8a787aefb2e3fc4ac4be966db96c14d1ad8"
      ],
      "author": {
        "name": "Yaozu Dong",
        "email": "eddie.dong@intel.com",
        "time": "Wed Apr 25 14:17:25 2007 +0800"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:30 2007 +0300"
      },
      "message": "KVM: MMU: Avoid heavy ASSERT at non debug mode.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "4d56c8a787aefb2e3fc4ac4be966db96c14d1ad8",
      "tree": "99db1bc065832b2685bd5edb75cd7c1019011ead",
      "parents": [
        "35cc7f971188366f5a5c0d5da1456bb38cef5da9"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Apr 19 14:28:44 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:30 2007 +0300"
      },
      "message": "KVM: VMX: Only save/restore MSR_K6_STAR if necessary\n\nIntel hosts only support syscall/sysret in long more (and only if efer.sce\nis enabled), so only reload the related MSR_K6_STAR if the guest will\nactually be able to use it.\n\nThis reduces vmexit cost by about 500 cycles (6400 -\u003e 5870) on my setup.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "35cc7f971188366f5a5c0d5da1456bb38cef5da9",
      "tree": "e5e097b3d59199306b72895677bbf9bf213d2550",
      "parents": [
        "e38aea3e9330624d19a233c05f3e69c57519edd5"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Apr 19 13:26:39 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:30 2007 +0300"
      },
      "message": "KVM: Fold drivers/kvm/kvm_vmx.h into drivers/kvm/vmx.c\n\nNo meat in that file.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "e38aea3e9330624d19a233c05f3e69c57519edd5",
      "tree": "68daabdafa535043ab68d01b80642fbf6a4c0977",
      "parents": [
        "2345df8c555ecb92c0c36172c07d5ac321a92dc7"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Apr 19 13:22:48 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:30 2007 +0300"
      },
      "message": "KVM: VMX: Don\u0027t switch 64-bit msrs for 32-bit guests\n\nSome msrs are only used by x86_64 instructions, and are therefore\nnot needed when the guest is legacy mode.  By not bothering to switch\nthem, we reduce vmexit latency by 2400 cycles (from about 8800) when\nrunning a 32-bt guest on a 64-bit host.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "2345df8c555ecb92c0c36172c07d5ac321a92dc7",
      "tree": "e61e3a6714d4fd06dbddb3d381494e505fd91ff0",
      "parents": [
        "c9047f533373e934b96d19d6a3d313ca2132fbe5"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Apr 17 15:30:24 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:29 2007 +0300"
      },
      "message": "KVM: VMX: Reduce unnecessary saving of host msrs\n\nTHe automatically switched msrs are never changed on the host (with\nthe exception of MSR_KERNEL_GS_BASE) and thus there is no need to save\nthem on every vm entry.\n\nThis reduces vmexit latency by ~400 cycles on i386 and by ~900 cycles (10%)\non x86_64.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "c9047f533373e934b96d19d6a3d313ca2132fbe5",
      "tree": "e64c9ed660d71321dcc9fb9d035fbc45a42fcaba",
      "parents": [
        "364b625b561b1dd74e6fa696949ae3de28999a66"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Apr 17 10:53:22 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:29 2007 +0300"
      },
      "message": "KVM: Handle guest page faults when emulating mmio\n\nUsually, guest page faults are detected by the kvm page fault handler,\nwhich detects if they are shadow faults, mmio faults, pagetable faults,\nor normal guest page faults.\n\nHowever, in ceratin circumstances, we can detect a page fault much later.\nOne of these events is the following combination:\n\n- A two memory operand instruction (e.g. movsb) is executed.\n- The first operand is in mmio space (which is the fault reported to kvm)\n- The second operand is in an ummaped address (e.g. a guest page fault)\n\nThe Windows 2000 installer does such an access, an promptly hangs.  Fix\nby adding the missing page fault injection on that path.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "364b625b561b1dd74e6fa696949ae3de28999a66",
      "tree": "189b93ac4ff80c528311d3f6c1e49fadcd2a7468",
      "parents": [
        "8c4385024d31cb909ad84a2cafa5c83a4c5fab61"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Apr 16 14:28:40 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:29 2007 +0300"
      },
      "message": "KVM: SVM: Report hardware exit reason to userspace instead of dmesg\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "8c4385024d31cb909ad84a2cafa5c83a4c5fab61",
      "tree": "9c6df8e13bf475985b682704cbe0b587072cc087",
      "parents": [
        "b5a33a75720c03d58d8281a72b45ffd214f00ed7"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Apr 16 11:53:17 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:29 2007 +0300"
      },
      "message": "KVM: Retry sleeping allocation if atomic allocation fails\n\nThis avoids -ENOMEM under memory pressure.\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": "417726a3fbecb2092f1054bbaee87bc442b05ef3",
      "tree": "4d9810766bba0c28ce408639b5d63b50d71533fd",
      "parents": [
        "d917a6b92d0d1e4e2b98e86c584bc9e643cd5117"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Apr 12 17:35:58 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:29 2007 +0300"
      },
      "message": "KVM: Handle partial pae pdptr\n\nSome guests (Solaris) do not set up all four pdptrs, but leave some invalid.\nkvm incorrectly treated these as valid page directories, pinning the\nwrong pages and causing general confusion.\n\nFix by checking the valid bit of a pae pdpte.  This closes sourceforge bug\n1698922.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "d917a6b92d0d1e4e2b98e86c584bc9e643cd5117",
      "tree": "2ba826853c0683f3aadb42d59bd5ab02650552b9",
      "parents": [
        "3964994bb5ba85a3d8b54ae618f7be1cecce916d"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Apr 12 13:03:01 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:29 2007 +0300"
      },
      "message": "KVM: Initialize cr0 to indicate an fpu is present\n\nSolaris panics if it sees a cpu with no fpu, and it seems to rely on this\nbit.  Closes sourceforge bug 1698920.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "3964994bb5ba85a3d8b54ae618f7be1cecce916d",
      "tree": "d093a2be86855e37abe7783e257eac4d9eb0ae73",
      "parents": [
        "5008fdf5b6a31240da060c0867d8f16f08ce2384"
      ],
      "author": {
        "name": "Eric Sesterhenn / Snakebyte",
        "email": "snakebyte@gmx.de",
        "time": "Mon Apr 09 16:15:05 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:29 2007 +0300"
      },
      "message": "KVM: Fix overflow bug in overflow detection code\n\nThe expression\n\n   sp - 6 \u003c sp\n\nwhere sp is a u16 is undefined in C since \u0027sp - 6\u0027 is promoted to int,\nand signed overflow is undefined in C.  gcc 4.2 actually warns about it.\nReplace with a simpler test.\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "5008fdf5b6a31240da060c0867d8f16f08ce2384",
      "tree": "400c6c63bc7e463a6e6af5743d58015eef5bfbbe",
      "parents": [
        "80b7706e4cbaa51d65bd6fea83bd0e59856f50e9"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Apr 02 13:05:50 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:28 2007 +0300"
      },
      "message": "KVM: Use kernel-standard types\n\nNoted by Joerg Roedel.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "80b7706e4cbaa51d65bd6fea83bd0e59856f50e9",
      "tree": "c688c8b9cd07c2555facd657e8e8e3ed508b93be",
      "parents": [
        "b8836737d92c139be770eae3d6574e33d1224caf"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Fri Mar 30 17:02:14 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:28 2007 +0300"
      },
      "message": "KVM: SVM: enable LBRV virtualization if available\n\nThis patch enables the virtualization of the last branch record MSRs on\nSVM if this feature is available in hardware. It also introduces a small\nand simple check feature for specific SVM extensions.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "b8836737d92c139be770eae3d6574e33d1224caf",
      "tree": "9c03b429fda12e6fbdc97469eb039076aa397744",
      "parents": [
        "e8207547d2f7b2f557bdb73015c1f74c32474438"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Apr 01 16:34:31 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:28 2007 +0300"
      },
      "message": "KVM: Add fpu get/set operations\n\nThese are really helpful when migrating an floating point app to another\nmachine.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "e8207547d2f7b2f557bdb73015c1f74c32474438",
      "tree": "7e5c15bec5cf9ef45a81227b009e6449f5c6d47c",
      "parents": [
        "954bbbc236afe23b368abdf4942f313a5f6e1d50"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Mar 30 16:54:30 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:28 2007 +0300"
      },
      "message": "KVM: Add physical memory aliasing feature\n\nWith this, we can specify that accesses to one physical memory range will\nbe remapped to another.  This is useful for the vga window at 0xa0000 which\nis used as a movable window into the (much larger) framebuffer.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "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": "df513e2cdd099822ed32cbc20aaf4ff310372202",
      "tree": "f99a1cabbe88886ec522179172f02903a2a36e26",
      "parents": [
        "afeb1f14c5478560262b37431726eb0eb1a42e9e"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Mar 28 20:04:16 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:28 2007 +0300"
      },
      "message": "KVM: x86 emulator: fix bit string operations operand size\n\nOn x86, bit operations operate on a string of bits that can reside in\nmultiple words.  For example, \u0027btsl %eax, (blah)\u0027 will touch the word\nat blah+4 if %eax is between 32 and 63.\n\nThe x86 emulator compensates for that by advancing the operand address\nby (bit offset / BITS_PER_LONG) and truncating the bit offset to the\nrange (0..BITS_PER_LONG-1).  This has a side effect of forcing the operand\nsize to 8 bytes on 64-bit hosts.\n\nNow, a 32-bit guest goes and fork()s a process.  It write protects a stack\npage at 0xbffff000 using the \u0027btr\u0027 instruction, at offset 0xffc in the page\ntable, with bit offset 1 (for the write permission bit).\n\nThe emulator now forces the operand size to 8 bytes as previously described,\nand an innocent page table update turns into a cross-page-boundary write,\nwhich is assumed by the mmu code not to be a page table, so it doesn\u0027t\nactually clear the corresponding shadow page table entry.  The guest and\nhost permissions are out of sync and guest memory is corrupted soon\nafterwards, leading to guest failure.\n\nFix by not using BITS_PER_LONG as the word size; instead use the actual\noperand size, so we get a 32-bit write in that case.\n\nNote we still have to teach the mmu to handle cross-page-boundary writes\nto guest page table; but for now this allows Damn Small Linux 0.4 (2.4.20)\nto boot.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "afeb1f14c5478560262b37431726eb0eb1a42e9e",
      "tree": "ff5613b598ab4e0dcf13426e453c6bcf6075e03e",
      "parents": [
        "36868f7b0efd0b6a1d45fe3b40a6c4bc63222659"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Mar 27 17:50:20 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:27 2007 +0300"
      },
      "message": "KVM: Remove debug message\n\nNo longer interesting.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "36868f7b0efd0b6a1d45fe3b40a6c4bc63222659",
      "tree": "79acd363a5fce690443f438dcba33b1d88e03373",
      "parents": [
        "55bf4028342d96b21fe5dc0721b481b0bc1e81f6"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Mar 26 19:31:52 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:27 2007 +0300"
      },
      "message": "KVM: Use list_move()\n\nUse list_move() where possible.  Noticed by Dor Laor.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "55bf4028342d96b21fe5dc0721b481b0bc1e81f6",
      "tree": "f2da612009ae1e8a4d5919c5a8749a75a5ca275c",
      "parents": [
        "0cc5064d335543a72c5ef904a3f528966fa3f2d2"
      ],
      "author": {
        "name": "Michal Piotrowski",
        "email": "michal.k.k.piotrowski@gmail.com",
        "time": "Sun Mar 25 17:59:32 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:27 2007 +0300"
      },
      "message": "KVM: Remove unused function\n\nRemove unused function\n\nCC      drivers/kvm/svm.o\ndrivers/kvm/svm.c:207: warning: ‘inject_db’ defined but not used\n\nSigned-off-by: Michal Piotrowski \u003cmichal.k.k.piotrowski@gmail.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": "916ce2360fadc71d924e02403b31280112a31280",
      "tree": "6cdb3c1e122cb25e18f1848c151aacc356c06fde",
      "parents": [
        "0e5bf0d0e449f6597870570e8dd17e78ba4d75ff"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Wed Mar 21 19:47:00 2007 +0100"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:26 2007 +0300"
      },
      "message": "KVM: SVM: forbid guest to execute monitor/mwait\n\nThis patch forbids the guest to execute monitor/mwait instructions on\nSVM. This is necessary because the guest can execute these instructions\nif they are available even if the kvm cpuid doesn\u0027t report its\nexistence.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "0e5bf0d0e449f6597870570e8dd17e78ba4d75ff",
      "tree": "2ac27b98ec801261998c868ed856e1488bcae62e",
      "parents": [
        "fcd3410870049cb74bb1a3a2458cb3ec21185cd1"
      ],
      "author": {
        "name": "Sergey Kiselev",
        "email": "sergey.kiselev@intel.com",
        "time": "Thu Mar 22 14:06:18 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:26 2007 +0300"
      },
      "message": "KVM: Handle writes to MCG_STATUS msr\n\nSome older (~2.6.7) kernels write MCG_STATUS register during kernel\nboot (mce_clear_all() function, called from mce_init()). It\u0027s not\ncurrently handled by kvm and will cause it to inject a GPF.\nFollowing patch adds a \"nop\" handler for this.\n\nSigned-off-by: Sergey Kiselev \u003csergey.kiselev@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "fcd3410870049cb74bb1a3a2458cb3ec21185cd1",
      "tree": "fbb7abe5dfa4c01b6802cd65cd77e3b519816887",
      "parents": [
        "6da63cf95f6a19fe0a302232048452c96b178e45"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Mar 21 18:14:42 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:26 2007 +0300"
      },
      "message": "KVM: Remove unused and write-only variables\n\nTrivial cleanup.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "6da63cf95f6a19fe0a302232048452c96b178e45",
      "tree": "ee415a52fe660721ea6307cfcb207f6b4f285ff9",
      "parents": [
        "038881c8bec0e9a796d1782c56e29e7c2456626d"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Mar 21 18:11:36 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:26 2007 +0300"
      },
      "message": "KVM: Don\u0027t allow the guest to turn off the cpu cache\n\nThe cpu cache is a host resource; the guest should not be able to turn\nit off (even for itself).\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "038881c8bec0e9a796d1782c56e29e7c2456626d",
      "tree": "8ca64ffb2f06cb29fa3fda3b9987defc2ece18a4",
      "parents": [
        "024aa1c02f0a9f938af83f55c727bcb18187eba4"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Mar 21 17:58:32 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:26 2007 +0300"
      },
      "message": "KVM: Hack real-mode segments on vmx from KVM_SET_SREGS\n\nAs usual, we need to mangle segment registers when emulating real mode\nas vm86 has specific constraints.  We special case the reset segment base,\nand set the \"access rights\" (or descriptor flags) to vm86 comaptible values.\n\nThis fixes reboot on vmx.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "024aa1c02f0a9f938af83f55c727bcb18187eba4",
      "tree": "9b431c38f5fc673f7c494bd39a87c12063745d47",
      "parents": [
        "f6528b03f167785301908bf124db7be591e983ca"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Mar 21 13:44:58 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:26 2007 +0300"
      },
      "message": "KVM: Modify guest segments after potentially switching modes\n\nThe SET_SREGS ioctl modifies both cr0.pe (real mode/protected mode) and\nguest segment registers.  Since segment handling is modified by the mode on\nIntel procesors, update the segment registers after the mode switch has taken\nplace.\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": "8cb5b0333250beb382624f626851a31f601b4830",
      "tree": "f2406e4eb5c668f22eb4f53995c1928d9eebf42b",
      "parents": [
        "aac012245a59d78372dc66d292ba567367d86b60"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Mar 20 18:40:40 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:25 2007 +0300"
      },
      "message": "KVM: Workaround vmx inability to virtualize the reset state\n\nThe reset state has cs.selector \u003d\u003d 0xf000 and cs.base \u003d\u003d 0xffff0000,\nwhich aren\u0027t compatible with vm86 mode, which is used for real mode\nvirtualization.\n\nWhen we create a vcpu, we set cs.base to 0xf0000, but if we get there by\nway of a reset, the values are inconsistent and vmx refuses to enter\nguest mode.\n\nWorkaround by detecting the state and munging it appropriately.\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": "ca5aac1f96c18b5e4dcfea253d7ab607b5dcd5c9",
      "tree": "f313cbd517fd2d0deb5f92175f924303582b976c",
      "parents": [
        "039576c03c35e2f990ad9bb9c39e1bad3cd60d34"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Mar 20 14:29:06 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:25 2007 +0300"
      },
      "message": "KVM: MMU: Remove unnecessary check for pdptr access\n\nWe already special case the pdptr access, so no need to check it again.\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": "f0fe510864a4520a85dfa35ae14f5f376c56efc7",
      "tree": "3d6422576b072480b78b3b505ec03d98ab21c0c3",
      "parents": [
        "07c45a366d89f8eaec5d9890e810171b408f9a52"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Mar 07 13:11:17 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:25 2007 +0300"
      },
      "message": "KVM: Future-proof argument-less ioctls\n\nSome ioctls ignore their arguments.  By requiring them to be zero now,\nwe allow a nonzero value to have some special meaning in the future.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "07c45a366d89f8eaec5d9890e810171b408f9a52",
      "tree": "2f54f8c4ba795a1432ee6ac2e8042a472b87550a",
      "parents": [
        "1961d276c877b99f5f16aaf36377c75e0e191c3a"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Mar 07 13:05:38 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:24 2007 +0300"
      },
      "message": "KVM: Allow kernel to select size of mmap() buffer\n\nThis allows us to store offsets in the kernel/user kvm_run area, and be\nsure that userspace has them mapped.  As offsets can be outside the\nkvm_run struct, userspace has no way of knowing how much to mmap.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "1961d276c877b99f5f16aaf36377c75e0e191c3a",
      "tree": "4ea92fc2821bd0f9013ee567ee2f11c6cc532d79",
      "parents": [
        "6722c51c51518af9581ab6cd9b6aec93774334a6"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Mar 05 19:46:05 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:24 2007 +0300"
      },
      "message": "KVM: Add guest mode signal mask\n\nAllow a special signal mask to be used while executing in guest mode.  This\nallows signals to be used to interrupt a vcpu without requiring signal\ndelivery to a userspace handler, which is quite expensive.  Userspace still\nreceives -EINTR and can get the signal via sigwait().\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "6722c51c51518af9581ab6cd9b6aec93774334a6",
      "tree": "41b2b77cfc486aeb25a154b4b476cc91054749ad",
      "parents": [
        "1b19f3e61d7e1edb395dd64bf7d63621a37af8ca"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Mar 05 17:45:40 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:24 2007 +0300"
      },
      "message": "KVM: Initialize the apic_base msr on svm too\n\nOlder userspace didn\u0027t care, but newer userspace (with the cpuid changes)\ndoes.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "1b19f3e61d7e1edb395dd64bf7d63621a37af8ca",
      "tree": "52d90cc6e505f84ec741770950f4f07be45b7fba",
      "parents": [
        "8eb7d334bd8e693340ee198280f7d45035cdab8c"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 14:24:03 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:24 2007 +0300"
      },
      "message": "KVM: Add a special exit reason when exiting due to an interrupt\n\nThis is redundant, as we also return -EINTR from the ioctl, but it\nallows us to examine the exit_reason field on resume without seeing\nold data.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "8eb7d334bd8e693340ee198280f7d45035cdab8c",
      "tree": "438ec0b6b6c7714e436884576a3fdce84507813f",
      "parents": [
        "b4e63f560beb187cffdaf706e534a1e2f9effb66"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 14:17:08 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:24 2007 +0300"
      },
      "message": "KVM: Fold kvm_run::exit_type into kvm_run::exit_reason\n\nCurrently, userspace is told about the nature of the last exit from the\nguest using two fields, exit_type and exit_reason, where exit_type has\njust two enumerations (and no need for more).  So fold exit_type into\nexit_reason, reducing the complexity of determining what really happened.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "b4e63f560beb187cffdaf706e534a1e2f9effb66",
      "tree": "1fe1a640530af04d1d722e0c99c8086b0e13f1e7",
      "parents": [
        "5d308f4550d9dc4c236e08b0377b610b9578577b"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 13:59:30 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:24 2007 +0300"
      },
      "message": "KVM: Allow userspace to process hypercalls which have no kernel handler\n\nThis is useful for paravirtualized graphics devices, for example.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "5d308f4550d9dc4c236e08b0377b610b9578577b",
      "tree": "c19005059de37403db7962bcfa7bac657331b052",
      "parents": [
        "739872c56f3322c38320c7a5a543ef6f56f174bc"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Mar 01 17:56:20 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:24 2007 +0300"
      },
      "message": "KVM: Add method to check for backwards-compatible API extensions\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "106b552b43beac2694df5fbafc8f125a72df5f65",
      "tree": "3d26f1f7148eaa4cb6e6d882418db283d9f2d29f",
      "parents": [
        "06465c5a3aa9948a7b00af49cd22ed8f235cdb0f"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Mar 01 16:20:40 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:23 2007 +0300"
      },
      "message": "KVM: Remove the \u0027emulated\u0027 field from the userspace interface\n\nWe no longer emulate single instructions in userspace.  Instead, we service\nmmio or pio requests.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "06465c5a3aa9948a7b00af49cd22ed8f235cdb0f",
      "tree": "2a21941ae6f28445abbb3cc80dd3416cf2241b8d",
      "parents": [
        "46fc1477887c41c8e900f2c95485e222b9a54822"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Feb 28 20:46:53 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:23 2007 +0300"
      },
      "message": "KVM: Handle cpuid in the kernel instead of punting to userspace\n\nKVM used to handle cpuid by letting userspace decide what values to\nreturn to the guest.  We now handle cpuid completely in the kernel.  We\nstill let userspace decide which values the guest will see by having\nuserspace set up the value table beforehand (this is necessary to allow\nmanagement software to set the cpu features to the least common denominator,\nso that live migration can work).\n\nThe motivation for the change is that kvm kernel code can be impacted by\ncpuid features, for example the x86 emulator.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "46fc1477887c41c8e900f2c95485e222b9a54822",
      "tree": "ef9d4d4b6fc32f3d6b4e77a87d1b47b6da455574",
      "parents": [
        "9a2bb7f486dc639a1cf2ad803bf2227f0dc0809d"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Feb 22 19:39:30 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:23 2007 +0300"
      },
      "message": "KVM: Do not communicate to userspace through cpu registers during PIO\n\nCurrently when passing the a PIO emulation request to userspace, we\nrely on userspace updating %rax (on \u0027in\u0027 instructions) and %rsi/%rdi/%rcx\n(on string instructions).  This (a) requires two extra ioctls for getting\nand setting the registers and (b) is unfriendly to non-x86 archs, when\nthey get kvm ports.\n\nSo fix by doing the register fixups in the kernel and passing to userspace\nonly an abstract description of the PIO to be done.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "9a2bb7f486dc639a1cf2ad803bf2227f0dc0809d",
      "tree": "db323e11ae5a5286a1e344b444162be53bc4d9fc",
      "parents": [
        "1ea252afcd4b264b71d9c3f55358ff5ba4c04f1b"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Feb 22 12:58:31 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:23 2007 +0300"
      },
      "message": "KVM: Use a shared page for kernel/user communication when runing a vcpu\n\nInstead of passing a \u0027struct kvm_run\u0027 back and forth between the kernel and\nuserspace, allocate a page and allow the user to mmap() it.  This reduces\nneedless copying and makes the interface expandable by providing lots of\nfree space.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "1ea252afcd4b264b71d9c3f55358ff5ba4c04f1b",
      "tree": "44573dbf1be2e7e688774b420cfd00ec2c4b7f7d",
      "parents": [
        "ff42697436ddf5bd026e2cb4f117656b967f0709"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Mar 08 11:48:09 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:23 2007 +0300"
      },
      "message": "KVM: Fix bogus sign extension in mmu mapping audit\n\nWhen auditing a 32-bit guest on a 64-bit host, sign extension of the page\ntable directory pointer table index caused bogus addresses to be shown on\naudit errors.\n\nFix by declaring the index unsigned.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "bbe4432e669ab94fc8059e7ab878cafad7b8d123",
      "tree": "86a0c878e232a5bcf6978165d0d5a482a22f3a62",
      "parents": [
        "510043da8582ad49d22a1e9a6b211e6ede10cd2e"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 13:27:36 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:22 2007 +0300"
      },
      "message": "KVM: Use own minor number\n\nUse the minor number (232) allocated to kvm by lanana.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "510043da8582ad49d22a1e9a6b211e6ede10cd2e",
      "tree": "0ded38e3d2fb77d02c59a6afce464d15d75e1cca",
      "parents": [
        "9b22bf578332d3e326c349bc8a8789af3d952435"
      ],
      "author": {
        "name": "Dor Laor",
        "email": "dor.laor@qumranet.com",
        "time": "Mon Feb 19 18:25:43 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:22 2007 +0300"
      },
      "message": "KVM: Use the generic skip_emulated_instruction() in hypercall code\n\nInstead of twiddling the rip registers directly, use the\nskip_emulated_instruction() function to do that for us.\n\nSigned-off-by: Dor Laor \u003cdor.laor@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "9b22bf578332d3e326c349bc8a8789af3d952435",
      "tree": "90cd7779ad0d17764dbf3bf9ff49f42247cb95bd",
      "parents": [
        "dc87c3985e9b442c60994308a96f887579addc39"
      ],
      "author": {
        "name": "Dor Laor",
        "email": "dor.laor@qumranet.com",
        "time": "Mon Feb 19 16:44:49 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 03 10:52:22 2007 +0300"
      },
      "message": "KVM: Fix guest register corruption on paravirt hypercall\n\nThe hypercall code mixes up the -\u003ecache_regs() and -\u003edecache_regs()\ncallbacks, resulting in guest register corruption.\n\nSigned-off-by: Dor Laor \u003cdor.laor@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "6b8d0f9b180cb93513bb65f705b299370f0357a1",
      "tree": "f62483014f65a5f13f3ce0bf08c43394208ca7f6",
      "parents": [
        "80d74d5123bf3aecd32302809c4e61bb8a16786b"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Apr 18 11:18:18 2007 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Apr 19 18:39:26 2007 +0300"
      },
      "message": "KVM: Fix off-by-one when writing to a nonpae guest pde\n\nNonpae guest pdes are shadowed by two pae ptes, so we double the offset\ntwice: once to account for the pte size difference, and once because we\nneed to shadow pdes for a single guest pde.\n\nBut when writing to the upper guest pde we also need to truncate the\nlower bits, otherwise the multiply shifts these bits into the pde index\nand causes an access to the wrong shadow pde.  If we\u0027re at the end of the\npage (accessing the very last guest pde) we can even overflow into the\nnext host page and oops.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "6d9658df07789a124e5c1f8677afcd7773439f3e",
      "tree": "ad7b6c562c1d52f9794508c0e29ff18e73bc795e",
      "parents": [
        "6af11b9e827aac1d664ccd31e94f122c7698416b"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Mar 11 13:52:33 2007 +0100"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Mar 27 17:55:48 2007 +0200"
      },
      "message": "KVM: always reload segment selectors\n\nfailed VM entry on VMX might still change %fs or %gs, thus make sure\nthat KVM always reloads the segment selectors. This is crutial on both\nx86 and x86_64: x86 has __KERNEL_PDA in %fs on which things like\n\u0027current\u0027 depends and x86_64 has 0 there and needs MSR_GS_BASE to work.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6af11b9e827aac1d664ccd31e94f122c7698416b",
      "tree": "469d01dce403c23a068d7f9e266d45b8ced80776",
      "parents": [
        "703071b5b93d88d5acb0edd5b9dd86c69ad970f2"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Mar 19 13:18:10 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Mar 27 17:54:38 2007 +0200"
      },
      "message": "KVM: Prevent system selectors leaking into guest on real-\u003eprotected mode transition on vmx\n\nIntel virtualization extensions do not support virtualizing real mode.  So\nkvm uses virtualized vm86 mode to run real mode code.  Unfortunately, this\nvirtualized vm86 mode does not support the so called \"big real\" mode, where\nthe segment selector and base do not agree with each other according to the\nreal mode rules (base \u003d\u003d selector \u003c\u003c 4).\n\nTo work around this, kvm checks whether a selector/base pair violates the\nvirtualized vm86 rules, and if so, forces it into conformance.  On a\ntransition back to protected mode, if we see that the guest did not touch\na forced segment, we restore it back to the original protected mode value.\n\nThis pile of hacks breaks down if the gdt has changed in real mode, as it\ncan cause a segment selector to point to a system descriptor instead of a\nnormal data segment.  In fact, this happens with the Windows bootloader\nand the qemu acpi bios, where a protected mode memcpy routine issues an\ninnocent \u0027pop %es\u0027 and traps on an attempt to load a system descriptor.\n\n\"Fix\" by checking if the to-be-restored selector points at a system segment,\nand if so, coercing it into a normal data segment.  The long term solution,\nof course, is to abandon vm86 mode and use emulation for big real mode.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "27aba76615eeb36af84118e8ea6d35ffa51fd1e3",
      "tree": "8bd933f47eb91818c2e24cb10a4d820f0abea74e",
      "parents": [
        "ac1b714e78c8f0b252f8d8872e6ce6f898a123b3"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Mar 09 13:04:31 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 18 10:49:09 2007 +0200"
      },
      "message": "KVM: MMU: Fix host memory corruption on i386 with \u003e\u003d 4GB ram\n\nPAGE_MASK is an unsigned long, so using it to mask physical addresses on\ni386 (which are 64-bit wide) leads to truncation.  This can result in\npage-\u003eprivate of unrelated memory pages being modified, with disasterous\nresults.\n\nFix by not using PAGE_MASK for physical addresses; instead calculate\nthe correct value directly from PAGE_SIZE.  Also fix a similar BUG_ON().\n\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "ac1b714e78c8f0b252f8d8872e6ce6f898a123b3",
      "tree": "6068b184778a7f43c92b0518eaefcf617309779b",
      "parents": [
        "f5b42c3324494ea3f9bf795e2a7e4d3cbb06c607"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Mar 08 17:13:32 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 18 10:49:09 2007 +0200"
      },
      "message": "KVM: MMU: Fix guest writes to nonpae pde\n\nKVM shadow page tables are always in pae mode, regardless of the guest\nsetting.  This means that a guest pde (mapping 4MB of memory) is mapped\nto two shadow pdes (mapping 2MB each).\n\nWhen the guest writes to a pte or pde, we intercept the write and emulate it.\nWe also remove any shadowed mappings corresponding to the write.  Since the\nmmu did not account for the doubling in the number of pdes, it removed the\nwrong entry, resulting in a mismatch between shadow page tables and guest\npage tables, followed shortly by guest memory corruption.\n\nThis patch fixes the problem by detecting the special case of writing to\na non-pae pde and adjusting the address and number of shadow pdes zapped\naccordingly.\n\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "f5b42c3324494ea3f9bf795e2a7e4d3cbb06c607",
      "tree": "98019c1e0f8d6ac45386dea3f4d5eab356ea864c",
      "parents": [
        "ca45aaae1ef98890ac4e3ee48d65aa22401fd1dc"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Mar 06 12:05:53 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 18 10:49:06 2007 +0200"
      },
      "message": "KVM: Fix guest sysenter on vmx\n\nThe vmx code currently treats the guest\u0027s sysenter support msrs as 32-bit\nvalues, which breaks 32-bit compat mode userspace on 64-bit guests.  Fix by\nusing the native word width of the machine.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "ca45aaae1ef98890ac4e3ee48d65aa22401fd1dc",
      "tree": "932e158722cf96b9090e36e21449f10f6f7c2525",
      "parents": [
        "b720a3be1abd0cb5b9b530c0a1b4044fec4de60e"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Mar 01 19:21:03 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 18 10:49:06 2007 +0200"
      },
      "message": "KVM: Unset kvm_arch_ops if arch module loading failed\n\nOtherwise, the core module thinks the arch module is loaded, and won\u0027t\nlet you reload it after you\u0027ve fixed the bug.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "e9cdb1e330d805f4453c1359cebe2bd6a06ce692",
      "tree": "4d9f66464ebe5e5240e3d3e95aaf7e6161a4a7a8",
      "parents": [
        "58e690e6fd47a682b49aed3510443d6797a03021"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Mar 01 11:28:13 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:43 2007 +0200"
      },
      "message": "KVM: Move kvmfs magic number to \u003clinux/magic.h\u003e\n\nUse the standard magic.h for kvmfs.\n\nCc: Avi Kivity \u003cavi@qumranet.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "58e690e6fd47a682b49aed3510443d6797a03021",
      "tree": "9859df2f04f05a8c2c470ccf18abea5ff1f51d89",
      "parents": [
        "ff990d5952712c2e163b355946c39278da8407a8"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Feb 26 16:29:43 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:43 2007 +0200"
      },
      "message": "KVM: Fix bogus failure in kvm.ko module initialization\n\nA bogus \u0027return r\u0027 can cause an otherwise successful module load to fail.\nThis both denies users the use of kvm, and it also denies them the use of\ntheir machine, as it leaves a filesystem registered with its callbacks\npointing into now-freed module memory.\n\nFix by returning a zero like a good module.\n\nThanks to Richard Lucassen \u003cmailinglists@lucassen.org\u003e (?) for reporting\nthe problem and for providing access to a machine which exhibited it.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "ff990d5952712c2e163b355946c39278da8407a8",
      "tree": "73766d7c8435ded99d8a107b4471a8020164d800",
      "parents": [
        "02b27c1f802bfb60cc2cb5b763dde1b6b3479a7e"
      ],
      "author": {
        "name": "Uri Lublin",
        "email": "uril@qumranet.com",
        "time": "Thu Feb 22 17:37:32 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:43 2007 +0200"
      },
      "message": "KVM: Remove write access permissions when dirty-page-logging is enabled\n\nEnabling dirty page logging is done using KVM_SET_MEMORY_REGION ioctl.\nIf the memory region already exists, we need to remove write accesses,\nso writes will be caught, and dirty pages will be logged.\n\nSigned-off-by: Uri Lublin \u003curil@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "02b27c1f802bfb60cc2cb5b763dde1b6b3479a7e",
      "tree": "b22d1d9750131a4d6f5822dd8dec84438657f3c2",
      "parents": [
        "cd1a4a982a78e793125db2f386e91dc7c89c9ed1"
      ],
      "author": {
        "name": "Uri Lublin",
        "email": "uril@qumranet.com",
        "time": "Thu Feb 22 17:15:33 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:43 2007 +0200"
      },
      "message": "kvm: move do_remove_write_access() up\n\nTo be called from kvm_vm_ioctl_set_memory_region()\n\nSigned-off-by: Uri Lublin \u003curil@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "cd1a4a982a78e793125db2f386e91dc7c89c9ed1",
      "tree": "7e5e9dd9534feed9ecc83c147e2f6166a6edbc48",
      "parents": [
        "ab51a434c5816e1ca3f033791c1cc5c6594998ec"
      ],
      "author": {
        "name": "Uri Lublin",
        "email": "uril@qumranet.com",
        "time": "Thu Feb 22 16:43:09 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:42 2007 +0200"
      },
      "message": "KVM: Fix dirty page log bitmap size/access calculation\n\nSince dirty_bitmap is an unsigned long array, the alignment and size need\nto take that into account.\n\nSigned-off-by: Uri Lublin \u003curil@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "ab51a434c5816e1ca3f033791c1cc5c6594998ec",
      "tree": "f806c9013d8d28cb585163eac7f6526c09965a30",
      "parents": [
        "f7e6a45ad9224dfe9f0d76a45c43be7ccafe0b82"
      ],
      "author": {
        "name": "Uri Lublin",
        "email": "uril@qumranet.com",
        "time": "Wed Feb 21 18:25:21 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:42 2007 +0200"
      },
      "message": "KVM: Add missing calls to mark_page_dirty()\n\nA few places where we modify guest memory fail to call mark_page_dirty(),\ncausing live migration to fail.  This adds the missing calls.\n\nSigned-off-by: Uri Lublin \u003curil@qumranet.com\u003e\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": "c5ea76600653b1a242321734435cb1c54778941a",
      "tree": "1ab46f0c3d6ac93b0b92b7d5c26b02a811765639",
      "parents": [
        "2c6f5df9793e6f928fc763af3fb535a5e28a1f8a"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Feb 20 18:41:05 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:42 2007 +0200"
      },
      "message": "KVM: Move kvm_vm_ioctl_create_vcpu() around\n\nIn preparation of some hacking.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "2c6f5df9793e6f928fc763af3fb535a5e28a1f8a",
      "tree": "84ce59e464a97194413e16c7ecc43ee1e7b394da",
      "parents": [
        "f17abe9a44425ff9c9858bc1806cc09d6b5dad1c"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Feb 20 18:27:58 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:42 2007 +0200"
      },
      "message": "KVM: Rename some kvm_dev_ioctl_*() functions to kvm_vm_ioctl_*()\n\nThis reflects the changed scope, from device-wide to single vm (previously\nevery device open created a virtual machine).\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "f17abe9a44425ff9c9858bc1806cc09d6b5dad1c",
      "tree": "47b060818bbea16dfecf21b8008a99c978a5f0c3",
      "parents": [
        "37e29d906c6eb1ece907e509160518b2edc2c083"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Feb 21 19:28:04 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:42 2007 +0200"
      },
      "message": "KVM: Create an inode per virtual machine\n\nThis avoids having filp-\u003ef_op and the corresponding inode-\u003ei_fop different,\nwhich is a little unorthodox.\n\nThe ioctl list is split into two: global kvm ioctls and per-vm ioctls.  A new\nioctl, KVM_CREATE_VM, is used to create VMs and return the VM fd.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "37e29d906c6eb1ece907e509160518b2edc2c083",
      "tree": "2315e8b516d89400f6e03253d85f74eea3127526",
      "parents": [
        "19d1408dfd683daf1c158bb8fbf54324eb4bf568"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Feb 20 14:07:37 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:41 2007 +0200"
      },
      "message": "KVM: Add internal filesystem for generating inodes\n\nThe kvmfs inodes will represent virtual machines and vcpus, as necessary,\nreducing cacheline bouncing due to inodes and filps being shared.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "19d1408dfd683daf1c158bb8fbf54324eb4bf568",
      "tree": "c196af052c08706e3c7e34cceb079637839532c7",
      "parents": [
        "0152527b76b72333121d5a1243f9e091b58d4580"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Feb 19 14:37:48 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:41 2007 +0200"
      },
      "message": "KVM: More 0 -\u003e NULL conversions\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "0152527b76b72333121d5a1243f9e091b58d4580",
      "tree": "d622f4f95998cca751507c21e1515798f2bd7fda",
      "parents": [
        "cd205625e9bf2090d9bd95848ef4b34ad3f1a8b3"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@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:41 2007 +0200"
      },
      "message": "KVM: SVM: intercept SMI to handle it at host level\n\nThis patch changes the SVM code to intercept SMIs and handle it\noutside the guest.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "cd205625e9bf2090d9bd95848ef4b34ad3f1a8b3",
      "tree": "f558928ccdb1a78ac5d509e1dff8756de8836718",
      "parents": [
        "270fd9b96f5fcb7df15d3ca6166545d4aa0f3ee9"
      ],
      "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: svm: init cr0 with the wp bit set\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": "02e235bc8eebf8a6fef10d46479b3c18f3e9c4f2",
      "tree": "7adc652e23ef451c059f8dfb736b59b27d108747",
      "parents": [
        "c21415e84334af679630f6450ceb8929a5234fad"
      ],
      "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: Add hypercall host support for svm\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "c21415e84334af679630f6450ceb8929a5234fad",
      "tree": "6f9ce30c9fd97a3fc94e79e1450fda86f612b56e",
      "parents": [
        "102d8325a1d2f266d3d0a03fdde948544e72c12d"
      ],
      "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 host hypercall support for vmx\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": "9d8f549dc69b1fc65d0b03916c02f12ca49b3ea0",
      "tree": "938b47ff9c507b266ea57713cc2233b59b6850df",
      "parents": [
        "de979caacca51c929d2cc2f0f79611ee4a1bc8a5"
      ],
      "author": {
        "name": "Ahmed S. Darwish",
        "email": "darwish.07@gmail.com",
        "time": "Mon Feb 19 14:37:46 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:39 2007 +0200"
      },
      "message": "KVM: Use ARRAY_SIZE macro instead of manual calculation.\n\nSigned-off-by: Ahmed S. Darwish \u003cdarwish.07@gmail.com\u003e\nSigned-off-by: Dor Laor \u003cdor.laor@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "de979caacca51c929d2cc2f0f79611ee4a1bc8a5",
      "tree": "d0a89aee5efdf8e65010dfcf718d600cd78ce0d9",
      "parents": [
        "d27d4aca184ac0ca6b7e32caf79e1c2b91959be9"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Mon Feb 19 14:37:46 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:39 2007 +0200"
      },
      "message": "KVM: vmx: hack set_cr0_no_modeswitch() to actually do modeswitch\n\nThe whole thing is rotten, but this allows vmx to boot with the guest reboot\nfix.\n\nSigned-off-by: Markus Rechberger \u003cmarkus.rechberger@amd.com\u003e\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "d27d4aca184ac0ca6b7e32caf79e1c2b91959be9",
      "tree": "048e9ea24b55ac63783cc6cc3495d0feb5de57d0",
      "parents": [
        "43934a38d7cb39ff33baedc7f2c40a2a891116fa"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Feb 19 14:37:46 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:39 2007 +0200"
      },
      "message": "KVM: Cosmetics\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "43934a38d7cb39ff33baedc7f2c40a2a891116fa",
      "tree": "14d37a98c2ce5ac05e23ef3f2411d2df90988504",
      "parents": [
        "bf3f8e86c2e22b9bd1375be1bbbd67384dba4342"
      ],
      "author": {
        "name": "Jeremy Katz",
        "email": "katzj@redhat.com",
        "time": "Mon Feb 19 14:37:46 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:39 2007 +0200"
      },
      "message": "KVM: Move virtualization deactivation from CPU_DEAD state to CPU_DOWN_PREPARE\n\nThis gives it more chances of surviving suspend.\n\nSigned-off-by: Jeremy Katz \u003ckatzj@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "bf3f8e86c2e22b9bd1375be1bbbd67384dba4342",
      "tree": "0c0435a394885d1e679025a6a39c29f90b6282af",
      "parents": [
        "bb648a0d22908116b4ef168935a160d7f17c4e6d"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Feb 19 14:37:46 2007 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Mar 04 11:12:39 2007 +0200"
      },
      "message": "KVM: mmu: add missing dirty page tracking cases\n\nWe fail to mark a page dirty in three cases:\n\n- setting the accessed bit in a pte\n- setting the dirty bit in a pte\n- emulating a write into a pagetable\n\nThis fix adds the missing cases.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "464d1a78fbf8cf6c7fd970e7b3e2db50a320ce28",
      "tree": "536d8a92976e675b484b35dec88d40c97fab8ac8",
      "parents": [
        "54413927f022292aeccadd268fbf1c0b42129945"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Tue Feb 13 13:26:20 2007 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Tue Feb 13 13:26:20 2007 +0100"
      },
      "message": "[PATCH] i386: Convert i386 PDA code to use %fs\n\nConvert the PDA code to use %fs rather than %gs as the segment for\nper-processor data.  This is because some processors show a small but\nmeasurable performance gain for reloading a NULL segment selector (as %fs\ngenerally is in user-space) versus a non-NULL one (as %gs generally is).\n\nOn modern processors the difference is very small, perhaps undetectable.\nSome old AMD \"K6 3D+\" processors are noticably slower when %fs is used\nrather than %gs; I have no idea why this might be, but I think they\u0027re\nsufficiently rare that it doesn\u0027t matter much.\n\nThis patch also fixes the math emulator, which had not been adjusted to\nmatch the changed struct pt_regs.\n\n[frederik.deweerdt@gmail.com: fixit with gdb]\n[mingo@elte.hu: Fix KVM too]\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Ian Campbell \u003cIan.Campbell@XenSource.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Zachary Amsden \u003czach@vmware.com\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Frederik Deweerdt \u003cfrederik.deweerdt@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\n"
    }
  ],
  "next": "59ae6c6b87711ceb2d1ea5f9e08bb13aee947a29"
}
