Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb()

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: David Howells
Date: Sunday, November 9, 2008 - 4:51 am

Steven Rostedt <rostedt@goodmis.org> wrote:


Life isn't that simple.  Go and read the section labelled "The things cpus get
up to" in Documentation/memory-barriers.txt.

The two reads we're talking about are independent of each other.  Independent
reads and writes can be reordered and merged at will by the CPU, subject to
restrictions imposed by barriers, cacheability attributes, MMIO attributes and
suchlike.

You can get read b happening before read a, but in such a case both
instructions will be in the CPU's execution pipeline.  When an interrupt
occurs, the CPU will presumably finish clearing what's in its pipeline before
going and servicing the interrupt handler.

If a CPU is strictly ordered with respect to reads, do you actually need read
barriers?

The fact that a pair of reads might be part of an algorithm that is critically
dependent on the ordering of those reads isn't something the CPU cares about.
It doesn't know there's an algorithm there.


To quote again from memory-barriers.txt, section "CPU memory barriers":

	Mandatory barriers should not be used to control SMP effects, since
	mandatory barriers unnecessarily impose overhead on UP systems. They
	may, however, be used to control MMIO effects on accesses through
	relaxed memory I/O windows.  These are required even on non-SMP
	systems as they affect the order in which memory operations appear to
	a device by prohibiting both the compiler and the CPU from reordering
	them.

Section "Accessing devices":

 (2) If the accessor functions are used to refer to an I/O memory window with
     relaxed memory access properties, then _mandatory_ memory barriers are
     required to enforce ordering.

David
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Thu Nov 6, 10:23 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Andrew Morton, (Thu Nov 6, 11:05 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Nicolas Pitre, (Fri Nov 7, 1:12 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Andrew Morton, (Fri Nov 7, 1:38 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 3:55 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 3:59 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 4:03 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 4:20 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Nicolas Pitre, (Fri Nov 7, 8:01 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Andrew Morton, (Fri Nov 7, 8:50 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 9:07 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 9:21 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Andrew Morton, (Fri Nov 7, 9:29 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Nicolas Pitre, (Fri Nov 7, 9:47 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 9:47 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 9:51 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 9:55 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 10:04 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 10:09 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 10:10 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 10:17 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Andrew Morton, (Fri Nov 7, 10:21 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Andrew Morton, (Fri Nov 7, 10:26 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Steven Rostedt, (Fri Nov 7, 10:33 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 11:00 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Andrew Morton, (Fri Nov 7, 11:21 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Harvey Harrison, (Fri Nov 7, 11:30 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 11:33 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Linus Torvalds, (Fri Nov 7, 11:36 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 11:42 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Andrew Morton, (Fri Nov 7, 11:45 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 12:18 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Peter Zijlstra, (Fri Nov 7, 12:32 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 1:02 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Nicolas Pitre, (Fri Nov 7, 1:03 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Steven Rostedt, (Fri Nov 7, 1:08 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Russell King, (Fri Nov 7, 1:11 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Nicolas Pitre, (Fri Nov 7, 1:18 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Nicolas Pitre, (Fri Nov 7, 1:36 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 1:45 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Paul E. McKenney, (Fri Nov 7, 1:54 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Paul E. McKenney, (Fri Nov 7, 1:55 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 1:55 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Steven Rostedt, (Fri Nov 7, 2:04 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 2:16 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Nicolas Pitre, (Fri Nov 7, 2:22 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 2:27 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 2:36 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Russell King, (Fri Nov 7, 3:18 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Fri Nov 7, 3:36 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 4:27 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 4:41 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 4:50 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 4:55 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Russell King, (Fri Nov 7, 5:15 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Paul E. McKenney, (Fri Nov 7, 5:34 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Fri Nov 7, 5:45 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Steven Rostedt, (Fri Nov 7, 5:55 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Nicolas Pitre, (Sat Nov 8, 8:24 am)
[PATCH] clarify usage expectations for cnt32_to_63(), Nicolas Pitre, (Sat Nov 8, 4:20 pm)
Re: [PATCH] clarify usage expectations for cnt32_to_63(), Mathieu Desnoyers, (Sat Nov 8, 7:25 pm)
Re: [PATCH] clarify usage expectations for cnt32_to_63(), Nicolas Pitre, (Sat Nov 8, 10:06 pm)
[PATCH v2] clarify usage expectations for cnt32_to_63(), Nicolas Pitre, (Sat Nov 8, 10:27 pm)
Re: [PATCH v2] clarify usage expectations for cnt32_to_63(), Mathieu Desnoyers, (Sat Nov 8, 11:48 pm)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), David Howells, (Sun Nov 9, 4:51 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Steven Rostedt, (Sun Nov 9, 7:31 am)
Re: [RFC patch 08/18] cnt32_to_63 should use smp_rmb(), Mathieu Desnoyers, (Sun Nov 9, 9:18 am)
Re: [PATCH v2] clarify usage expectations for cnt32_to_63(), Mathieu Desnoyers, (Sun Nov 9, 9:22 am)
[PATCH] convert cnt32_to_63 to inline, Mathieu Desnoyers, (Tue Nov 11, 11:28 am)
Re: [PATCH] convert cnt32_to_63 to inline, Russell King, (Tue Nov 11, 12:13 pm)
Re: [PATCH] convert cnt32_to_63 to inline, Mathieu Desnoyers, (Tue Nov 11, 1:11 pm)
Re: [PATCH] convert cnt32_to_63 to inline, Nicolas Pitre, (Tue Nov 11, 2:00 pm)
Re: [PATCH] convert cnt32_to_63 to inline, Russell King, (Tue Nov 11, 2:13 pm)
Re: [PATCH] convert cnt32_to_63 to inline, Russell King, (Tue Nov 11, 2:51 pm)
Re: [PATCH] convert cnt32_to_63 to inline, David Howells, (Tue Nov 11, 3:31 pm)
Re: [PATCH] convert cnt32_to_63 to inline, Peter Zijlstra, (Tue Nov 11, 3:37 pm)
Re: [PATCH] convert cnt32_to_63 to inline, Steven Rostedt, (Tue Nov 11, 6:13 pm)
Re: [PATCH] convert cnt32_to_63 to inline, Mathieu Desnoyers, (Tue Nov 11, 8:48 pm)