Messages in this thread | | | Subject | Re: [PATCH v4 1/4] x86/kvm: Add "nopvspin" parameter to disable PV spinlocks | From | Boris Ostrovsky <> | Date | Fri, 4 Oct 2019 10:52:45 -0400 |
| |
On 10/3/19 10:02 AM, Zhenzhong Duan wrote: > void __init kvm_spinlock_init(void) > { > - /* Does host kernel support KVM_FEATURE_PV_UNHALT? */ > - if (!kvm_para_has_feature(KVM_FEATURE_PV_UNHALT)) > - return; > - > - if (kvm_para_has_hint(KVM_HINTS_REALTIME)) > + /* > + * Don't use the pvqspinlock code if no KVM_FEATURE_PV_UNHALT feature > + * support, or there is REALTIME hints or only 1 vCPU. > + */ > + if (!kvm_para_has_feature(KVM_FEATURE_PV_UNHALT) || > + kvm_para_has_hint(KVM_HINTS_REALTIME) || > + num_possible_cpus() == 1) { > + pr_info("PV spinlocks disabled\n"); > return; > + } > > - /* Don't use the pvqspinlock code if there is only 1 vCPU. */ > - if (num_possible_cpus() == 1) > + if (nopvspin) { > + pr_info("PV spinlocks disabled forced by \"nopvspin\" parameter.\n"); > + static_branch_disable(&virt_spin_lock_key);
Would it make sense to bring here the other site where the key is disabled (in kvm_smp_prepare_cpus())?
(and, in fact, shouldn't all of the checks that result in early return above disable the key?)
-boris
> return; > + } > + pr_info("PV spinlocks enabled\n"); > > __pv_init_lock_hash(); > pv_ops.lock.queued_spin_lock_slowpath = __pv_queued_spin_lock_slowpath; >
| |