1. 17 5月, 2012 3 次提交
    • A
      KVM: MMU: Don't use RCU for lockless shadow walking · c142786c
      Avi Kivity 提交于
      Using RCU for lockless shadow walking can increase the amount of memory
      in use by the system, since RCU grace periods are unpredictable.  We also
      have an unconditional write to a shared variable (reader_counter), which
      isn't good for scaling.
      
      Replace that with a scheme similar to x86's get_user_pages_fast(): disable
      interrupts during lockless shadow walk to force the freer
      (kvm_mmu_commit_zap_page()) to wait for the TLB flush IPI to find the
      processor with interrupts enabled.
      
      We also add a new vcpu->mode, READING_SHADOW_PAGE_TABLES, to prevent
      kvm_flush_remote_tlbs() from avoiding the IPI.
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      c142786c
    • A
      KVM: VMX: Optimize %ds, %es reload · b2da15ac
      Avi Kivity 提交于
      On x86_64, we can defer %ds and %es reload to the heavyweight context switch,
      since nothing in the lightweight paths uses the host %ds or %es (they are
      ignored by the processor).  Furthermore we can avoid the load if the segments
      are null, by letting the hardware load the null segments for us.  This is the
      expected case.
      
      On i386, we could avoid the reload entirely, since the entry.S paths take care
      of reload, except for the SYSEXIT path which leaves %ds and %es set to __USER_DS.
      So we set them to the same values as well.
      
      Saves about 70 cycles out of 1600 (around 4%; noisy measurements).
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      b2da15ac
    • A
      KVM: VMX: Fix %ds/%es clobber · 512d5649
      Avi Kivity 提交于
      The vmx exit code unconditionally restores %ds and %es to __USER_DS.  This
      can override the user's values, since %ds and %es are not saved and restored
      in x86_64 syscalls.  In practice, this isn't dangerous since nobody uses
      segment registers in long mode, least of all programs that use KVM.
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      512d5649
  2. 14 5月, 2012 2 次提交
  3. 06 5月, 2012 20 次提交
  4. 03 5月, 2012 1 次提交
  5. 01 5月, 2012 3 次提交
  6. 28 4月, 2012 1 次提交
    • J
      KVM: x86: Run PIT work in own kthread · b6ddf05f
      Jan Kiszka 提交于
      We can't run PIT IRQ injection work in the interrupt context of the host
      timer. This would allow the user to influence the handler complexity by
      asking for a broadcast to a large number of VCPUs. Therefore, this work
      was pushed into workqueue context in 9d244caf2e. However, this prevents
      prioritizing the PIT injection over other task as workqueues share
      kernel threads.
      
      This replaces the workqueue with a kthread worker and gives that thread
      a name in the format "kvm-pit/<owner-process-pid>". That allows to
      identify and adjust the kthread priority according to the VM process
      parameters.
      Signed-off-by: NJan Kiszka <jan.kiszka@siemens.com>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      b6ddf05f
  7. 24 4月, 2012 3 次提交
  8. 20 4月, 2012 2 次提交
  9. 19 4月, 2012 2 次提交
  10. 17 4月, 2012 3 次提交