From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932219AbbA2XPp (ORCPT ); Thu, 29 Jan 2015 18:15:45 -0500 Received: from smtp2.provo.novell.com ([137.65.250.81]:53751 "EHLO smtp2.provo.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753559AbbA2XPo (ORCPT ); Thu, 29 Jan 2015 18:15:44 -0500 Message-ID: <1422573326.2005.7.camel@stgolabs.net> Subject: Re: [PATCH 4/6] locking/rwsem: Avoid deceiving lock spinners From: Davidlohr Bueso To: Jason Low Cc: Peter Zijlstra , Ingo Molnar , "Paul E. McKenney" , Michel Lespinasse , Tim Chen , linux-kernel@vger.kernel.org Date: Thu, 29 Jan 2015 15:15:26 -0800 In-Reply-To: <1422562731.2418.16.camel@j-VirtualBox> References: <1422257769-14083-1-git-send-email-dave@stgolabs.net> <1422257769-14083-5-git-send-email-dave@stgolabs.net> <1422379430.6710.6.camel@j-VirtualBox> <1422417294.4604.15.camel@stgolabs.net> <1422479028.4111.34.camel@j-VirtualBox> <1422493812.4604.29.camel@stgolabs.net> <1422562401.2418.13.camel@j-VirtualBox> <1422562731.2418.16.camel@j-VirtualBox> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.12.7 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2015-01-29 at 12:18 -0800, Jason Low wrote: > /* > - * We break out the loop above on need_resched() and when the > - * owner changed, which is a sign for heavy contention. Return > - * success only when lock->owner is NULL. > + * We break out the loop above on either need_resched(), when > + * the owner is not running, or when the lock owner changed. > + * Return success only when the lock owner changed. > */ > - return lock->owner == NULL; > + return lock->owner != owner; > } Ideally we would refactor all this, along with getting rid of owner_running() at some point. It no longer makes sense to split up mutex_spin_on_owner() and we're doing duplicate owner checks. It would also be simpler than having to guess why we broke out of the loop, for example.