From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Zijlstra Subject: Re: [PATCH -v7][RFC]: mutex: implement adaptive spinning Date: Fri, 09 Jan 2009 19:16:04 +0100 Message-ID: <1231524964.442.103.camel@twins> References: <1231441350.14304.48.camel@think.oraclecorp.com> <1231498062.11687.608.camel@twins> <1231513614.442.11.camel@twins> Mime-Version: 1.0 Content-Type: text/plain Cc: Linus Torvalds , Chris Mason , Ingo Molnar , paulmck@linux.vnet.ibm.com, Gregory Haskins , Matthew Wilcox , Andi Kleen , Andrew Morton , Linux Kernel Mailing List , linux-fsdevel , linux-btrfs , Thomas Gleixner , Nick Piggin , Peter Morreale , Sven Dietrich To: Steven Rostedt Return-path: In-Reply-To: List-ID: On Fri, 2009-01-09 at 11:44 -0500, Steven Rostedt wrote: > When we get to the schedule() it then needs to be a: > > preempt_enable_no_resched(); > schedule(); On that note: Index: linux-2.6/kernel/mutex.c =================================================================== --- linux-2.6.orig/kernel/mutex.c +++ linux-2.6/kernel/mutex.c @@ -220,7 +220,9 @@ __mutex_lock_common(struct mutex *lock, __set_task_state(task, state); /* didnt get the lock, go to sleep: */ + preempt_disable(); spin_unlock_mutex(&lock->wait_lock, flags); + preempt_enable_no_resched(); schedule(); spin_lock_mutex(&lock->wait_lock, flags); } actually improves mutex performance on PREEMPT=y