1. 30 1月, 2008 5 次提交
    • R
      KVM: MMU: Ignore reserved bits in cr3 in non-pae mode · 21764863
      Ryan Harper 提交于
      This patch removes the fault injected when the guest attempts to set reserved
      bits in cr3.  X86 hardware doesn't generate a fault when setting reserved bits.
      The result of this patch is that vmware-server, running within a kvm guest,
      boots and runs memtest from an iso.
      Signed-off-by: NRyan Harper <ryanh@us.ibm.com>
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      21764863
    • A
      KVM: Allow not-present guest page faults to bypass kvm · c7addb90
      Avi Kivity 提交于
      There are two classes of page faults trapped by kvm:
       - host page faults, where the fault is needed to allow kvm to install
         the shadow pte or update the guest accessed and dirty bits
       - guest page faults, where the guest has faulted and kvm simply injects
         the fault back into the guest to handle
      
      The second class, guest page faults, is pure overhead.  We can eliminate
      some of it on vmx using the following evil trick:
       - when we set up a shadow page table entry, if the corresponding guest pte
         is not present, set up the shadow pte as not present
       - if the guest pte _is_ present, mark the shadow pte as present but also
         set one of the reserved bits in the shadow pte
       - tell the vmx hardware not to trap faults which have the present bit clear
      
      With this, normal page-not-present faults go directly to the guest,
      bypassing kvm entirely.
      
      Unfortunately, this trick only works on Intel hardware, as AMD lacks a
      way to discriminate among page faults based on error code.  It is also
      a little risky since it uses reserved bits which might become unreserved
      in the future, so a module parameter is provided to disable it.
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      c7addb90
    • L
      KVM: Call x86_decode_insn() only when needed · 3427318f
      Laurent Vivier 提交于
      Move emulate_ctxt to kvm_vcpu to keep emulate context when we exit from kvm
      module. Call x86_decode_insn() only when needed. Modify x86_emulate_insn() to
      not modify the context if it must be re-entered.
      Signed-off-by: NLaurent Vivier <Laurent.Vivier@bull.net>
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      3427318f
    • L
      KVM: emulate_instruction() calls now x86_decode_insn() and x86_emulate_insn() · 1be3aa47
      Laurent Vivier 提交于
      emulate_instruction() calls now x86_decode_insn() and x86_emulate_insn().
      x86_emulate_insn() is x86_emulate_memop() without the decoding part.
      Signed-off-by: NLaurent Vivier <Laurent.Vivier@bull.net>
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      1be3aa47
    • A
      KVM: Refactor hypercall infrastructure (v3) · 7aa81cc0
      Anthony Liguori 提交于
      This patch refactors the current hypercall infrastructure to better
      support live migration and SMP.  It eliminates the hypercall page by
      trapping the UD exception that would occur if you used the wrong hypercall
      instruction for the underlying architecture and replacing it with the right
      one lazily.
      
      A fall-out of this patch is that the unhandled hypercalls no longer trap to
      userspace.  There is very little reason though to use a hypercall to
      communicate with userspace as PIO or MMIO can be used.  There is no code
      in tree that uses userspace hypercalls.
      
      [avi: fix #ud injection on vmx]
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      7aa81cc0
  2. 25 1月, 2008 1 次提交
  3. 27 11月, 2007 1 次提交
  4. 22 10月, 2007 2 次提交
  5. 15 10月, 2007 1 次提交
  6. 13 10月, 2007 30 次提交