[PATCH 00/11] KVM: vmx: optimize VMWRITEs to host FS/GS fields

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Conceptually, this series is fairly simple: the host's FS/GS selector
and base values rarely change, so only update their corresponding VMCS
fields when necessary.  VMWRITE takes ~27 cycles on modern hardware,
i.e. eliminating writes to HOST_{FS,GS}_{SEL,BASE} can save upwards of
~100 cycles when reloading a vCPU after an exit to userspace.

The actual optimization is implemented in the final two patches.  The
preceding nine patches are a mix of refactoring and cleansing; KVM's
FS/GS related code in particular has become a bit crusty as KVM has
evolved over the years.

Sean Christopherson (11):
  KVM: vmx: move msr_host_bndcfgs out of struct host_state
  KVM: vmx: refactor segmentation code in vmx_save_host_state()
  KVM: vmx: track host_state.loaded using a loaded_vmcs pointer
  KVM: vmx: add dedicated utility to access guest's kernel_gs_base
  KVM: vmx: rename __vmx_load_host_state() and vmx_save_host_state()
  KVM: nVMX: remove a misleading comment regarding vmcs02 fields
  KVM: vmx: compute need to reload FS/GS/LDT on demand
  KVM: vmx: move struct host_state usage to struct loaded_vmcs
  KVM: vmx: always initialize HOST_{FS,GS}_BASE to zero during setup
  KVM: vmx: skip VMWRITE of HOST_{FS,GS}_SEL when possible
  KVM: vmx: skip VMWRITE of HOST_{FS,GS}_BASE when possible

 arch/x86/kvm/vmx.c | 246 ++++++++++++++++++++++++++-------------------
 1 file changed, 144 insertions(+), 102 deletions(-)

-- 
2.18.0




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux