KVM: Use the scheduler preemption notifiers to make kvm preemptible
Current kvm disables preemption while the new virtualization registers are in use. This of course is not very good for latency sensitive workloads (one use of virtualization is to offload user interface and other latency insensitive stuff to a container, so that it is easier to analyze the remaining workload). This patch re-enables preemption for kvm; preemption is now only disabled when switching the registers in and out, and during the switch to guest mode and back. Contains fixes from Shaohua Li <shaohua.li@intel.com>. Signed-off-by: Avi Kivity <avi@qumranet.com>
This commit is contained in:
@@ -276,9 +276,7 @@ static int mmu_topup_memory_caches(struct kvm_vcpu *vcpu)
|
||||
kvm_mmu_free_some_pages(vcpu);
|
||||
if (r < 0) {
|
||||
spin_unlock(&vcpu->kvm->lock);
|
||||
kvm_arch_ops->vcpu_put(vcpu);
|
||||
r = __mmu_topup_memory_caches(vcpu, GFP_KERNEL);
|
||||
kvm_arch_ops->vcpu_load(vcpu);
|
||||
spin_lock(&vcpu->kvm->lock);
|
||||
kvm_mmu_free_some_pages(vcpu);
|
||||
}
|
||||
|
Reference in New Issue
Block a user