• Paolo Bonzini's avatar
    KVM: nVMX: track dirty state of non-shadowed VMCS fields · 74a497fa
    Paolo Bonzini authored
    VMCS12 fields that are not handled through shadow VMCS are rarely
    written, and thus they are also almost constant in the vmcs02.  We can
    thus optimize prepare_vmcs02 by skipping all the work for non-shadowed
    fields in the common case.
    
    This patch introduces the (pretty simple) tracking infrastructure; the
    next patches will move work to prepare_vmcs02_full and save a few hundred
    clock cycles per VMRESUME on a Haswell Xeon E5 system:
    
    	                                before  after
    	cpuid                           14159   13869
    	vmcall                          15290   14951
    	inl_from_kernel                 17703   17447
    	outl_to_kernel                  16011   14692
    	self_ipi_sti_nop                16763   15825
    	self_ipi_tpr_sti_nop            17341   15935
    	wr_tsc_adjust_msr               14510   14264
    	rd_tsc_adjust_msr               15018   14311
    	mmio-wildcard-eventfd:pci-mem   16381   14947
    	mmio-datamatch-eventfd:pci-mem  18620   17858
    	portio-wildcard-eventfd:pci-io  15121   14769
    	portio-datamatch-eventfd:pci-io 15761   14831
    
    (average savings 748, stdev 460).
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
    74a497fa
vmx.c 345 KB