)]}'
{
  "log": [
    {
      "commit": "0afe2db21394820d32646a695eccf3fbfe6ab5c7",
      "tree": "6d925383f444a242ebc77d167420efb7e6ad8d99",
      "parents": [
        "d84705969f898f294bc3fc32eca33580f14105bd",
        "43603c8df97f246e8be7b9cc92a8f968a85108bd"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Oct 11 20:23:20 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Oct 11 20:23:20 2008 +0200"
      },
      "message": "Merge branch \u0027x86/unify-cpu-detect\u0027 into x86-v28-for-linus-phase4-D\n\nConflicts:\n\tarch/x86/kernel/cpu/common.c\n\tarch/x86/kernel/signal_64.c\n\tinclude/asm-x86/cpufeature.h\n"
    },
    {
      "commit": "534e38b447df47f129a6d3ec3af6705c1e3f651e",
      "tree": "27f6ffda36c37d3fc96418e6e40239426f8bce74",
      "parents": [
        "e5eab0cede4b1ffaca4ad857d840127622038e55"
      ],
      "author": {
        "name": "Sheng Yang",
        "email": "sheng.yang@intel.com",
        "time": "Mon Sep 08 15:12:30 2008 +0800"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Sep 11 11:48:19 2008 +0300"
      },
      "message": "KVM: VMX: Always return old for clear_flush_young() when using EPT\n\nAs well as discard fake accessed bit and dirty bit of EPT.\n\nSigned-off-by: Sheng Yang \u003csheng.yang@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "e5eab0cede4b1ffaca4ad857d840127622038e55",
      "tree": "1471ba4a46298778271f1440b14a5f4e795bc291",
      "parents": [
        "44874f84918e37b64bec6df1587e5fe2fdf6ab62"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Tue Sep 09 19:11:51 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Sep 11 11:39:25 2008 +0300"
      },
      "message": "KVM: SVM: fix guest global tlb flushes with NPT\n\nAccesses to CR4 are intercepted even with Nested Paging enabled. But the code\ndoes not check if the guest wants to do a global TLB flush. So this flush gets\nlost. This patch adds the check and the flush to svm_set_cr4.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "44874f84918e37b64bec6df1587e5fe2fdf6ab62",
      "tree": "8fc95bb2358322ddd9307d231849d7c0a064b001",
      "parents": [
        "adee14b2e1557d0a8559f29681732d05a89dfc35"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Wed Aug 27 14:18:43 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Sep 11 11:31:53 2008 +0300"
      },
      "message": "KVM: SVM: fix random segfaults with NPT enabled\n\nThis patch introduces a guest TLB flush on every NPF exit in KVM. This fixes\nrandom segfaults and #UD exceptions in the guest seen under some workloads\n(e.g. long running compile workloads or tbench). A kernbench run with and\nwithout that fix showed that it has a slowdown lower than 0.5%\n\nCc: stable@kernel.org\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Alexander Graf \u003cagraf@suse.de\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "315a6558f30a264c88274fa70626615d1c7851c7",
      "tree": "39849101166813a27a837b20776bb5b31681d7ef",
      "parents": [
        "59c37bf8924c30fbac7ebb66a1d92dcb9f05f6b1"
      ],
      "author": {
        "name": "Sheng Yang",
        "email": "sheng.yang@intel.com",
        "time": "Tue Sep 09 14:54:53 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Sep 10 14:00:55 2008 +0200"
      },
      "message": "x86: move VMX MSRs to msr-index.h\n\nThey are hardware specific MSRs, and we would use them in virtualization\nfeature detection later.\n\nSigned-off-by: Sheng Yang \u003csheng.yang@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cd5998ebfbc9e6cb44408efa217c15d7eea13675",
      "tree": "d0ec4fa1d772c385ea71a1d5a5aa0646710ca3f7",
      "parents": [
        "18b13e5457041429af3974afd52f647c3a5465dd"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Aug 22 19:19:38 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon Aug 25 17:24:27 2008 +0300"
      },
      "message": "KVM: MMU: Fix torn shadow pte\n\nThe shadow code assigns a pte directly in one place, which is nonatomic on\ni386 can can cause random memory references.  Fix by using an atomic setter.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "ed8486243379ef3e6c61363df915882945c0eaec",
      "tree": "5504b545fc236d192be34a4a68de7b74c64f70e9",
      "parents": [
        "e930bffe95e1e886a1ede80726ea38df5838d067"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jul 29 11:30:57 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jul 29 12:34:02 2008 +0300"
      },
      "message": "KVM: Advertise synchronized mmu support to userspace\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "e930bffe95e1e886a1ede80726ea38df5838d067",
      "tree": "d39227c3de8e7d4a70737c78693f6d7f458066af",
      "parents": [
        "604b38ac0369bd50fcbb33344aa5553c071009f7"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@qumranet.com",
        "time": "Fri Jul 25 16:24:52 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jul 29 12:33:53 2008 +0300"
      },
      "message": "KVM: Synchronize guest physical memory map to host virtual memory map\n\nSynchronize changes to host virtual addresses which are part of\na KVM memory slot to the KVM shadow mmu.  This allows pte operations\nlike swapping, page migration, and madvise() to transparently work\nwith KVM.\n\nSigned-off-by: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "604b38ac0369bd50fcbb33344aa5553c071009f7",
      "tree": "149325ef8ddbeb607a19052bb807383a6aa7a549",
      "parents": [
        "a1708ce8a362c4999f1201237ae7b77c4d13af82"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@qumranet.com",
        "time": "Fri Jul 25 16:32:03 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jul 29 12:33:50 2008 +0300"
      },
      "message": "KVM: Allow browsing memslots with mmu_lock\n\nThis allows reading memslots with only the mmu_lock hold for mmu\nnotifiers that runs in atomic context and with mmu_lock held.\n\nSigned-off-by: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "a1708ce8a362c4999f1201237ae7b77c4d13af82",
      "tree": "d9d98623e18616a3c7eac0f652a57bd888c5cc70",
      "parents": [
        "6e86841d05f371b5b9b86ce76c02aaee83352298"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@qumranet.com",
        "time": "Fri Jul 25 16:26:39 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jul 29 12:33:40 2008 +0300"
      },
      "message": "KVM: Allow reading aliases with mmu_lock\n\nThis allows the mmu notifier code to run unalias_gfn with only the\nmmu_lock held.  Only alias writes need the mmu_lock held. Readers will\neither take the slots_lock in read mode or the mmu_lock.\n\nSigned-off-by: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "cddb8a5c14aa89810b40495d94d3d2a0faee6619",
      "tree": "d0b47b071f7d2dd1d6f9c36084aa8cfcef90d1da",
      "parents": [
        "7906d00cd1f687268f0a3599442d113767795ae6"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@qumranet.com",
        "time": "Mon Jul 28 15:46:29 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:21 2008 -0700"
      },
      "message": "mmu-notifiers: core\n\nWith KVM/GFP/XPMEM there isn\u0027t just the primary CPU MMU pointing to pages.\n There are secondary MMUs (with secondary sptes and secondary tlbs) too.\nsptes in the kvm case are shadow pagetables, but when I say spte in\nmmu-notifier context, I mean \"secondary pte\".  In GRU case there\u0027s no\nactual secondary pte and there\u0027s only a secondary tlb because the GRU\nsecondary MMU has no knowledge about sptes and every secondary tlb miss\nevent in the MMU always generates a page fault that has to be resolved by\nthe CPU (this is not the case of KVM where the a secondary tlb miss will\nwalk sptes in hardware and it will refill the secondary tlb transparently\nto software if the corresponding spte is present).  The same way\nzap_page_range has to invalidate the pte before freeing the page, the spte\n(and secondary tlb) must also be invalidated before any page is freed and\nreused.\n\nCurrently we take a page_count pin on every page mapped by sptes, but that\nmeans the pages can\u0027t be swapped whenever they\u0027re mapped by any spte\nbecause they\u0027re part of the guest working set.  Furthermore a spte unmap\nevent can immediately lead to a page to be freed when the pin is released\n(so requiring the same complex and relatively slow tlb_gather smp safe\nlogic we have in zap_page_range and that can be avoided completely if the\nspte unmap event doesn\u0027t require an unpin of the page previously mapped in\nthe secondary MMU).\n\nThe mmu notifiers allow kvm/GRU/XPMEM to attach to the tsk-\u003emm and know\nwhen the VM is swapping or freeing or doing anything on the primary MMU so\nthat the secondary MMU code can drop sptes before the pages are freed,\navoiding all page pinning and allowing 100% reliable swapping of guest\nphysical address space.  Furthermore it avoids the code that teardown the\nmappings of the secondary MMU, to implement a logic like tlb_gather in\nzap_page_range that would require many IPI to flush other cpu tlbs, for\neach fixed number of spte unmapped.\n\nTo make an example: if what happens on the primary MMU is a protection\ndowngrade (from writeable to wrprotect) the secondary MMU mappings will be\ninvalidated, and the next secondary-mmu-page-fault will call\nget_user_pages and trigger a do_wp_page through get_user_pages if it\ncalled get_user_pages with write\u003d1, and it\u0027ll re-establishing an updated\nspte or secondary-tlb-mapping on the copied page.  Or it will setup a\nreadonly spte or readonly tlb mapping if it\u0027s a guest-read, if it calls\nget_user_pages with write\u003d0.  This is just an example.\n\nThis allows to map any page pointed by any pte (and in turn visible in the\nprimary CPU MMU), into a secondary MMU (be it a pure tlb like GRU, or an\nfull MMU with both sptes and secondary-tlb like the shadow-pagetable layer\nwith kvm), or a remote DMA in software like XPMEM (hence needing of\nschedule in XPMEM code to send the invalidate to the remote node, while no\nneed to schedule in kvm/gru as it\u0027s an immediate event like invalidating\nprimary-mmu pte).\n\nAt least for KVM without this patch it\u0027s impossible to swap guests\nreliably.  And having this feature and removing the page pin allows\nseveral other optimizations that simplify life considerably.\n\nDependencies:\n\n1) mm_take_all_locks() to register the mmu notifier when the whole VM\n   isn\u0027t doing anything with \"mm\".  This allows mmu notifier users to keep\n   track if the VM is in the middle of the invalidate_range_begin/end\n   critical section with an atomic counter incraese in range_begin and\n   decreased in range_end.  No secondary MMU page fault is allowed to map\n   any spte or secondary tlb reference, while the VM is in the middle of\n   range_begin/end as any page returned by get_user_pages in that critical\n   section could later immediately be freed without any further\n   -\u003einvalidate_page notification (invalidate_range_begin/end works on\n   ranges and -\u003einvalidate_page isn\u0027t called immediately before freeing\n   the page).  To stop all page freeing and pagetable overwrites the\n   mmap_sem must be taken in write mode and all other anon_vma/i_mmap\n   locks must be taken too.\n\n2) It\u0027d be a waste to add branches in the VM if nobody could possibly\n   run KVM/GRU/XPMEM on the kernel, so mmu notifiers will only enabled if\n   CONFIG_KVM\u003dm/y.  In the current kernel kvm won\u0027t yet take advantage of\n   mmu notifiers, but this already allows to compile a KVM external module\n   against a kernel with mmu notifiers enabled and from the next pull from\n   kvm.git we\u0027ll start using them.  And GRU/XPMEM will also be able to\n   continue the development by enabling KVM\u003dm in their config, until they\n   submit all GRU/XPMEM GPLv2 code to the mainline kernel.  Then they can\n   also enable MMU_NOTIFIERS in the same way KVM does it (even if KVM\u003dn).\n   This guarantees nobody selects MMU_NOTIFIER\u003dy if KVM and GRU and XPMEM\n   are all \u003dn.\n\nThe mmu_notifier_register call can fail because mm_take_all_locks may be\ninterrupted by a signal and return -EINTR.  Because mmu_notifier_reigster\nis used when a driver startup, a failure can be gracefully handled.  Here\nan example of the change applied to kvm to register the mmu notifiers.\nUsually when a driver startups other allocations are required anyway and\n-ENOMEM failure paths exists already.\n\n struct  kvm *kvm_arch_create_vm(void)\n {\n        struct kvm *kvm \u003d kzalloc(sizeof(struct kvm), GFP_KERNEL);\n+       int err;\n\n        if (!kvm)\n                return ERR_PTR(-ENOMEM);\n\n        INIT_LIST_HEAD(\u0026kvm-\u003earch.active_mmu_pages);\n\n+       kvm-\u003earch.mmu_notifier.ops \u003d \u0026kvm_mmu_notifier_ops;\n+       err \u003d mmu_notifier_register(\u0026kvm-\u003earch.mmu_notifier, current-\u003emm);\n+       if (err) {\n+               kfree(kvm);\n+               return ERR_PTR(err);\n+       }\n+\n        return kvm;\n }\n\nmmu_notifier_unregister returns void and it\u0027s reliable.\n\nThe patch also adds a few needed but missing includes that would prevent\nkernel to compile after these changes on non-x86 archs (x86 didn\u0027t need\nthem by luck).\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix mm/filemap_xip.c build]\n[akpm@linux-foundation.org: fix mm/mmu_notifier.c build]\nSigned-off-by: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Kanoj Sarcar \u003ckanojsarcar@yahoo.com\u003e\nCc: Roland Dreier \u003crdreier@cisco.com\u003e\nCc: Steve Wise \u003cswise@opengridcomputing.com\u003e\nCc: Avi Kivity \u003cavi@qumranet.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nCc: Chris Wright \u003cchrisw@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmarcelo@kvack.org\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Izik Eidus \u003cizike@qumranet.com\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5fdbcb9dd16f1e89ead127d3ee1a38e3a00cf1ea",
      "tree": "65db37eb2a83a60148c420f76a5b0e2c53b66e38",
      "parents": [
        "5ec5726a16245138f5d5305b00a752acb5730076"
      ],
      "author": {
        "name": "Sheng Yang",
        "email": "sheng.yang@intel.com",
        "time": "Wed Jul 16 09:25:40 2008 +0800"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 27 11:34:10 2008 +0300"
      },
      "message": "KVM: VMX: Fix undefined beaviour of EPT after reload kvm-intel.ko\n\nAs well as move set base/mask ptes to vmx_init().\n\nSigned-off-by: Sheng Yang \u003csheng.yang@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "5ec5726a16245138f5d5305b00a752acb5730076",
      "tree": "6b515b5b9940536b4cb3197b2dd4b498271e96fb",
      "parents": [
        "c93cd3a58845012df2d658fecd0ac99f7008d753"
      ],
      "author": {
        "name": "Sheng Yang",
        "email": "sheng.yang@intel.com",
        "time": "Wed Jul 16 09:21:22 2008 +0800"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 27 11:34:10 2008 +0300"
      },
      "message": "KVM: VMX: Fix bypass_guest_pf enabling when disable EPT in module parameter\n\nSigned-off-by: Sheng Yang \u003csheng.yang@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "c93cd3a58845012df2d658fecd0ac99f7008d753",
      "tree": "420d979c7f9b9621574fef1f94de0bc76d8e59e1",
      "parents": [
        "577bdc496614ced56d999bbb425e85adf2386490"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Sat Jul 19 19:08:07 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 27 11:34:10 2008 +0300"
      },
      "message": "KVM: task switch: translate guest segment limit to virt-extension byte granular field\n\nIf \u0027g\u0027 is one then limit is 4kb granular.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "577bdc496614ced56d999bbb425e85adf2386490",
      "tree": "d4fea399ef6321075ec066963be2d37f961785a6",
      "parents": [
        "34198bf8426276a2ce1e97056a0f02d43637e5ae"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sat Jul 19 08:57:05 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 27 11:34:10 2008 +0300"
      },
      "message": "KVM: Avoid instruction emulation when event delivery is pending\n\nWhen an event (such as an interrupt) is injected, and the stack is\nshadowed (and therefore write protected), the guest will exit.  The\ncurrent code will see that the stack is shadowed and emulate a few\ninstructions, each time postponing the injection.  Eventually the\ninjection may succeed, but at that time the guest may be unwilling\nto accept the interrupt (for example, the TPR may have changed).\n\nThis occurs every once in a while during a Windows 2008 boot.\n\nFix by unshadowing the fault address if the fault was due to an event\ninjection.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "34198bf8426276a2ce1e97056a0f02d43637e5ae",
      "tree": "2f116fe9d97f602359f45a55832cb6621d451b76",
      "parents": [
        "98899aa0e0bf5de05850082be0eb837058c09ea5"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Wed Jul 16 19:07:11 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 27 11:34:09 2008 +0300"
      },
      "message": "KVM: task switch: use seg regs provided by subarch instead of reading from GDT\n\nThere is no guarantee that the old TSS descriptor in the GDT contains\nthe proper base address. This is the case for Windows installation\u0027s\nreboot-via-triplefault.\n\nUse guest registers instead. Also translate the address properly.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "98899aa0e0bf5de05850082be0eb837058c09ea5",
      "tree": "9e38ae09572b56749c868746fd306dbe6778f3cc",
      "parents": [
        "5f4cb662a0a2533b45656607471571460310a5ca"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Wed Jul 16 19:07:10 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 27 11:34:09 2008 +0300"
      },
      "message": "KVM: task switch: segment base is linear address\n\nThe segment base is always a linear address, so translate before\naccessing guest memory.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "5f4cb662a0a2533b45656607471571460310a5ca",
      "tree": "19f3f431f75f7103a1b98e1eea56978712399c6b",
      "parents": [
        "8be1a6d6c77ab4532e4476fdb8177030ef48b52c"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Mon Jul 14 20:36:36 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 27 11:34:09 2008 +0300"
      },
      "message": "KVM: SVM: allow enabling/disabling NPT by reloading only the architecture module\n\nIf NPT is enabled after loading both KVM modules on AMD and it should be\ndisabled, both KVM modules must be reloaded. If only the architecture module is\nreloaded the behavior is undefined. With this patch it is possible to disable\nNPT only by reloading the kvm_amd module.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "722c05f2192070bac0208b2c16ce13929b32d92f",
      "tree": "918037277cd65ec4abc1a9b5b15dcf0b8bb8fe25",
      "parents": [
        "2a7c5b8b550b1fb1db9eb490420132e637f5dcb4"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 13 11:33:54 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:40 2008 +0300"
      },
      "message": "KVM: MMU: Fix potential race setting upper shadow ptes on nonpae hosts\n\nThe direct mapped shadow code (used for real mode and two dimensional paging)\nsets upper-level ptes using direct assignment rather than calling\nset_shadow_pte().  A nonpae host will split this into two writes, which opens\nup a race if another vcpu accesses the same memory area.\n\nFix by calling set_shadow_pte() instead of assigning directly.\n\nNoticed by Izik Eidus.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "2a7c5b8b550b1fb1db9eb490420132e637f5dcb4",
      "tree": "49ee4d514e9af781bec31ff8f07f9d8a5687a6b6",
      "parents": [
        "376c53c2b30d4a1955240f59f4ecd959aa118f92"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "gcosta@redhat.com",
        "time": "Thu Jul 10 17:08:15 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:40 2008 +0300"
      },
      "message": "KVM: x86 emulator: emulate clflush\n\nIf the guest issues a clflush in a mmio address, the instruction\ncan trap into the hypervisor. Currently, we do not decode clflush\nproperly, causing the guest to hang. This patch fixes this emulating\nclflush (opcode 0f ae).\n\nSigned-off-by: Glauber Costa \u003cgcosta@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "376c53c2b30d4a1955240f59f4ecd959aa118f92",
      "tree": "a4d7e1f1d26f30ba717d7331ec8e85c0faa4add3",
      "parents": [
        "34d4cb8fca1f2a31be152b74797e6cd160ec9de6"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Thu Jul 10 20:54:29 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:40 2008 +0300"
      },
      "message": "KVM: MMU: improve invalid shadow root page handling\n\nHarden kvm_mmu_zap_page() against invalid root pages that\nhad been shadowed from memslots that are gone.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "34d4cb8fca1f2a31be152b74797e6cd160ec9de6",
      "tree": "1e8f2c3c4feb54763fd0d8b27ef83ba546215069",
      "parents": [
        "d6e88aec07aa8f6c7e4024f5734ec659fd7c5a40"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Thu Jul 10 20:49:31 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:40 2008 +0300"
      },
      "message": "KVM: MMU: nuke shadowed pgtable pages and ptes on memslot destruction\n\nFlush the shadow mmu before removing regions to avoid stale entries.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "d6e88aec07aa8f6c7e4024f5734ec659fd7c5a40",
      "tree": "2f20376a678d720d2be4e5feab3f4049e0477a73",
      "parents": [
        "c65bbfa1d693d375da51f9c8aa9fb26f09fa19ed"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Jul 10 16:53:33 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:39 2008 +0300"
      },
      "message": "KVM: Prefix some x86 low level function with kvm_, to avoid namespace issues\n\nFixes compilation with CONFIG_VMI enabled.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "c65bbfa1d693d375da51f9c8aa9fb26f09fa19ed",
      "tree": "9046a4a8d38b2dc33ca45c975ce52d34ecde1cd0",
      "parents": [
        "19fdfa0d133ae216e9d1c69a8333fe63fcf8e584"
      ],
      "author": {
        "name": "Ben-Ami Yassour",
        "email": "benami@il.ibm.com",
        "time": "Sun Jul 06 17:15:07 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:39 2008 +0300"
      },
      "message": "KVM: check injected pic irq within valid pic irqs\n\nCheck that an injected pic irq is between 0 and 15.\n\nSigned-off-by: Ben-Ami Yassour \u003cbenami@il.ibm.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "19fdfa0d133ae216e9d1c69a8333fe63fcf8e584",
      "tree": "57264290c1b85a6b44e6d15814236f2c32051aed",
      "parents": [
        "ac9f6dc0db0b5582ebf8bb720d7c41c3d2159013"
      ],
      "author": {
        "name": "Mohammed Gamal",
        "email": "m.gamal005@gmail.com",
        "time": "Sun Jul 06 16:51:26 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:38 2008 +0300"
      },
      "message": "KVM: x86 emulator: Fix HLT instruction\n\nThis patch fixes issue encountered with HLT instruction\nunder FreeDOS\u0027s HIMEM XMS Driver.\n\nThe HLT instruction jumped directly to the done label and\nskips updating the EIP value, therefore causing the guest\nto spin endlessly on the same instruction.\n\nThe patch changes the instruction so that it writes back\nthe updated EIP value.\n\nSigned-off-by: Mohammed Gamal \u003cm.gamal005@gmail.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "ac9f6dc0db0b5582ebf8bb720d7c41c3d2159013",
      "tree": "74dc0ada1c80c45feb4f7104613826726aebdfc6",
      "parents": [
        "4e1096d27f3d095735c1c69c7b0a26a06a0d454e"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 06 15:48:31 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:38 2008 +0300"
      },
      "message": "KVM: Apply the kernel sigmask to vcpus blocked due to being uninitialized\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "4e1096d27f3d095735c1c69c7b0a26a06a0d454e",
      "tree": "a729673f80d22b49f145cee1a9d1cbbc3ec0f459",
      "parents": [
        "5a4c92880493945678315a6df810f7a21f55b985"
      ],
      "author": {
        "name": "Sheng Yang",
        "email": "sheng.yang@intel.com",
        "time": "Sun Jul 06 19:16:51 2008 +0800"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:38 2008 +0300"
      },
      "message": "KVM: VMX: Add ept_sync_context in flush_tlb\n\nFix a potention issue caused by kvm_mmu_slot_remove_write_access(). The\nold behavior don\u0027t sync EPT TLB with modified EPT entry, which result\nin inconsistent content of EPT TLB and EPT table.\n\nSigned-off-by: Sheng Yang \u003csheng.yang@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "5a4c92880493945678315a6df810f7a21f55b985",
      "tree": "2a03286d5f9ea2e6f9426bbf153d3044122105e6",
      "parents": [
        "7e37c2998a5a0b00134f6227167694b710f57ac0"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Thu Jul 03 18:33:02 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:38 2008 +0300"
      },
      "message": "KVM: mmu_shrink: kvm_mmu_zap_page requires slots_lock to be held\n\nkvm_mmu_zap_page() needs slots lock held (rmap_remove-\u003egfn_to_memslot,\nfor example).\n\nSince kvm_lock spinlock is held in mmu_shrink(), do a non-blocking\ndown_read_trylock().\n\nUntested.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "0da1db75a2feca54564add30828bab658982481c",
      "tree": "7b4a148573e0e6df60682124b26de5d71af0fad3",
      "parents": [
        "180c12fb22bd17c7187ae1bce023d24a42b2980c"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Wed Jul 02 16:02:11 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:37 2008 +0300"
      },
      "message": "KVM: SVM: fix suspend/resume support\n\nOn suspend the svm_hardware_disable function is called which frees all svm_data\nvariables. On resume they are not re-allocated. This patch removes the\ndeallocation of svm_data from the hardware_disable function to the\nhardware_unsetup function which is not called on suspend.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "f8b78fa3d406f3a2dc038e2b47749013a9295994",
      "tree": "b46e062f5e9b527983ea2c4446e5d3ecc5d023fa",
      "parents": [
        "efa67e0d1f51842393606034051d805ab9948abd"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Mon Jun 23 12:04:25 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:36 2008 +0300"
      },
      "message": "KVM: move slots_lock acquision down to vapic_exit\n\nThere is no need to grab slots_lock if the vapic_page will not\nbe touched.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "efa67e0d1f51842393606034051d805ab9948abd",
      "tree": "9808aec9287308eef34ecce2a5a179cae776755d",
      "parents": [
        "65267ea1b3e768dc54b63cd7fad520d89c27d350"
      ],
      "author": {
        "name": "Chris Lalancette",
        "email": "clalance@redhat.com",
        "time": "Fri Jun 20 09:51:30 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:36 2008 +0300"
      },
      "message": "KVM: VMX: Fake emulate Intel perfctr MSRs\n\nOlder linux guests (in this case, 2.6.9) can attempt to\naccess the performance counter MSRs without a fixup section, and injecting\na GPF kills the guest.  Work around by allowing the guest to write those MSRs.\n\nTested by me on RHEL-4 i386 and x86_64 guests, as well as F-9 guests.\n\nSigned-off-by: Chris Lalancette \u003cclalance@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "65267ea1b3e768dc54b63cd7fad520d89c27d350",
      "tree": "403dd76e60a43dd93a3467e4e6c50f40196d1590",
      "parents": [
        "db475c39eca0f2e44953d96e768d7ce808ab85bd"
      ],
      "author": {
        "name": "Sheng Yang",
        "email": "sheng.yang@intel.com",
        "time": "Wed Jun 18 14:43:38 2008 +0800"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:36 2008 +0300"
      },
      "message": "KVM: VMX: Fix a wrong usage of vmcs_config\n\nThe function ept_update_paging_mode_cr0() write to\nCPU_BASED_VM_EXEC_CONTROL based on vmcs_config.cpu_based_exec_ctrl. That\u0027s\nwrong because the variable may not consistent with the content in the\nCPU_BASE_VM_EXEC_CONTROL MSR.\n\nSigned-off-by: Sheng Yang \u003csheng.yang@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "db475c39eca0f2e44953d96e768d7ce808ab85bd",
      "tree": "d471be650198869cdfbe99dd0b571e5b3b6f29ed",
      "parents": [
        "6ada8cca79cb971f5da7d1756f4f9292e3ef1e03"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jun 22 16:46:22 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:35 2008 +0300"
      },
      "message": "KVM: MMU: Fix printk format\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "6ada8cca79cb971f5da7d1756f4f9292e3ef1e03",
      "tree": "2bc5eedd2a0a10327be2f0e32d6d3d04fc2362ef",
      "parents": [
        "7a5b56dfd3a682a51fc84682290d5147872a8e99"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jun 22 16:45:24 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:35 2008 +0300"
      },
      "message": "KVM: MMU: When debug is enabled, make it a run-time parameter\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "7a5b56dfd3a682a51fc84682290d5147872a8e99",
      "tree": "f7b6f0e746df3c43ab8317d1c4b585334808e5fb",
      "parents": [
        "0adc8675d645940139d12477e5e05b8a0a7a1117"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jun 22 16:22:51 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:35 2008 +0300"
      },
      "message": "KVM: x86 emulator: lazily evaluate segment registers\n\nInstead of prefetching all segment bases before emulation, read them at the\nlast moment.  Since most of them are unneeded, we save some cycles on\nIntel machines where this is a bit expensive.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "0adc8675d645940139d12477e5e05b8a0a7a1117",
      "tree": "87605d1c7b12da3fb6caf2fd96ae82f863c09883",
      "parents": [
        "f5b4edcd52e78556800f90d08bfc9126416ac82f"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jun 15 22:45:54 2008 -0700"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:34 2008 +0300"
      },
      "message": "KVM: x86 emulator: avoid segment base adjust for lea\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "f5b4edcd52e78556800f90d08bfc9126416ac82f",
      "tree": "5c40b9781cf18d66c9e71b837ffc3eaddac48ddb",
      "parents": [
        "84411d85dacdb6665578608c6a70fc8b819761a8"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jun 15 22:09:11 2008 -0700"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:34 2008 +0300"
      },
      "message": "KVM: x86 emulator: simplify rip relative decoding\n\nrip relative decoding is relative to the instruction pointer of the next\ninstruction; by moving address adjustment until after decoding is complete,\nwe remove the need to determine the instruction size.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "84411d85dacdb6665578608c6a70fc8b819761a8",
      "tree": "9adcee7b8938b47f57fb964adb7d3939245f44fd",
      "parents": [
        "dc71d0f1620790ec8e54101ca37e7b31e31208a8"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jun 15 21:53:26 2008 -0700"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:33 2008 +0300"
      },
      "message": "KVM: x86 emulator: simplify r/m decoding\n\nConsolidate the duplicated code when not in any special case.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "dc71d0f1620790ec8e54101ca37e7b31e31208a8",
      "tree": "75016ef3339ea6e82e2aaaee99d17e1ffeb64696",
      "parents": [
        "8684c0af0b2bab770c257e2a04e1546eed35fa56"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jun 15 21:23:17 2008 -0700"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:33 2008 +0300"
      },
      "message": "KVM: x86 emulator: simplify sib decoding\n\nInstead of using sparse switches, use simpler if/else sequences.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "8684c0af0b2bab770c257e2a04e1546eed35fa56",
      "tree": "ce11e5f74ed45db49aeeee616f856f1059206c8f",
      "parents": [
        "b13354f8f092884fa8d79472404de4907b25d579"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jun 15 21:13:41 2008 -0700"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:33 2008 +0300"
      },
      "message": "KVM: x86 emulator: handle undecoded rex.b with r/m \u003d 5 in certain cases\n\nx86_64 does not decode rex.b in certain cases, where the r/m field \u003d 5.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "b13354f8f092884fa8d79472404de4907b25d579",
      "tree": "bb3f5443ffcf98c8493a99bbbbc67c784bcc5901",
      "parents": [
        "f76c710d759250a43976bcfcab6af6ebb94b7dc2"
      ],
      "author": {
        "name": "Mohammed Gamal",
        "email": "m.gamal005@gmail.com",
        "time": "Sun Jun 15 19:37:38 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:33 2008 +0300"
      },
      "message": "KVM: x86 emulator: emulate nop and xchg reg, acc (opcodes 0x90 - 0x97)\n\nSigned-off-by: Mohammed Gamal \u003cm.gamal005@gmail.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "f76c710d759250a43976bcfcab6af6ebb94b7dc2",
      "tree": "d8df56dbf32ddf547531b5c01ea2102a8d9c0030",
      "parents": [
        "9ef621d3be56e1188300476a8102ff54f7b6793f"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jun 13 22:45:42 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:32 2008 +0300"
      },
      "message": "KVM: Use printk_rlimit() instead of reporting emulation failures just once\n\nEmulation failure reports are useful, so allow more than one per the lifetime\nof the module.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "25be46080f1a446cb2bda3daadbd22a5682b955e",
      "tree": "d736f1c5982d4eefa5da40dac5d8e8074dfa0a76",
      "parents": [
        "622395a9e63bf87a16faecf555ed02375cbae5b7"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "gcosta@redhat.com",
        "time": "Tue Jun 10 10:46:53 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:32 2008 +0300"
      },
      "message": "KVM: Do not calculate linear rip in emulation failure report\n\nIf we\u0027re not gonna do anything (case in which failure is already\nreported), we do not need to even bother with calculating the linear rip.\n\nSigned-off-by: Glauber Costa \u003cgcosta@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "622395a9e63bf87a16faecf555ed02375cbae5b7",
      "tree": "c4a8082660a4e4bf8f687a33921d292ae35f6394",
      "parents": [
        "7f39f8ac177db258200053074aa7a3d98656b1cf"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Wed Jun 11 19:52:53 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:32 2008 +0300"
      },
      "message": "KVM: only abort guest entry if timer count goes from 0-\u003e1\n\nOnly abort guest entry if the timer count went from 0-\u003e1, since for 1-\u003e2\nor larger the bit will either be set already or a timer irq will have\nbeen injected.\n\nUsing atomic_inc_and_test() for it also introduces an SMP barrier\nto the LAPIC version (thought it was unecessary because of timer\nmigration, but guest can be scheduled to a different pCPU between exit\nand kvm_vcpu_block(), so there is the possibility for a race).\n\nNoticed by Avi.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "542472b53ea9e0add0ba23976018210191d84754",
      "tree": "8de46a03065f2fdf33485138f954a246e974070c",
      "parents": [
        "5f94c1741bdc7a336553122036e8a779e616ccbf"
      ],
      "author": {
        "name": "Laurent Vivier",
        "email": "Laurent.Vivier@bull.net",
        "time": "Fri May 30 16:05:55 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:31 2008 +0300"
      },
      "message": "KVM: Add coalesced MMIO support (x86 part)\n\nThis patch enables coalesced MMIO for x86 architecture.\nIt defines KVM_MMIO_PAGE_OFFSET and KVM_CAP_COALESCED_MMIO.\nIt enables the compilation of coalesced_mmio.c.\n\nSigned-off-by: Laurent Vivier \u003cLaurent.Vivier@bull.net\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "92760499d01ef91518119908eb9b8798b6c9bd3f",
      "tree": "a6bd80fbad82589eb5aa98f81edda4537bc1f625",
      "parents": [
        "131d82791b628d4aeafd94ddc74a9b68f3d15a83"
      ],
      "author": {
        "name": "Laurent Vivier",
        "email": "Laurent.Vivier@bull.net",
        "time": "Fri May 30 16:05:53 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:30 2008 +0300"
      },
      "message": "KVM: kvm_io_device: extend in_range() to manage len and write attribute\n\nModify member in_range() of structure kvm_io_device to pass length and the type\nof the I/O (write or read).\n\nThis modification allows to use kvm_io_device with coalesced MMIO.\n\nSigned-off-by: Laurent Vivier \u003cLaurent.Vivier@bull.net\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "131d82791b628d4aeafd94ddc74a9b68f3d15a83",
      "tree": "edee39aaef0af651a6b5799fe71a81e180701320",
      "parents": [
        "d761a501cf9cd4fa08ff35d252ff08b8c31ce677"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 29 14:56:28 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:30 2008 +0300"
      },
      "message": "KVM: MMU: Avoid page prefetch on SVM\n\nSVM cannot benefit from page prefetching since guest page fault bypass\ncannot by made to work there.  Avoid accessing the guest page table in\nthis case.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "d761a501cf9cd4fa08ff35d252ff08b8c31ce677",
      "tree": "d146ce434a058d1c556253af6049599dcc4681d5",
      "parents": [
        "91ed7a0e15c6f6ff57f5cf70feabdba56a999863"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 29 14:55:03 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:30 2008 +0300"
      },
      "message": "KVM: MMU: Move nonpaging_prefetch_page()\n\nIn preparation for next patch. No code change.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "91ed7a0e15c6f6ff57f5cf70feabdba56a999863",
      "tree": "312ac50ec1ab0ddcf0727fb4af364bd0889f8359",
      "parents": [
        "19e43636b5af1c8b9cc8406af674835284abab0c"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 29 14:38:38 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:29 2008 +0300"
      },
      "message": "KVM: x86 emulator: implement \u0027push imm\u0027 (opcode 0x68)\n\nEncountered in FC6 boot sequence, now that we don\u0027t force ss.rpl \u003d 0 during\nthe protected mode transition.  Not really necessary, but nice to have.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "19e43636b5af1c8b9cc8406af674835284abab0c",
      "tree": "fd5a5e10562f9832c93aac92aaabe6c3110f2f12",
      "parents": [
        "eab9f71feb1851b5b700ca12ae614b6a0a441021"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 29 14:26:29 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:29 2008 +0300"
      },
      "message": "KVM: x86 emulator: simplify push imm8 emulation\n\nInstead of fetching the data explicitly, use SrcImmByte.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "eab9f71feb1851b5b700ca12ae614b6a0a441021",
      "tree": "9e6f7c60206621ab0f876110e2d57f0f7c8759fb",
      "parents": [
        "38d5bc6d50a4368be08b39b02efb9cbbe1dd60d0"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 29 14:20:16 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:28 2008 +0300"
      },
      "message": "KVM: MMU: Optimize prefetch_page()\n\nInstead of reading each pte individually, read 256 bytes worth of ptes and\nbatch process them.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "38d5bc6d50a4368be08b39b02efb9cbbe1dd60d0",
      "tree": "96298c26d72f0a34ea6a370ff8af896eaf504315",
      "parents": [
        "4257198ae2c36e030a0947fef661c8de973778be"
      ],
      "author": {
        "name": "Guillaume Thouvenin",
        "email": "guillaume.thouvenin@ext.bull.net",
        "time": "Tue May 27 15:13:28 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:28 2008 +0300"
      },
      "message": "KVM: x86 emulator: Add support for mov r, sreg (0x8c) instruction\n\nAdd support for mov r, sreg (0x8c) instruction\n\nSigned-off-by: Guillaume Thouvenin \u003cguillaume.thouvenin@ext.bull.net\u003e\nSigned-off-by: Laurent Vivier \u003claurent.vivier@bull.net\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "4257198ae2c36e030a0947fef661c8de973778be",
      "tree": "a1091af43a2d3e39b7f8597369ba5b7a68b7fd83",
      "parents": [
        "615ac125618dc7b40ecb418e8b353d31ccf0e518"
      ],
      "author": {
        "name": "Guillaume Thouvenin",
        "email": "guillaume.thouvenin@ext.bull.net",
        "time": "Tue May 27 14:49:15 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:28 2008 +0300"
      },
      "message": "KVM: x86 emulator: Add support for mov seg, r (0x8e) instruction\n\nAdd support for mov r, sreg (0x8c) instruction.\n\n[avi: drop the sreg decoding table in favor of 1:1 encoding]\n\nSigned-off-by: Guillaume Thouvenin \u003cguillaume.thouvenin@ext.bull.net\u003e\nSigned-off-by: Laurent Vivier \u003claurent.vivier@bull.net\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "615ac125618dc7b40ecb418e8b353d31ccf0e518",
      "tree": "2e6d629c0eaa10264a71095c183b13a35da5f375",
      "parents": [
        "954cd36f7613ac6d084abe33114dd45a8e0dbe92"
      ],
      "author": {
        "name": "Guillaume Thouvenin",
        "email": "guillaume.thouvenin@ext.bull.net",
        "time": "Tue May 27 10:19:16 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:27 2008 +0300"
      },
      "message": "KVM: x86 emulator: adds support to mov r,imm (opcode 0xb8) instruction\n\nAdd support to mov r, imm (0xb8) instruction.\n\nSigned-off-by: Guillaume Thouvenin \u003cguillaume.thouvenin@ext.bull.net\u003e\nSigned-off-by: Laurent Vivier \u003claurent.vivier@bull.net\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "954cd36f7613ac6d084abe33114dd45a8e0dbe92",
      "tree": "85f69477e28d69fb8e2584fd8c8c26275da8194b",
      "parents": [
        "89c696383d6eb493351a89d450d8ad7a55cbe1da"
      ],
      "author": {
        "name": "Guillaume Thouvenin",
        "email": "guillaume.thouvenin@ext.bull.net",
        "time": "Tue May 27 10:19:08 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:27 2008 +0300"
      },
      "message": "KVM: x86 emulator: add support for jmp far 0xea\n\nAdd support for jmp far (opcode 0xea) instruction.\n\nSigned-off-by: Guillaume Thouvenin \u003cguillaume.thouvenin@ext.bull.net\u003e\nSigned-off-by: Laurent Vivier \u003claurent.vivier@bull.net\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "89c696383d6eb493351a89d450d8ad7a55cbe1da",
      "tree": "52ba8d5e28a957e04817acca1d419c3641ffd9db",
      "parents": [
        "3e6e0aab1ba1e8b354ce01f5659336f9aee69437"
      ],
      "author": {
        "name": "Guillaume Thouvenin",
        "email": "guillaume.thouvenin@ext.bull.net",
        "time": "Tue May 27 10:22:20 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:27 2008 +0300"
      },
      "message": "KVM: x86 emulator: Update c-\u003edst.bytes in decode instruction\n\nUpdate c-\u003edst.bytes in decode instruction instead of instruction\nitself.  It\u0027s needed because if c-\u003edst.bytes is equal to 0, the\ninstruction is not emulated.\n\nSigned-off-by: Guillaume Thouvenin \u003cguillaume.thouvenin@ext.bull.net\u003e\nSigned-off-by: Laurent Vivier \u003claurent.vivier@bull.net\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "3e6e0aab1ba1e8b354ce01f5659336f9aee69437",
      "tree": "50b4bae56f8f5672081e23b5595c3a6e45b12973",
      "parents": [
        "9ba075a664dff836fd6fb93f90fcc827f7683d91"
      ],
      "author": {
        "name": "Guillaume Thouvenin",
        "email": "guillaume.thouvenin@ext.bull.net",
        "time": "Tue May 27 10:18:46 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:27 2008 +0300"
      },
      "message": "KVM: Prefixes segment functions that will be exported with \"kvm_\"\n\nPrefixes functions that will be exported with kvm_.\nWe also prefixed set_segment() even if it still static\nto be coherent.\n\nsigned-off-by: Guillaume Thouvenin \u003cguillaume.thouvenin@ext.bull.net\u003e\nSigned-off-by: Laurent Vivier \u003claurent.vivier@bull.net\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "9ba075a664dff836fd6fb93f90fcc827f7683d91",
      "tree": "a5d939aa61833525a09fa2f346964c16a80f7957",
      "parents": [
        "81609e3e26508840a1b51414376f2541dd191483"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon May 26 20:06:35 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:26 2008 +0300"
      },
      "message": "KVM: MTRR support\n\nAdd emulation for the memory type range registers, needed by VMware esx 3.5,\nand by pci device assignment.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "f08864b42a45581a64558aa5b6b673c77b97ee5d",
      "tree": "d104bf34c951beffebb7c2402329f236a7bad7ad",
      "parents": [
        "3419ffc8e45a5344abc87684cbca6cdc5c9c8a01"
      ],
      "author": {
        "name": "Sheng Yang",
        "email": "sheng.yang@intel.com",
        "time": "Thu May 15 18:23:25 2008 +0800"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:26 2008 +0300"
      },
      "message": "KVM: VMX: Enable NMI with in-kernel irqchip\n\nSigned-off-by: Sheng Yang \u003csheng.yang@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "3419ffc8e45a5344abc87684cbca6cdc5c9c8a01",
      "tree": "53d00e67ba8844800d1f73242ce42fad117f0eaf",
      "parents": [
        "50d40d7fb9b09e68a657c68837fcfa067b70cc42"
      ],
      "author": {
        "name": "Sheng Yang",
        "email": "sheng.yang@intel.com",
        "time": "Thu May 15 09:52:48 2008 +0800"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:25 2008 +0300"
      },
      "message": "KVM: IOAPIC/LAPIC: Enable NMI support\n\n[avi: fix ia64 build breakage]\n\nSigned-off-by: Sheng Yang \u003csheng.yang@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "50d40d7fb9b09e68a657c68837fcfa067b70cc42",
      "tree": "9bdd7737be1170ea5443d17e2ec7f075f7200079",
      "parents": [
        "7cc8883074b040aa8c1ebd3a17463b0ea3a9ef16"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun May 25 14:38:15 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:25 2008 +0300"
      },
      "message": "KVM: Remove unnecessary -\u003edecache_regs() call\n\nSince we aren\u0027t modifying any register, there\u0027s no need to decache\nthe register state.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "7cc8883074b040aa8c1ebd3a17463b0ea3a9ef16",
      "tree": "79feae8f0093534317d75f1776bd9f115d62dd91",
      "parents": [
        "543e42436643d68ad007d0bae2f485caac9c8a02"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue May 13 16:29:20 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:25 2008 +0300"
      },
      "message": "KVM: Remove decache_vcpus_on_cpu() and related callbacks\n\nObsoleted by the vmx-specific per-cpu list.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "543e42436643d68ad007d0bae2f485caac9c8a02",
      "tree": "0347cb99587feedb4dfd4520bde416a0bf8ceca9",
      "parents": [
        "4ecac3fd6dc2629ad76a658a486f081c44aef10e"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue May 13 16:22:47 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:42:24 2008 +0300"
      },
      "message": "KVM: VMX: Add list of potentially locally cached vcpus\n\nVMX hardware can cache the contents of a vcpu\u0027s vmcs.  This cache needs\nto be flushed when migrating a vcpu to another cpu, or (which is the case\nthat interests us here) when disabling hardware virtualization on a cpu.\n\nThe current implementation of decaching iterates over the list of all vcpus,\npicks the ones that are potentially cached on the cpu that is being offlined,\nand flushes the cache.  The problem is that it uses mutex_trylock() to gain\nexclusive access to the vcpu, which fires off a (benign) warning about using\nthe mutex in an interrupt context.\n\nTo avoid this, and to make things generally nicer, add a new per-cpu list\nof potentially cached vcus.  This makes the decaching code much simpler.  The\nlist is vmx-specific since other hardware doesn\u0027t have this issue.\n\n[andrea: fix crash on suspend/resume]\n\nSigned-off-by: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "4ecac3fd6dc2629ad76a658a486f081c44aef10e",
      "tree": "a078acb4c626432ac8cf887b911d912f4a316d06",
      "parents": [
        "1b7fcd3263e5f12dba43d27b64e1578bec070c28"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue May 13 13:23:38 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:41:43 2008 +0300"
      },
      "message": "KVM: Handle virtualization instruction #UD faults during reboot\n\nKVM turns off hardware virtualization extensions during reboot, in order\nto disassociate the memory used by the virtualization extensions from the\nprocessor, and in order to have the system in a consistent state.\nUnfortunately virtual machines may still be running while this goes on,\nand once virtualization extensions are turned off, any virtulization\ninstruction will #UD on execution.\n\nFix by adding an exception handler to virtualization instructions; if we get\nan exception during reboot, we simply spin waiting for the reset to complete.\nIf it\u0027s a true exception, BUG() so we can have our stack trace.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "1b7fcd3263e5f12dba43d27b64e1578bec070c28",
      "tree": "7f8d9679404f0b46803c6b1cf926235d170606ee",
      "parents": [
        "7682f2d0dd3ff5bd2756eac018a5b4e7e30ef16c"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu May 15 13:51:35 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:40:50 2008 +0300"
      },
      "message": "KVM: MMU: Fix false flooding when a pte points to page table\n\nThe KVM MMU tries to detect when a speculative pte update is not actually\nused by demand fault, by checking the accessed bit of the shadow pte.  If\nthe shadow pte has not been accessed, we deem that page table flooded and\nremove the shadow page table, allowing further pte updates to proceed\nwithout emulation.\n\nHowever, if the pte itself points at a page table and only used for write\noperations, the accessed bit will never be set since all access will happen\nthrough the emulator.\n\nThis is exactly what happens with kscand on old (2.4.x) HIGHMEM kernels.\nThe kernel points a kmap_atomic() pte at a page table, and then\nproceeds with read-modify-write operations to look at the dirty and accessed\nbits.  We get a false flood trigger on the kmap ptes, which results in the\nmmu spending all its time setting up and tearing down shadows.\n\nFix by setting the shadow accessed bit on emulated accesses.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "7682f2d0dd3ff5bd2756eac018a5b4e7e30ef16c",
      "tree": "dda2bc2ec7def811e71c1d7f92ad28131a7a4c2a",
      "parents": [
        "14ae51b6c068ef7ab52dc2d53fe226e6189f2ab2"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon May 12 19:25:43 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:40:50 2008 +0300"
      },
      "message": "KVM: VMX: Trivial vmcs_write64() code simplification\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "14ae51b6c068ef7ab52dc2d53fe226e6189f2ab2",
      "tree": "1abe5475c427980663865a0231198c7a20afe1dc",
      "parents": [
        "f697554515b06e8d7264f316b25e6da943407142"
      ],
      "author": {
        "name": "Chris Lalancette",
        "email": "clalance@redhat.com",
        "time": "Mon May 05 13:05:16 2008 -0400"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:40:49 2008 +0300"
      },
      "message": "KVM: SVM: Fake MSR_K7 performance counters\n\nAttached is a patch that fixes a guest crash when booting older Linux kernels.\nThe problem stems from the fact that we are currently emulating\nMSR_K7_EVNTSEL[0-3], but not emulating MSR_K7_PERFCTR[0-3].  Because of this,\nsetup_k7_watchdog() in the Linux kernel receives a GPF when it attempts to\nwrite into MSR_K7_PERFCTR, which causes an OOPs.\n\nThe patch fixes it by just \"fake\" emulating the appropriate MSRs, throwing\naway the data in the process.  This causes the NMI watchdog to not actually\nwork, but it\u0027s not such a big deal in a virtualized environment.\n\nWhen we get a write to one of these counters, we printk_ratelimit() a warning.\nI decided to print it out for all writes, even if the data is 0; it doesn\u0027t\nseem to make sense to me to special case when data \u003d\u003d 0.\n\nTested by myself on a RHEL-4 guest, and Joerg Roedel on a Windows XP 64-bit\nguest.\n\nSigned-off-by: Chris Lalancette \u003cclalance@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "f697554515b06e8d7264f316b25e6da943407142",
      "tree": "f15a67cee17245c03f90c6a931b02fb34e687a4c",
      "parents": [
        "2e2e3738af33575cba59597acd5e80cdd5ec11ee"
      ],
      "author": {
        "name": "Aurelien Jarno",
        "email": "aurelien@aurel32.net",
        "time": "Fri May 02 17:02:23 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:40:49 2008 +0300"
      },
      "message": "KVM: PIT: support mode 3\n\nThe in-kernel PIT emulation ignores pending timers if operating\nunder mode 3, which for example Hurd uses.\n\nThis mode should output a square wave, high for (N+1)/2 counts and low\nfor (N-1)/2 counts. As we only care about the resulting interrupts, the\nperiod is N, and mode 3 is the same as mode 2 with regard to\ninterrupts.\n\nSigned-off-by: Aurelien Jarno \u003caurelien@aurel32.net\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "d2ebb4103ff349af6dac14955bf93e57487a6694",
      "tree": "5c205c2e36c4c4334855455336427d676e9535c0",
      "parents": [
        "af9ca2d703f4cefbf6441bfe127c4191092ad394"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Wed Apr 30 17:56:04 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:40:48 2008 +0300"
      },
      "message": "KVM: SVM: add tracing support for TDP page faults\n\nTo distinguish between real page faults and nested page faults they should be\ntraced as different events. This is implemented by this patch.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "af9ca2d703f4cefbf6441bfe127c4191092ad394",
      "tree": "d822a6b64c35e1a94fb04e33cf729c976b9f8912",
      "parents": [
        "54e445ca8411ec892f986d9f8c11b8c1806ecde4"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Wed Apr 30 17:56:03 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:40:48 2008 +0300"
      },
      "message": "KVM: SVM: add missing kvmtrace markers\n\nThis patch adds the missing kvmtrace markers to the svm\nmodule of kvm.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "54e445ca8411ec892f986d9f8c11b8c1806ecde4",
      "tree": "e6fd3aa72296eba31a23977d2c6d82d186a8f4aa",
      "parents": [
        "a069805579a390f0fa91694f6963bcc4b2cecc6b"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Wed Apr 30 17:56:02 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:40:48 2008 +0300"
      },
      "message": "KVM: add missing kvmtrace bits\n\nThis patch adds some kvmtrace bits to the generic x86 code\nwhere it is instrumented from SVM.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "a069805579a390f0fa91694f6963bcc4b2cecc6b",
      "tree": "ad9497386d33930d50ecea7194c7df75f1bb744d",
      "parents": [
        "c47f098d69ed2bd7343e54095ff4aa2533253bee"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Wed Apr 30 17:56:01 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:40:47 2008 +0300"
      },
      "message": "KVM: SVM: implement dedicated INTR exit handler\n\nWith an exit handler for INTR intercepts its possible to account them using\nkvmtrace.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "c47f098d69ed2bd7343e54095ff4aa2533253bee",
      "tree": "e296ddf631b111bad32255581bf3f192e7efb0ba",
      "parents": [
        "c7bf23babc959b186335d2640959a1b8633588de"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Wed Apr 30 17:56:00 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:40:47 2008 +0300"
      },
      "message": "KVM: SVM: implement dedicated NMI exit handler\n\nWith an exit handler for NMI intercepts its possible to account them using\nkvmtrace.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "c7bf23babc959b186335d2640959a1b8633588de",
      "tree": "39516a1fedf1d17504959681617d07ccb921f554",
      "parents": [
        "8b2cf73cc11cf29a21c51c453a3205f23d888915"
      ],
      "author": {
        "name": "Joerg Roedel",
        "email": "joerg.roedel@amd.com",
        "time": "Wed Apr 30 17:55:59 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:40:47 2008 +0300"
      },
      "message": "KVM: VMX: move APIC_ACCESS trace entry to generic code\n\nThis patch moves the trace entry for APIC accesses from the VMX code to the\ngeneric lapic code. This way APIC accesses from SVM will also be traced.\n\nSigned-off-by: Joerg Roedel \u003cjoerg.roedel@amd.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "8b2cf73cc11cf29a21c51c453a3205f23d888915",
      "tree": "554f6ffb9b75b1f049a5c8bb3b8e6cf52d17914e",
      "parents": [
        "1e1c65e03ec817a64153751150f6691db9842acd"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Sun Apr 27 12:14:13 2008 -0700"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun Jul 20 12:40:46 2008 +0300"
      },
      "message": "KVM: add statics were possible, function definition in lapic.h\n\nNoticed by sparse:\narch/x86/kvm/vmx.c:1583:6: warning: symbol \u0027vmx_disable_intercept_for_msr\u0027 was not declared. Should it be static?\narch/x86/kvm/x86.c:3406:5: warning: symbol \u0027kvm_task_switch_16\u0027 was not declared. Should it be static?\narch/x86/kvm/x86.c:3429:5: warning: symbol \u0027kvm_task_switch_32\u0027 was not declared. Should it be static?\narch/x86/kvm/mmu.c:1968:6: warning: symbol \u0027kvm_mmu_remove_one_alloc_mmu_page\u0027 was not declared. Should it be static?\narch/x86/kvm/mmu.c:2014:6: warning: symbol \u0027mmu_destroy_caches\u0027 was not declared. Should it be static?\narch/x86/kvm/lapic.c:862:5: warning: symbol \u0027kvm_lapic_get_base\u0027 was not declared. Should it be static?\narch/x86/kvm/i8254.c:94:5: warning: symbol \u0027pit_get_gate\u0027 was not declared. Should it be static?\narch/x86/kvm/i8254.c:196:5: warning: symbol \u0027__pit_timer_fn\u0027 was not declared. Should it be static?\narch/x86/kvm/i8254.c:561:6: warning: symbol \u0027__inject_pit_timer_intr\u0027 was not declared. Should it be static?\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "15c8b6c1aaaf1c4edd67e2f02e4d8e1bd1a51c0d",
      "tree": "3658f893c2f89ea0be4c6cc08aa11fa54476d0f4",
      "parents": [
        "8691e5a8f691cc2a4fda0651e8d307aaba0e7d68"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 09 09:39:44 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 26 11:24:38 2008 +0200"
      },
      "message": "on_each_cpu(): kill unused \u0027retry\u0027 parameter\n\nIt\u0027s not even passed on to smp_call_function() anymore, since that\nwas removed. So kill it.\n\nAcked-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8691e5a8f691cc2a4fda0651e8d307aaba0e7d68",
      "tree": "6cb6767064d2d43441212566da2d83dcc9a0cd8e",
      "parents": [
        "490f5de52a87063fcb40e3b22f61b0779603ff6d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 06 11:18:06 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 26 11:24:35 2008 +0200"
      },
      "message": "smp_call_function: get rid of the unused nonatomic/retry argument\n\nIt\u0027s never used and the comments refer to nonatomic and retry\ninterchangably. So get rid of it.\n\nAcked-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "50d0a0f987b83a8dadb1134d834e35ec410392b5",
      "tree": "2fb98f898838668ed62092f08c3889ddebb7df62",
      "parents": [
        "1c7b67f7576c4ca2a344379a4a29eec8fe8e7935"
      ],
      "author": {
        "name": "Gerd Hoffmann",
        "email": "kraxel@redhat.com",
        "time": "Tue Jun 03 16:17:31 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jun 24 21:02:32 2008 +0300"
      },
      "message": "KVM: Make kvm host use the paravirt clocksource structs\n\nThis patch updates the kvm host code to use the pvclock structs.\nIt also makes the paravirt clock compatible with Xen.\n\nSigned-off-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "a9b21b622958afc3f3bc5a23d266dd9ed1171fd3",
      "tree": "daed282b0f588f31cb3997a16f2ad067b37fb74d",
      "parents": [
        "4fa6b9c5dc4134bdeac341d731a87783cc11ca10"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jun 24 11:48:49 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jun 24 12:26:17 2008 +0300"
      },
      "message": "KVM: VMX: Fix host msr corruption with preemption enabled\n\nSwitching msrs can occur either synchronously as a result of calls to\nthe msr management functions (usually in response to the guest touching\nvirtualized msrs), or asynchronously when preempting a kvm thread that has\nguest state loaded.  If we\u0027re unlucky enough to have the two at the same\ntime, host msrs are corrupted and the machine goes kaput on the next syscall.\n\nMost easily triggered by Windows Server 2008, as it does a lot of msr\nswitching during bootup.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "6bf6a9532fd03ad719f0c86654f16ef777b78fc6",
      "tree": "4865d4cd48c98c5425218c5d8289367bd16c4105",
      "parents": [
        "3094538739415a9225afd2a6c78cb0fe1c1f641b"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Thu Jun 12 16:54:41 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jun 24 12:20:12 2008 +0300"
      },
      "message": "KVM: MMU: Fix oops on guest userspace access to guest pagetable\n\nKVM has a heuristic to unshadow guest pagetables when userspace accesses\nthem, on the assumption that most guests do not allow userspace to access\npagetables directly. Unfortunately, in addition to unshadowing the pagetables,\nit also oopses.\n\nThis never triggers on ordinary guests since sane OSes will clear the\npagetables before assigning them to userspace, which will trigger the flood\nheuristic, unshadowing the pagetables before the first userspace access. One\nparticular guest, though (Xenner) will run the kernel in userspace, triggering\nthe oops.  Since the heuristic is incorrect in this case, we can simply\nremove it.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "3094538739415a9225afd2a6c78cb0fe1c1f641b",
      "tree": "b6f4b62812fd55ffa60d4383af1e7079e8b29a30",
      "parents": [
        "6597ca09e6c0e5aec7ffd2b8ab48c671d3c28414"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Wed Jun 11 20:32:40 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jun 24 12:18:18 2008 +0300"
      },
      "message": "KVM: MMU: large page update_pte issue with non-PAE 32-bit guests (resend)\n\nkvm_mmu_pte_write() does not handle 32-bit non-PAE large page backed\nguests properly. It will instantiate two 2MB sptes pointing to the same\nphysical 2MB page when a guest large pte update is trapped.\n\nInstead of duplicating code to handle this, disallow directory level\nupdates to happen through kvm_mmu_pte_write(), so the two 2MB sptes\nemulating one guest 4MB pte can be correctly created by the page fault\nhandling path.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "6597ca09e6c0e5aec7ffd2b8ab48c671d3c28414",
      "tree": "9bbe5dab501fa1369ce882a4713ebdd227e09f19",
      "parents": [
        "06e05645661211b9eaadaf6344c335d2e80f0ba2"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Sun Jun 08 01:48:53 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jun 24 12:17:10 2008 +0300"
      },
      "message": "KVM: MMU: Fix rmap_write_protect() hugepage iteration bug\n\nrmap_next() does not work correctly after rmap_remove(), as it expects\nthe rmap chains not to change during iteration.  Fix (for now) by restarting\niteration from the beginning.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "06e05645661211b9eaadaf6344c335d2e80f0ba2",
      "tree": "8846d2a5052aec44141e811c0a76fdb39c2e77ca",
      "parents": [
        "d4acf7e7abe45457e751525a2a4d5b693dfdd597"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Fri Jun 06 16:37:36 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jun 24 12:16:59 2008 +0300"
      },
      "message": "KVM: close timer injection race window in __vcpu_run\n\nIf a timer fires after kvm_inject_pending_timer_irqs() but before\nlocal_irq_disable() the code will enter guest mode and only inject such\ntimer interrupt the next time an unrelated event causes an exit.\n\nIt would be simpler if the timer-\u003epending irq conversion could be done\nwith IRQ\u0027s disabled, so that the above problem cannot happen.\n\nFor now introduce a new vcpu requests bit to cancel guest entry.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "d4acf7e7abe45457e751525a2a4d5b693dfdd597",
      "tree": "2ff1cf6f59b0591ea39c0457705188d5f46cb118",
      "parents": [
        "62786b9e81a2dbe9c073a2ade52d33a2627d6d85"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Fri Jun 06 16:37:35 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue Jun 24 12:16:52 2008 +0300"
      },
      "message": "KVM: Fix race between timer migration and vcpu migration\n\nA guest vcpu instance can be scheduled to a different physical CPU\nbetween the test for KVM_REQ_MIGRATE_TIMER and local_irq_disable().\n\nIf that happens, the timer will only be migrated to the current pCPU on\nthe next exit, meaning that guest LAPIC timer event can be delayed until\na host interrupt is triggered.\n\nFix it by cancelling guest entry if any vcpu request is pending.  This\nhas the side effect of nicely consolidating vcpu-\u003erequests checks.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "3c9155106d589584f67b026ec444e69c4a68d7dc",
      "tree": "110e1ea1534ae619785919b38b484f41c1dcafbe",
      "parents": [
        "ebb0e6264c7a65c51feb3575e9edb58eab0cf469"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue May 20 16:21:13 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jun 06 21:36:33 2008 +0300"
      },
      "message": "KVM: MMU: Fix is_empty_shadow_page() check\n\nThe check is only looking at one of two possible empty ptes.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "ebb0e6264c7a65c51feb3575e9edb58eab0cf469",
      "tree": "a377c2124b596f807ce46edfc7af0710ad989a18",
      "parents": [
        "ff4b9df877b30b8a371d706d3552999dee450738"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Tue May 20 16:21:58 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jun 06 21:36:20 2008 +0300"
      },
      "message": "KVM: MMU: Fix printk() format string\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "8d2d73b9a5c35f2c6abf427afba7888cfc4cc65d",
      "tree": "488c265654adc025012815473a38e61e0c343505",
      "parents": [
        "e693d71b46e64536581bf4884434fc1b8797e96f"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Jun 04 18:42:24 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jun 06 21:32:20 2008 +0300"
      },
      "message": "KVM: MMU: reschedule during shadow teardown\n\nShadows for large guests can take a long time to tear down, so reschedule\noccasionally to avoid softlockup warnings.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "e693d71b46e64536581bf4884434fc1b8797e96f",
      "tree": "39540d2d4dbc5cf36ab459451fdbf45a2e058ac1",
      "parents": [
        "2f5997140f22f68f6390c49941150d3fa8a95cb7"
      ],
      "author": {
        "name": "Eli Collins",
        "email": "ecollins@vmware.com",
        "time": "Sun Jun 01 20:24:40 2008 -0700"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jun 06 21:30:20 2008 +0300"
      },
      "message": "KVM: VMX: Clear CR4.VMXE in hardware_disable\n\nClear CR4.VMXE in hardware_disable. There\u0027s no reason to leave it set\nafter doing a VMXOFF.\n\nVMware Workstation 6.5 checks CR4.VMXE as a proxy for whether the CPU is\nin VMX mode, so leaving VMXE set means we\u0027ll refuse to power on. With this\nchange the user can power on after unloading the kvm-intel module. I\ntested on kvm-67 and kvm-69.\n\nSigned-off-by: Eli Collins \u003cecollins@vmware.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "2f5997140f22f68f6390c49941150d3fa8a95cb7",
      "tree": "790370cfb5ea5cd16a892c3a8b2bb75a2f30b489",
      "parents": [
        "9dcb40e1aa5bfe7d6ffc729f3c2b6c8f1392d2d3"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Tue May 27 12:10:20 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jun 06 21:25:51 2008 +0300"
      },
      "message": "KVM: migrate PIT timer\n\nMigrate the PIT timer to the physical CPU which vcpu0 is scheduled on,\nsimilarly to what is done for the LAPIC timers, otherwise PIT interrupts\nwill be delayed until an unrelated event causes an exit.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "33e3885de25148e00595c4dd808d6eb15db2edcf",
      "tree": "d7bc06e1ff57b59d70b23ee4b175e0ae2f45e708",
      "parents": [
        "f20d2752980c144c82649eb18746ef0c29f508dd"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed May 21 15:34:25 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri Jun 06 21:08:25 2008 +0300"
      },
      "message": "KVM: x86 emulator: fix hypercall return value on AMD\n\nThe hypercall instructions on Intel and AMD are different.  KVM allows the\nguest to choose one or the other (the default is Intel), and if the guest\nchooses incorrectly, KVM will patch it at runtime to select the correct\ninstruction.  This allows live migration between Intel and AMD machines.\n\nThis patching occurs in the x86 emulator.  The current code also executes\nthe hypercall.  Unfortunately, the tail end of the x86 emulator code also\nexecutes, overwriting the return value of the hypercall with the original\ncontents of rax (which happens to be the hypercall number).\n\nFix not by executing the hypercall in the emulator context; instead let the\nguest reissue the patched instruction and execute the hypercall via the\nnormal path.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "2ddfd20e7c55421435cbf95a5ed3dd6e423cf934",
      "tree": "bd873a6318dbdffe059b0c12efc5c5ff228dd2e8",
      "parents": [
        "de067814d6b69030d0030e1c5b3dbaf0385aae41"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 22 10:37:48 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 14:08:06 2008 +0200"
      },
      "message": "namespacecheck: automated fixes\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "54aaacee35afd594bba3244c20b02cc98d80a961",
      "tree": "66488043384eca7851f752bcfdbdec90ef328884",
      "parents": [
        "1fc9d2bf75bbe5482cc503681dae0935df29b6b0"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Wed May 14 02:29:06 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun May 18 14:39:39 2008 +0300"
      },
      "message": "KVM: LAPIC: ignore pending timers if LVTT is disabled\n\nOnly use the APIC pending timers count to break out of HLT emulation if\nthe timer vector is enabled.\n\nCertain configurations of Windows simply mask out the vector without\ndisabling the timer.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "eedaa4e2af681a266c084c410238855bdfbc2787",
      "tree": "f9cb896f19b8b67ad01159bfd48cb1744ba4dd28",
      "parents": [
        "5ca9fd54e3d75489ff9c70d7af6e0b9a390dd656"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Tue May 06 13:32:54 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun May 18 14:34:15 2008 +0300"
      },
      "message": "KVM: PIT: take inject_pending into account when emulating hlt\n\nOtherwise hlt emulation fails if PIT is not injecting IRQ\u0027s.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "107d6d2efa9eb8c48d050936d8019230ac6b24cd",
      "tree": "fc1d94a18e3f909e31c900ac698811831ed0abb2",
      "parents": [
        "f26a3988917913b3d11b2bd741601a2c64ab9204"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Mon May 05 14:58:26 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun May 18 14:34:14 2008 +0300"
      },
      "message": "KVM: x86 emulator: fix writes to registers with modrm encodings\n\nA register destination encoded with a mod\u003d3 encoding left dst.ptr NULL.\nNormally we don\u0027t trap writes to registers, but in the case of smsw, we do.\n\nFix by pointing dst.ptr at the destination register.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "93df766322ba1db2801e4b826985a4932dd75866",
      "tree": "27e4dfcfa8e1ab54f42645d03b3c0a52aeddcfc9",
      "parents": [
        "bc1a34f1bf354fabc03e3f465620c80e510d0e8f"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Fri May 02 13:23:10 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun May 04 14:44:49 2008 +0300"
      },
      "message": "KVM: MMU: Allow more than PAGES_PER_HPAGE write protections per large page\n\nnonpae guests can call rmap_write_protect twice per page (for page tables)\nor four times per page (for page directories), triggering a bogus warning.\n\nRemove the warning.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "bc1a34f1bf354fabc03e3f465620c80e510d0e8f",
      "tree": "f16228a547097d8d7ad621064c463f3e92cc9557",
      "parents": [
        "b4f14abd95cd8d42f08438f1c4ec3eafe41054ee"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@qumranet.com",
        "time": "Thu May 01 18:43:33 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun May 04 14:44:48 2008 +0300"
      },
      "message": "KVM: avoid fx_init() schedule in atomic\n\nThis make sure not to schedule in atomic during fx_init. I also\nchanged the name of fpu_init to fx_finit to avoid duplicating the name\nwith fpu_init that is already used in the kernel, this makes grep\nsimpler if nothing else.\n\nSigned-off-by: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "b4f14abd95cd8d42f08438f1c4ec3eafe41054ee",
      "tree": "1a76ef8cd16ece3ee99c78d07795e5d779b9912b",
      "parents": [
        "ece15babfa514e06118f62f4df2c757d6209f4f0"
      ],
      "author": {
        "name": "Jan Kiszka",
        "email": "jan.kiszka@siemens.com",
        "time": "Wed Apr 30 17:59:04 2008 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun May 04 14:44:47 2008 +0300"
      },
      "message": "KVM: Avoid spurious execeptions after setting registers\n\nClear pending exceptions when setting new register values. This avoids\nspurious exceptions after restoring a vcpu state or after\nreset-on-triple-fault.\n\nSigned-off-by: Jan Kiszka \u003cjan.kiszka@siemens.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "ece15babfa514e06118f62f4df2c757d6209f4f0",
      "tree": "46eadfa87b6adb88a2252c15f0468e8330968001",
      "parents": [
        "dc7457ea52f88539dc72925360e6068d5c938a0f"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "mtosatti@redhat.com",
        "time": "Wed Apr 30 13:23:54 2008 -0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun May 04 14:44:46 2008 +0300"
      },
      "message": "KVM: PIT: support mode 4\n\nThe in-kernel PIT emulation ignores pending timers if operating under\nmode 4, which for example DragonFlyBSD uses (and Plan9 too, apparently).\n\nMode 4 seems to be similar to one-shot mode, other than the fact that it\nstarts counting after the next CLK pulse once programmed, while mode 1\nstarts counting immediately, so add a FIXME to enhance precision.\n\nFixes sourceforge bug 1952988.\n\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nAcked-by: Sheng Yang \u003csheng.yang@intel.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "dc7457ea52f88539dc72925360e6068d5c938a0f",
      "tree": "944de4de942d1e95d449b8a87ff47581f1720342",
      "parents": [
        "de368dceb33c3c068dbde1407aff75cd8e126f04"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Wed Apr 30 16:13:36 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun May 04 14:44:45 2008 +0300"
      },
      "message": "KVM: x86 emulator: disable writeback on lmsw\n\nThe recent changes allowing memory operands with lmsw and smsw left\nlmsw with writeback enabled.  Since lmsw has no oridinary destination\noperand, the dst pointer was not initialized, resulting in an oops.\n\nClose the hole by disabling writeback for lmsw.\n\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    },
    {
      "commit": "3fe913e7c550a869e250d04c34410f7a6e263f7c",
      "tree": "557f9a5011ea5440fd95e4fd41183bda204b270b",
      "parents": [
        "1439442c7b257b47a83aea4daed8fbf4a32cdff9"
      ],
      "author": {
        "name": "Izik Eidus",
        "email": "izike@qumranet.com",
        "time": "Mon Apr 28 18:23:52 2008 +0300"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@qumranet.com",
        "time": "Sun May 04 14:44:43 2008 +0300"
      },
      "message": "KVM: x86: task switch: fix wrong bit setting for the busy flag\n\nThe busy bit is bit 1 of the type field, not bit 8.\n\nSigned-off-by: Izik Eidus \u003cizike@qumranet.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n"
    }
  ],
  "next": "1439442c7b257b47a83aea4daed8fbf4a32cdff9"
}
