]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
KVM: X86: Expose PV_SCHED_YIELD CPUID feature bit to guest
authorWanpeng Li <wanpengli@tencent.com>
Tue, 11 Jun 2019 12:23:50 +0000 (20:23 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 2 Jul 2019 16:56:05 +0000 (18:56 +0200)
Expose PV_SCHED_YIELD feature bit to guest, the guest can check this
feature bit before using paravirtualized sched yield.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Radim Krčmář <rkrcmar@redhat.com>
Cc: Liran Alon <liran.alon@oracle.com>
Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Documentation/virtual/kvm/cpuid.txt
arch/x86/kvm/cpuid.c

index 97ca1940a0dc95645c05431017f1f06b7150905c..979a77ba5377bb078f51134838ae3d5fd2c727bb 100644 (file)
@@ -66,6 +66,10 @@ KVM_FEATURE_PV_SEND_IPI            ||    11 || guest checks this feature bit
                                    ||       || before using paravirtualized
                                    ||       || send IPIs.
 ------------------------------------------------------------------------------
+KVM_FEATURE_PV_SCHED_YIELD         ||    13 || guest checks this feature bit
+                                   ||       || before using paravirtualized
+                                   ||       || sched yield.
+------------------------------------------------------------------------------
 KVM_FEATURE_CLOCKSOURCE_STABLE_BIT ||    24 || host will warn if no guest-side
                                    ||       || per-cpu warps are expected in
                                    ||       || kvmclock.
index 68c74e948e28a7884b2733fa11a8c7cc91506d03..004cbd84c35192ecdf3b156bbb9bf980972d68bc 100644 (file)
@@ -659,7 +659,8 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,
                             (1 << KVM_FEATURE_PV_TLB_FLUSH) |
                             (1 << KVM_FEATURE_ASYNC_PF_VMEXIT) |
                             (1 << KVM_FEATURE_PV_SEND_IPI) |
-                            (1 << KVM_FEATURE_POLL_CONTROL);
+                            (1 << KVM_FEATURE_POLL_CONTROL) |
+                            (1 << KVM_FEATURE_PV_SCHED_YIELD);
 
                if (sched_info_on())
                        entry->eax |= (1 << KVM_FEATURE_STEAL_TIME);