public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: "Woodruff, Richard" <r-woodruff2@ti.com>
Cc: "linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
	"linux-arm-kernel@lists.arm.linux.org.uk"
	<linux-arm-kernel@lists.arm.linux.org.uk>
Subject: Re: [PATCH] ARM MMU: add strongly-ordered memory type
Date: Thu, 7 Aug 2008 08:30:35 +0100	[thread overview]
Message-ID: <20080807073035.GA10255@flint.arm.linux.org.uk> (raw)
In-Reply-To: <13B9B4C6EF24D648824FF11BE89671620361F4E504@dlee02.ent.ti.com>

On Wed, Aug 06, 2008 at 07:21:14AM -0500, Woodruff, Richard wrote:
> Most of the weak memory attributes in newer ARMs are not exploited
> today in tree.  I'll guess this was more a correctness and capability
> judgment from Russell.

Not entirely true.  We do as much as is safe to do - which is basically
using 'device' mappings for devices and ioremap, and 'memory' mappings
for the main memory, module and vmalloc mappings.

What we don't do is mark DMA memory ask being normal uncached memory,
thereby allowing that to be reordered with device accesses - we make
it strongly ordered.  The reason being that the kernel doesn't have
barriers necessary to ensure that writes to DMA memory hit physical
memory before the device access to enable DMA hits the DMA controller.

Those kinds of bugs can be absolute hell to track down - think about
a DMA controller accessing an uninitialised DMA descriptor, resulting
in it scribbing over random bits of memory.

The only real way to do this is to audit lots of drivers to ensure
that:

1. DMA is not started until accesses to memory allocated by
   dma_alloc_coherent() have hit memory
2. accesses to dma_alloc_coherent() memory always read current data, even
   if the DMA controller has just updated the descriptor you're reading.

Linux presently - and quite rightly - assumes that accesses to DMA
coherent memory _are_ coherent with DMA.  If not, the API would be
a joke.

-------------------------------------------------------------------
List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
FAQ:        http://www.arm.linux.org.uk/mailinglists/faq.php
Etiquette:  http://www.arm.linux.org.uk/mailinglists/etiquette.php

  reply	other threads:[~2008-08-07  7:30 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-04 23:40 [PATCH] ARM MMU: add strongly-ordered memory type Paul Walmsley
2008-08-05 11:49 ` Ben Dooks
2008-08-05 12:15   ` Woodruff, Richard
2008-08-06 10:20     ` Catalin Marinas
2008-08-06 12:28       ` Woodruff, Richard
2008-08-07 16:55         ` Catalin Marinas
2008-08-07  6:01       ` Paul Walmsley
2008-08-07 16:45         ` Catalin Marinas
2008-08-08  8:45           ` Paul Walmsley
2008-08-06  9:53 ` Catalin Marinas
2008-08-06 12:21   ` Woodruff, Richard
2008-08-07  7:30     ` Russell King - ARM Linux [this message]
2008-08-07 16:01       ` Catalin Marinas
2008-08-07 18:56       ` Woodruff, Richard
2008-08-07 19:25         ` Russell King - ARM Linux
2008-08-07 20:38           ` Woodruff, Richard
2008-08-07 21:20             ` Russell King - ARM Linux
2008-08-07 21:59               ` Russell King - ARM Linux
2008-08-07 23:07               ` Woodruff, Richard
2008-08-08  7:16                 ` Russell King - ARM Linux
2008-08-08 11:44               ` Catalin Marinas
2008-08-08 13:19                 ` Russell King - ARM Linux
2008-08-08 16:40                   ` Catalin Marinas
2008-08-11  7:50                 ` Paul Walmsley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080807073035.GA10255@flint.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --cc=linux-arm-kernel@lists.arm.linux.org.uk \
    --cc=linux-omap@vger.kernel.org \
    --cc=r-woodruff2@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox