There are cases folks want to disable spinlock optimization for debug/test purpose. Xen and hyperv already have parameters "xen_nopvspin" and "hv_nopvspin" to support that, but kvm doesn't. The first patch adds that feature to KVM guest with "nopvspin". For compatibility reason original parameters "xen_nopvspin" and "hv_nopvspin" are retained and marked obsolete. v6: PATCH1: add Reviewed-by [Vitaly Kuznetsov] PATCH2: change 'pv' to 'PV', add Reviewed-by [Vitaly Kuznetsov] PATCH3: refactor 'if' branch in kvm_spinlock_init() [Vitaly Kuznetsov] v5: PATCH1: new patch to revert a currently unnecessory commit, code is simpler a bit after that change. [Boris Ostrovsky] PATCH3: fold 'if' statement,add comments on virt_spin_lock_key, reorder with PATCH2 to better reflect dependency PATCH4: fold 'if' statement, add Reviewed-by [Boris Ostrovsky] PATCH5: add Reviewed-by [Michael Kelley] v4: PATCH1: use variable name nopvspin instead of pvspin and defined it as __initdata, changed print message, updated patch description [Sean Christopherson] PATCH2: remove Suggested-by, use "kvm-guest:" prefix [Sean Christopherson] PATCH3: make variable nopvsin and xen_pvspin coexist remove Reviewed-by due to code change [Sean Christopherson] PATCH4: make variable nopvsin and hv_pvspin coexist [Sean Christopherson] v3: PATCH2: Fix indentation v2: PATCH1: pick the print code change into separate PATCH2, updated patch description [Vitaly Kuznetsov] PATCH2: new patch with print code change [Vitaly Kuznetsov] PATCH3: add Reviewed-by [Juergen Gross] Zhenzhong Duan (5): Revert "KVM: X86: Fix setup the virt_spin_lock_key before static key get initialized" x86/kvm: Change print code to use pr_*() format x86/kvm: Add "nopvspin" parameter to disable PV spinlocks xen: Mark "xen_nopvspin" parameter obsolete x86/hyperv: Mark "hv_nopvspin" parameter obsolete Documentation/admin-guide/kernel-parameters.txt | 14 ++++- arch/x86/hyperv/hv_spinlock.c | 4 ++ arch/x86/include/asm/qspinlock.h | 1 + arch/x86/kernel/kvm.c | 76 ++++++++++++++++--------- arch/x86/xen/spinlock.c | 4 +- kernel/locking/qspinlock.c | 7 +++ 6 files changed, 75 insertions(+), 31 deletions(-) -- 1.8.3.1