linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Christophe Leroy <christophe.leroy@c-s.fr>
Cc: Christian Lamparter <chunkeey@gmail.com>,
	Paul Mackerras <paulus@samba.org>,
	linuxppc-dev@lists.ozlabs.org, Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH 2/8] powerpc/dma: properly wire up the unmap_page and unmap_sg methods
Date: Mon, 17 Dec 2018 08:34:34 +0100	[thread overview]
Message-ID: <20181217073434.GC1933@lst.de> (raw)
In-Reply-To: <ea83ba21-feee-9776-ab0a-5bc78b237e4c@c-s.fr>

On Mon, Dec 17, 2018 at 07:41:54AM +0100, Christophe Leroy wrote:
>
>
> Le 16/12/2018 à 18:19, Christoph Hellwig a écrit :
>> The unmap methods need to transfer memory ownership back from the device
>> to the cpu by identical means as dma_sync_*_to_cpu.  I'm not sure powerpc
>> needs to do any work in this transfer direction, but given that it does
>> invalidate the caches in dma_sync_*_to_cpu already we should make sure
>> we also do so on unmapping.
>
> Why do we have to do that on unmapping ? If we are unmapping it means we 
> are retiring the area, so why would we need to use CPU for syncing an area 
> than won't be used anymore ?

So in general we need the cache maintaince only at map time if the CPUs
gurantee to never ѕpeculate into memory that might be under DMA, which
for modern CPUs is increasingly rate.  If the CPUs could speculate into
the area that was DMA mapped we need to do another round of cache
maintainance on unmap to make sure we really do not have any data
in the cache.  powerpc currently does that for dma_sync_*_to_cpu, but
not for the unmap case, which not only looks odd but also seems to be
worked around in drivers (see the ppc44x crypto patch).

Note that there are some way to optimize the amount of cache flushing
done even when the cpu speculates, see:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arc/mm/dma.c#n93

But for that I need help with people that actually understand the
non-coherent powerpc SOCs and who can test it.  For now this patch
is conservative.

  reply	other threads:[~2018-12-17  7:36 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-16 17:19 small powerpc DMA fixes and cleanups Christoph Hellwig
2018-12-16 17:19 ` [PATCH 1/8] powerpc: allow NOT_COHERENT_CACHE for amigaone Christoph Hellwig
2018-12-22  9:54   ` [1/8] " Michael Ellerman
2018-12-16 17:19 ` [PATCH 2/8] powerpc/dma: properly wire up the unmap_page and unmap_sg methods Christoph Hellwig
2018-12-17  6:41   ` Christophe Leroy
2018-12-17  7:34     ` Christoph Hellwig [this message]
2018-12-17  7:39       ` Christophe Leroy
2018-12-17  8:16         ` Christoph Hellwig
2018-12-17 11:37   ` Michael Ellerman
2018-12-16 17:19 ` [PATCH 3/8] crypto4xx_core: don't abuse __dma_sync_page Christoph Hellwig
2018-12-16 18:28   ` Christian Lamparter
2018-12-17  7:27     ` Christoph Hellwig
2018-12-19 10:13   ` Christian Lamparter
2018-12-16 17:19 ` [PATCH 4/8] powerpc/dma: remove the unused ARCH_HAS_DMA_MMAP_COHERENT define Christoph Hellwig
2018-12-16 17:19 ` [PATCH 5/8] powerpc/dma: remove the unused ISA_DMA_THRESHOLD export Christoph Hellwig
2018-12-16 17:19 ` [PATCH 6/8] powerpc/dma: remove the unused dma_iommu_ops export Christoph Hellwig
2018-12-16 17:19 ` [PATCH 7/8] powerpc/dma: split the two __dma_alloc_coherent implementations Christoph Hellwig
2018-12-17  6:51   ` Christophe Leroy
2018-12-17  7:35     ` Christoph Hellwig
2018-12-17 21:34       ` Gerhard Pircher
2018-12-16 17:19 ` [PATCH 8/8] cxl: drop the dma_set_mask callback from vphb Christoph Hellwig
2018-12-16 23:10   ` Andrew Donnellan

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=20181217073434.GC1933@lst.de \
    --to=hch@lst.de \
    --cc=christophe.leroy@c-s.fr \
    --cc=chunkeey@gmail.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=paulus@samba.org \
    /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;
as well as URLs for NNTP newsgroup(s).