From mboxrd@z Thu Jan 1 00:00:00 1970 From: Waiman Long Subject: [PATCH v7 06/11] pvqspinlock, x86: Allow unfair queue spinlock in a KVM guest Date: Wed, 19 Mar 2014 16:14:04 -0400 Message-ID: <1395260049-30839-7-git-send-email-Waiman.Long@hp.com> References: <1395260049-30839-1-git-send-email-Waiman.Long@hp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1395260049-30839-1-git-send-email-Waiman.Long@hp.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Arnd Bergmann , Peter Zijlstra Cc: Jeremy Fitzhardinge , Raghavendra K T , kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, Andi Kleen , Michel Lespinasse , Alok Kataria , linux-arch@vger.kernel.org, Gleb Natapov , x86@kernel.org, xen-devel@lists.xenproject.org, "Paul E. McKenney" , Scott J Norton , Rusty Russell , Steven Rostedt , Chris Wright , Oleg Nesterov , Boris Ostrovsky , Aswin Chandramouleeswaran , Chegu Vinod , Waiman Long , linux-kernel@vger.kernel.org, David Vrabel , Andrew Morton , Linu List-Id: linux-arch.vger.kernel.org This patch adds a KVM init function to activate the unfair queue spinlock in a KVM guest when the PARAVIRT_UNFAIR_LOCKS kernel config option is selected. Signed-off-by: Waiman Long --- arch/x86/kernel/kvm.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c index 713f1b3..a489140 100644 --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c @@ -826,3 +826,20 @@ static __init int kvm_spinlock_init_jump(void) early_initcall(kvm_spinlock_init_jump); #endif /* CONFIG_PARAVIRT_SPINLOCKS */ + +#ifdef CONFIG_PARAVIRT_UNFAIR_LOCKS +/* + * Enable unfair lock if running in a real para-virtualized environment + */ +static __init int kvm_unfair_locks_init_jump(void) +{ + if (!kvm_para_available()) + return 0; + + static_key_slow_inc(¶virt_unfairlocks_enabled); + printk(KERN_INFO "KVM setup unfair spinlock\n"); + + return 0; +} +early_initcall(kvm_unfair_locks_init_jump); +#endif -- 1.7.1