1. 21 12月, 2013 1 次提交
  2. 18 12月, 2013 1 次提交
  3. 12 12月, 2013 2 次提交
  4. 14 11月, 2013 1 次提交
  5. 31 10月, 2013 3 次提交
  6. 28 10月, 2013 3 次提交
  7. 11 10月, 2013 1 次提交
  8. 10 10月, 2013 1 次提交
    • G
      KVM: nVMX: fix shadow on EPT · d0d538b9
      Gleb Natapov 提交于
      72f85795 broke shadow on EPT. This patch reverts it and fixes PAE
      on nEPT (which reverted commit fixed) in other way.
      
      Shadow on EPT is now broken because while L1 builds shadow page table
      for L2 (which is PAE while L2 is in real mode) it never loads L2's
      GUEST_PDPTR[0-3].  They do not need to be loaded because without nested
      virtualization HW does this during guest entry if EPT is disabled,
      but in our case L0 emulates L2's vmentry while EPT is enables, so we
      cannot rely on vmcs12->guest_pdptr[0-3] to contain up-to-date values
      and need to re-read PDPTEs from L2 memory. This is what kvm_set_cr3()
      is doing, but by clearing cache bits during L2 vmentry we drop values
      that kvm_set_cr3() read from memory.
      
      So why the same code does not work for PAE on nEPT? kvm_set_cr3()
      reads pdptes into vcpu->arch.walk_mmu->pdptrs[]. walk_mmu points to
      vcpu->arch.nested_mmu while nested guest is running, but ept_load_pdptrs()
      uses vcpu->arch.mmu which contain incorrect values. Fix that by using
      walk_mmu in ept_(load|save)_pdptrs.
      Signed-off-by: NGleb Natapov <gleb@redhat.com>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Tested-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      d0d538b9
  9. 03 10月, 2013 1 次提交
  10. 30 9月, 2013 4 次提交
  11. 25 9月, 2013 5 次提交
  12. 18 9月, 2013 1 次提交
  13. 17 9月, 2013 1 次提交
  14. 28 8月, 2013 1 次提交
  15. 07 8月, 2013 13 次提交
  16. 29 7月, 2013 1 次提交
    • G
      nVMX: reset rflags register cache during nested vmentry. · 63fbf59f
      Gleb Natapov 提交于
      During nested vmentry into vm86 mode a vcpu state is found to be incorrect
      because rflags does not have VM flag set since it is read from the cache
      and has L1's value instead of L2's. If emulate_invalid_guest_state=1 L0
      KVM tries to emulate it, but emulation does not work for nVMX and it
      never should happen anyway. Fix that by using vmx_set_rflags() to set
      rflags during nested vmentry which takes care of updating register cache.
      Signed-off-by: NGleb Natapov <gleb@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      63fbf59f