1. 14 Apr, 2013 6 commits
  2. 11 Apr, 2013 1 commit
    • Kevin Wolf's avatar
      KVM: x86 emulator: Fix segment loading in VM86 · f8da94e9
      Kevin Wolf authored
      This fixes a regression introduced in commit 03ebebeb ("KVM: x86
      emulator: Leave segment limit and attributs alone in real mode").
      
      The mentioned commit changed the segment descriptors for both real mode
      and VM86 to only update the segment base instead of creating a
      completely new descriptor with limit 0xffff so that unreal mode keeps
      working across a segment register reload.
      
      This leads to an invalid segment descriptor in the eyes of VMX, which
      seems to be okay for real mode because KVM will fix it up before the
      next VM entry or emulate the state, but it doesn't do this if the guest
      is in VM86, so we end up with:
      
        KVM: entry failed, hardware error 0x80000021
      
      Fix this by effectively reverting commit 03ebebeb
      
       for VM86 and leaving
      it only in place for real mode, which is where it's really needed.
      
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      Signed-off-by: default avatarGleb Natapov <gleb@redhat.com>
      f8da94e9
  3. 08 Apr, 2013 6 commits
  4. 07 Apr, 2013 5 commits
  5. 02 Apr, 2013 12 commits
  6. 24 Mar, 2013 1 commit
  7. 22 Mar, 2013 7 commits
  8. 21 Mar, 2013 2 commits
    • Takuya Yoshikawa's avatar
      KVM: MMU: Rename kvm_mmu_free_some_pages() to make_mmu_pages_available() · 81f4f76b
      Takuya Yoshikawa authored
      
      
      The current name "kvm_mmu_free_some_pages" should be used for something
      that actually frees some shadow pages, as we expect from the name, but
      what the function is doing is to make some, KVM_MIN_FREE_MMU_PAGES,
      shadow pages available: it does nothing when there are enough.
      
      This patch changes the name to reflect this meaning better; while doing
      this renaming, the code in the wrapper function is inlined into the main
      body since the whole function will be inlined into the only caller now.
      
      Signed-off-by: default avatarTakuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>
      Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
      81f4f76b
    • Takuya Yoshikawa's avatar
      KVM: MMU: Move kvm_mmu_free_some_pages() into kvm_mmu_alloc_page() · 7ddca7e4
      Takuya Yoshikawa authored
      
      
      What this function is doing is to ensure that the number of shadow pages
      does not exceed the maximum limit stored in n_max_mmu_pages: so this is
      placed at every code path that can reach kvm_mmu_alloc_page().
      
      Although it might have some sense to spread this function in each such
      code path when it could be called before taking mmu_lock, the rule was
      changed not to do so.
      
      Taking this background into account, this patch moves it into
      kvm_mmu_alloc_page() and simplifies the code.
      
      Note: the unlikely hint in kvm_mmu_free_some_pages() guarantees that the
      overhead of this function is almost zero except when we actually need to
      allocate some shadow pages, so we do not need to care about calling it
      multiple times in one path by doing kvm_mmu_get_page() a few times.
      
      Signed-off-by: default avatarTakuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>
      Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
      7ddca7e4