1. 30 1月, 2008 2 次提交
  2. 13 10月, 2007 12 次提交
  3. 03 5月, 2007 17 次提交
  4. 04 3月, 2007 3 次提交
    • A
      KVM: Bump API version · f7e6a45a
      Avi Kivity 提交于
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      f7e6a45a
    • A
      KVM: Per-vcpu inodes · bccf2150
      Avi Kivity 提交于
      Allocate a distinct inode for every vcpu in a VM.  This has the following
      benefits:
      
       - the filp cachelines are no longer bounced when f_count is incremented on
         every ioctl()
       - the API and internal code are distinctly clearer; for example, on the
         KVM_GET_REGS ioctl, there is no need to copy the vcpu number from
         userspace and then copy the registers back; the vcpu identity is derived
         from the fd used to make the call
      
      Right now the performance benefits are completely theoretical since (a) we
      don't support more than one vcpu per VM and (b) virtualization hardware
      inefficiencies completely everwhelm any cacheline bouncing effects.  But
      both of these will change, and we need to prepare the API today.
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      bccf2150
    • A
      KVM: Create an inode per virtual machine · f17abe9a
      Avi Kivity 提交于
      This avoids having filp->f_op and the corresponding inode->i_fop different,
      which is a little unorthodox.
      
      The ioctl list is split into two: global kvm ioctls and per-vm ioctls.  A new
      ioctl, KVM_CREATE_VM, is used to create VMs and return the VM fd.
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      f17abe9a
  5. 13 2月, 2007 2 次提交
  6. 27 1月, 2007 1 次提交
  7. 06 1月, 2007 1 次提交
    • D
      [PATCH] KVM: Improve interrupt response · c1150d8c
      Dor Laor 提交于
      The current interrupt injection mechanism might delay an interrupt under
      the following circumstances:
      
       - if injection fails because the guest is not interruptible (rflags.IF clear,
         or after a 'mov ss' or 'sti' instruction).  Userspace can check rflags,
         but the other cases or not testable under the current API.
       - if injection fails because of a fault during delivery.  This probably
         never happens under normal guests.
       - if injection fails due to a physical interrupt causing a vmexit so that
         it can be handled by the host.
      
      In all cases the guest proceeds without processing the interrupt, reducing
      the interactive feel and interrupt throughput of the guest.
      
      This patch fixes the situation by allowing userspace to request an exit
      when the 'interrupt window' opens, so that it can re-inject the interrupt
      at the right time.  Guest interactivity is very visibly improved.
      Signed-off-by: NDor Laor <dor.laor@qumranet.com>
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      Acked-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c1150d8c
  8. 23 12月, 2006 1 次提交
  9. 11 12月, 2006 1 次提交
    • A
      [PATCH] kvm: userspace interface · 6aa8b732
      Avi Kivity 提交于
      web site: http://kvm.sourceforge.net
      
      mailing list: kvm-devel@lists.sourceforge.net
        (http://lists.sourceforge.net/lists/listinfo/kvm-devel)
      
      The following patchset adds a driver for Intel's hardware virtualization
      extensions to the x86 architecture.  The driver adds a character device
      (/dev/kvm) that exposes the virtualization capabilities to userspace.  Using
      this driver, a process can run a virtual machine (a "guest") in a fully
      virtualized PC containing its own virtual hard disks, network adapters, and
      display.
      
      Using this driver, one can start multiple virtual machines on a host.
      
      Each virtual machine is a process on the host; a virtual cpu is a thread in
      that process.  kill(1), nice(1), top(1) work as expected.  In effect, the
      driver adds a third execution mode to the existing two: we now have kernel
      mode, user mode, and guest mode.  Guest mode has its own address space mapping
      guest physical memory (which is accessible to user mode by mmap()ing
      /dev/kvm).  Guest mode has no access to any I/O devices; any such access is
      intercepted and directed to user mode for emulation.
      
      The driver supports i386 and x86_64 hosts and guests.  All combinations are
      allowed except x86_64 guest on i386 host.  For i386 guests and hosts, both pae
      and non-pae paging modes are supported.
      
      SMP hosts and UP guests are supported.  At the moment only Intel
      hardware is supported, but AMD virtualization support is being worked on.
      
      Performance currently is non-stellar due to the naive implementation of the
      mmu virtualization, which throws away most of the shadow page table entries
      every context switch.  We plan to address this in two ways:
      
      - cache shadow page tables across tlb flushes
      - wait until AMD and Intel release processors with nested page tables
      
      Currently a virtual desktop is responsive but consumes a lot of CPU.  Under
      Windows I tried playing pinball and watching a few flash movies; with a recent
      CPU one can hardly feel the virtualization.  Linux/X is slower, probably due
      to X being in a separate process.
      
      In addition to the driver, you need a slightly modified qemu to provide I/O
      device emulation and the BIOS.
      
      Caveats (akpm: might no longer be true):
      
      - The Windows install currently bluescreens due to a problem with the
        virtual APIC.  We are working on a fix.  A temporary workaround is to
        use an existing image or install through qemu
      - Windows 64-bit does not work.  That's also true for qemu, so it's
        probably a problem with the device model.
      
      [bero@arklinux.org: build fix]
      [simon.kagstrom@bth.se: build fix, other fixes]
      [uril@qumranet.com: KVM: Expose interrupt bitmap]
      [akpm@osdl.org: i386 build fix]
      [mingo@elte.hu: i386 fixes]
      [rdreier@cisco.com: add log levels to all printks]
      [randy.dunlap@oracle.com: Fix sparse NULL and C99 struct init warnings]
      [anthony@codemonkey.ws: KVM: AMD SVM: 32-bit host support]
      Signed-off-by: NYaniv Kamay <yaniv@qumranet.com>
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      Cc: Simon Kagstrom <simon.kagstrom@bth.se>
      Cc: Bernhard Rosenkraenzer <bero@arklinux.org>
      Signed-off-by: NUri Lublin <uril@qumranet.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Roland Dreier <rolandd@cisco.com>
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: NAnthony Liguori <anthony@codemonkey.ws>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      6aa8b732