The VMX-preemption timer is a feature on VMX, it counts down, from the value loaded by VM entry, in VMX nonroot operation. When the timer counts down to zero, it stops counting down and a VM exit occurs. The VMX preemption timer for tsc deadline timer virtualization. The VMX preemption timer is armed when the vCPU is running, and a VMExit will happen if the virtual TSC deadline timer expires. When the vCPU thread is scheduled out, the tsc deadline timer virtualization will be switched to use the current solution, i.e. use the timer for it. It's switched back to VMX preemption timer when the vCPU thread is scheduled int. This solution replace the complex OS's hrtimer system, and also the host timer interrupt handling cost, with a preemption_timer VMexit. It fits well for some NFV usage scenario, when the vCPU is bound to a pCPU and the pCPU is isolated, or some similar scenarioes. However, it possibly has impact if the vCPU thread is scheduled in/out very frequently, because it switches from/to the hrtimer emulation a lot. A module parameter is provided to turn it on or off. Signed-off-by: Yunhong Jiang <yunhong.jiang@xxxxxxxxx> Yunhong Jiang (5): Add the kvm sched_out hook Utilize the vmx preemption timer Separate the start_sw_tscdeadline Utilize the vmx preemption timer for tsc deadline timer Adding trace for the hwemul_timer arch/arm/include/asm/kvm_host.h | 1 + arch/mips/include/asm/kvm_host.h | 1 + arch/powerpc/include/asm/kvm_host.h | 1 + arch/s390/include/asm/kvm_host.h | 1 + arch/x86/include/asm/kvm_host.h | 5 ++ arch/x86/kvm/lapic.c | 163 +++++++++++++++++++++++++++++++----- arch/x86/kvm/lapic.h | 10 +++ arch/x86/kvm/trace.h | 48 +++++++++++ arch/x86/kvm/vmx.c | 78 ++++++++++++++++- arch/x86/kvm/x86.c | 13 +++ include/linux/kvm_host.h | 1 + virt/kvm/kvm_main.c | 1 + 12 files changed, 300 insertions(+), 23 deletions(-) -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html