All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Ming Lei <tom.leiming@gmail.com>
Cc: "Russell King - ARM Linux" <linux@arm.linux.org.uk>,
	Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Joerg Roedel <joerg.roedel@amd.com>,
	fujita.tomonori@lab.ntt.co.jp, linux-kernel@vger.kernel.org,
	akpm@linux-foundation.org,
	"linux-arm-kernel" <linux-arm-kernel@lists.arm.linux.org.uk>
Subject: Re: [PATCH][RFC] asm-generic:remove calling flush_write_buffers() in dma_sync_*_for_cpu
Date: Tue, 7 Jul 2009 16:06:48 +0200	[thread overview]
Message-ID: <200907071606.48933.arnd@arndb.de> (raw)
In-Reply-To: <d82e647a0907070643i198b9188q80203ab0408b4df8@mail.gmail.com>

On Tuesday 07 July 2009, Ming Lei wrote:
> > ARM has two (normal, and dma bounce), and in the long run we need to do
> 
> OK, Can we use dma-mapping-common.h on ARM?

It should work in principle. It may be a good idea to also move to
the generic swiotlb instead of the traditional dma bounce at the
same time.

Note that dma-mapping-common.h is only needed if you want to support
two or more different DMA implementations in a single kernel, which
I'm not sure is needed for ARM.

> > cache handling on unmap as well as map due to CPU speculative fetches.
> 
> IMHO, it seems we can fix this problem now.
> 
> For DMA_TO_DEVICE transfer, clean cache in dma map, but does nothing in
> dma unmap;
> 
> For  DMA_FROM_DEVICE, we may do nothing in dma map, but invaliate cache
> in dma unmap.

A number of other architectures do this already. You also need to
have dma_sync_*_for_cpu and dma_sync_*_for_device, where the *_for_device
operation needs to do the same flushing as dma_map_* and *_for_cpu
does the same as dma_unmap_*.

Note that actually you need to do writeback+invalidate in DMA_TO_DEVICE
and at least an invalidate in DMA_FROM_DEVICE during dma_map_*.
For the unmap, I don't think you ever need to invalidate the cache.
If you invalidate only at unmap time for DMA_FROM_DEVICE, a dirty
cache line might be accidentally flushed to the buffer after
the device has written to it.

	Arnd <><

  reply	other threads:[~2009-07-07 14:07 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-28 14:39 [PATCH][RFC] asm-generic:remove calling flush_write_buffers() in dma_sync_*_for_cpu tom.leiming
2009-06-28 15:34 ` Arnd Bergmann
2009-06-29 12:31   ` Joerg Roedel
2009-06-29 13:51     ` Ming Lei
2009-06-29 14:45       ` Joerg Roedel
2009-06-29 14:54         ` Ming Lei
2009-06-29 15:44           ` Joerg Roedel
2009-06-29 16:22     ` Arnd Bergmann
2009-06-29 16:31       ` Alan Cox
2009-06-29 16:45         ` Arnd Bergmann
2009-06-29 17:16           ` Alan Cox
2009-06-30 12:34             ` Arnd Bergmann
2009-06-30 12:40               ` Alan Cox
2009-06-30 12:48                 ` Arnd Bergmann
2009-06-30 13:09                   ` Alan Cox
2009-06-30 13:38                     ` Arnd Bergmann
2009-07-07  1:54                       ` Ming Lei
2009-07-07  7:48                         ` Russell King - ARM Linux
2009-07-07 13:43                           ` Ming Lei
2009-07-07 14:06                             ` Arnd Bergmann [this message]
2009-07-07 14:55                               ` Ming Lei
2009-07-07 15:30                                 ` Arnd Bergmann
2009-07-07 17:36                               ` Russell King - ARM Linux
2009-07-07 17:33                             ` Russell King - ARM Linux
2009-06-29 18:47           ` Joerg Roedel
2009-06-29 19:10             ` Alan Cox
2009-06-29 19:24               ` Joerg Roedel
2009-06-29 18:48       ` Joerg Roedel

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=200907071606.48933.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=fujita.tomonori@lab.ntt.co.jp \
    --cc=joerg.roedel@amd.com \
    --cc=linux-arm-kernel@lists.arm.linux.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=tom.leiming@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.