From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934404AbcCNNYI (ORCPT ); Mon, 14 Mar 2016 09:24:08 -0400 Received: from bombadil.infradead.org ([198.137.202.9]:42437 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934227AbcCNNYG (ORCPT ); Mon, 14 Mar 2016 09:24:06 -0400 Date: Mon, 14 Mar 2016 14:23:56 +0100 From: Peter Zijlstra To: Davidlohr Bueso Cc: tglx@linutronix.de, mingo@kernel.org, bigeasy@linutronix.de, umgwanakikbuti@gmail.com, paulmck@linux.vnet.ibm.com, linux-kernel@vger.kernel.org, Davidlohr Bueso Subject: Re: [PATCH 3/3] rtmutex: Reduce top-waiter blocking on a lock Message-ID: <20160314132356.GY6356@twins.programming.kicks-ass.net> References: <1457461223-4301-1-git-send-email-dave@stgolabs.net> <1457461223-4301-4-git-send-email-dave@stgolabs.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1457461223-4301-4-git-send-email-dave@stgolabs.net> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 08, 2016 at 10:20:23AM -0800, Davidlohr Bueso wrote: > lock->owner = (void *) RT_MUTEX_HAS_WAITERS; > static inline struct task_struct *rt_mutex_owner(struct rt_mutex *lock) > { > return (struct task_struct *) > - ((unsigned long)lock->owner & ~RT_MUTEX_OWNER_MASKALL); > + ((unsigned long)READ_ONCE(lock->owner) & ~RT_MUTEX_OWNER_MASKALL); > } If you READ_ONCE(), you should also WRITE_ONCE(), because while the write is under the proper locks, our friendly compiler might still choose to emit the store in a random sequence of byte stores, rendering our READ_ONCE() pointless.