Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753678AbYKIFGd (ORCPT ); Sun, 9 Nov 2008 00:06:33 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750746AbYKIFGX (ORCPT ); Sun, 9 Nov 2008 00:06:23 -0500 Received: from relais.videotron.ca ([24.201.245.36]:43873 "EHLO relais.videotron.ca" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750730AbYKIFGW (ORCPT ); Sun, 9 Nov 2008 00:06:22 -0500 MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: TEXT/PLAIN; charset=US-ASCII Date: Sun, 09 Nov 2008 00:06:12 -0500 (EST) From: Nicolas Pitre X-X-Sender: nico@xanadu.home To: Mathieu Desnoyers Cc: Linus Torvalds , Russell King , David Howells , Andrew Morton , Ingo Molnar , Peter Zijlstra , lkml , Ralf Baechle , benh@kernel.crashing.org, paulus@samba.org, David Miller , Ingo Molnar , Thomas Gleixner , Steven Rostedt , linux-arch@vger.kernel.org Subject: Re: [PATCH] clarify usage expectations for cnt32_to_63() In-reply-to: Message-id: References: <20081106220530.5b0e3a96.akpm@linux-foundation.org> <25363.1226056819@redhat.com> <20081107164758.GB22134@Krystal> <20081107201118.GB28600@flint.arm.linux.org.uk> <20081107213610.GC2654@Krystal> <9405.1226101315@redhat.com> <20081108001555.GE18378@flint.arm.linux.org.uk> <20081109022549.GA18508@Krystal> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1513 Lines: 40 On Sat, 8 Nov 2008, Nicolas Pitre wrote: > On Sat, 8 Nov 2008, Mathieu Desnoyers wrote: > > > I *think* that smp_rmb() would be enough, supposing the access to memory > > is done in program order wrt local interrupts in UP. This is basically > > Steven's question, which has not received any clear answer yet. I'd like > > to know what others think about it. > > In the mean time a pure rmb() is the safest thing to do now. Once we > can convince ourselves that out-of-order reads are always rolled back > upon the arrival of an interrupt then this could be relaxed. After thinking about it some more, then a smp_rmb() must be correct. On UP, that would be completely insane if an exception didn't resume the whole sequence since the CPU cannot presume anything when returning from it. If the instruction flows says: READ A READ B And speculative execution makes for B to be read before A, and you get an interrupt after B was read but before A was read, then the program counter may only point at READ A upon returning from the exception and B will be read again. Doing otherwise would require the CPU to remember any reordering that it might have performed upon every exceptions which is completely insane. So smp_rmb() it shall be. Nicolas -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/