Messages in this thread Patch in this message | | | Date | Tue, 24 Aug 2010 21:01:21 +0200 | From | Ingo Molnar <> | Subject | [GIT PULL] core fixes |
| |
Linus,
Please pull the latest core-fixes-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git core-fixes-for-linus
This contains the mutex optimistic spinning fix from Tim Chen. It is not a regression fix per se - but the improvement is significant enough (and the patch is simple enough as well) to not let this sit for yet another cycle.
Thanks,
Ingo
------------------> Tim Chen (1): mutex: Improve the scalability of optimistic spinning
kernel/sched.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/kernel/sched.c b/kernel/sched.c index 41541d7..09b574e 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -3865,8 +3865,16 @@ int mutex_spin_on_owner(struct mutex *lock, struct thread_info *owner) /* * Owner changed, break to re-assess state. */ - if (lock->owner != owner) + if (lock->owner != owner) { + /* + * If the lock has switched to a different owner, + * we likely have heavy contention. Return 0 to quit + * optimistic spinning and not contend further: + */ + if (lock->owner) + return 0; break; + } /* * Is that owner really running on that cpu?
| |