From: Li RongQing <lirongqing@xxxxxxxxx> Check whether vCPU is preempted or not only when HLT is trapped or there is not realtime hint. In other words, it is unnecessary to check preemption when vCPU has realtime hint (which means vCPU has dedicated pCP) and has not PV_UNHALT (which means unintercepted HLT), because vCPU should not to be marked as preempted in this setup. Signed-off-by: Li RongQing <lirongqing@xxxxxxxxx> --- diff with v1: rewrite changelog and indentation arch/x86/kernel/kvm.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c index 1cceac5..25398d2 100644 --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c @@ -820,8 +820,10 @@ static void __init kvm_guest_init(void) has_steal_clock = 1; static_call_update(pv_steal_clock, kvm_steal_clock); - pv_ops.lock.vcpu_is_preempted = - PV_CALLEE_SAVE(__kvm_vcpu_is_preempted); + if (kvm_para_has_feature(KVM_FEATURE_PV_UNHALT) || + !kvm_para_has_hint(KVM_HINTS_REALTIME)) + pv_ops.lock.vcpu_is_preempted = + PV_CALLEE_SAVE(__kvm_vcpu_is_preempted); } if (kvm_para_has_feature(KVM_FEATURE_PV_EOI)) -- 2.9.4