From: Christoph Hellwig <hch@infradead.org>
To: Tomasz Figa <tfiga@chromium.org>
Cc: Christoph Hellwig <hch@infradead.org>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
"Matwey V. Kornilov" <matwey@sai.msu.ru>,
Linux Media Mailing List <linux-media@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
"Matwey V. Kornilov" <matwey.kornilov@gmail.com>,
Alan Stern <stern@rowland.harvard.edu>,
Ezequiel Garcia <ezequiel@collabora.com>,
hdegoede@redhat.com, Hans Verkuil <hverkuil@xs4all.nl>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
rostedt@goodmis.org, mingo@redhat.com,
Mike Isely <isely@pobox.com>, Bhumika Goyal <bhumirks@gmail.com>,
Colin King <colin.king@canonical.com>,
Kieran Bingham <kieran.bingham@ideasonboard.com>,
keiichiw@chromium.org
Subject: Re: [PATCH v5 2/2] media: usb: pwc: Don't use coherent DMA buffers for ISO transfer
Date: Thu, 13 Dec 2018 06:03:29 -0800 [thread overview]
Message-ID: <20181213140329.GA25339@infradead.org> (raw)
In-Reply-To: <CAAFQd5C4RbMxRP+ox+BDuApMusTD=WUD9Vs6aWL3u=HovuWUig@mail.gmail.com>
On Thu, Dec 13, 2018 at 12:13:29PM +0900, Tomasz Figa wrote:
> Putting aside the problem of memory without struct page, one thing to
> note here that what is a contiguous DMA range for device X, may not be
> mappable contiguously for device Y and it would still need something
> like a scatter list to fully describe the buffer.
I think we need to define contiguous here.
If the buffer always is physically contiguous, as it is in the currently
posted series, we can always map it with a single dma_map_single call
(if the hardware can handle that in a single segment is a different
question, but out of scope here).
If on the other hand we have multiple discontiguous physical address
range that are mapped using the iommu and vmap this interface doesn't
work anyway.
But in that case you should just do multiple allocations and then use
dma_map_sg coalescing on the hardware side, and vmap [1] if really
needed. I guess for this we want to gurantee that dma_alloc_attrs
with the DMA_ATTR_NON_CONSISTENT allows virt_to_page to be used on
the return value, which the currently posted implementation does,
although I'm a it reluctant about the API guarantee.
> Do we already have a structure that would work for this purposes? I'd
> assume that we need something like the existing scatterlist but with
> page links replaced with something that doesn't require the memory to
> have struct page, possibly just PFN?
The problem is that just the PFN / physical address isn't enough for
most use cases as you also need a kernel virtual address. But moving
struct scatterlist to store a pfn instead of a struct page would be
pretty nice for various reasons anyway.
>
> >
> > It would also be great to use that opportunity to get rid of all the
> > code duplication of almost the same dmabug provides backed by the
> > DMA API.
>
> Could you sched some more light on this? I'm curious what is the code
> duplication you're referring to.
It seems like a lot of the dmabuf ops are just slight various of
dma_alloc + dma_get_sttable + dma_map_sg / dma_unmap_sg. There must be
a void to not duplicate that over and over.
[1] and use invalidate_kernel_vmap_range and flush_kernel_vmap_range
to manually take care of cache flushing.
next prev parent reply other threads:[~2018-12-13 14:03 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-21 17:06 [PATCH v5 0/2] media: usb: pwc: Don't use coherent DMA buffers for ISO transfer Matwey V. Kornilov
2018-08-21 17:06 ` [PATCH v5 1/2] media: usb: pwc: Introduce TRACE_EVENTs for pwc_isoc_handler() Matwey V. Kornilov
2018-08-21 19:49 ` Steven Rostedt
2018-08-21 17:06 ` [PATCH v5 2/2] media: usb: pwc: Don't use coherent DMA buffers for ISO transfer Matwey V. Kornilov
2018-08-28 7:17 ` Matwey V. Kornilov
2018-09-11 18:58 ` Matwey V. Kornilov
2018-09-19 16:12 ` Ezequiel Garcia
2018-10-10 21:13 ` Matwey V. Kornilov
2018-10-30 22:00 ` Laurent Pinchart
2018-10-31 5:38 ` Christoph Hellwig
2018-12-07 15:25 ` Christoph Hellwig
2018-12-12 8:57 ` Tomasz Figa
2018-12-12 9:09 ` Christoph Hellwig
2018-12-12 9:34 ` Tomasz Figa
2018-12-12 13:54 ` Christoph Hellwig
2018-12-13 3:13 ` Tomasz Figa
2018-12-13 14:03 ` Christoph Hellwig [this message]
2018-12-14 3:12 ` Tomasz Figa
2018-12-14 12:36 ` Christoph Hellwig
2018-12-18 7:22 ` Tomasz Figa
2018-12-18 7:38 ` Christoph Hellwig
2018-12-18 9:48 ` Tomasz Figa
2018-12-19 7:51 ` Christoph Hellwig
2018-12-19 8:18 ` Tomasz Figa
2018-12-19 14:51 ` Christoph Hellwig
2018-12-20 3:23 ` Tomasz Figa
2018-12-21 8:13 ` Christoph Hellwig
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=20181213140329.GA25339@infradead.org \
--to=hch@infradead.org \
--cc=bhumirks@gmail.com \
--cc=colin.king@canonical.com \
--cc=ezequiel@collabora.com \
--cc=hdegoede@redhat.com \
--cc=hverkuil@xs4all.nl \
--cc=isely@pobox.com \
--cc=keiichiw@chromium.org \
--cc=kieran.bingham@ideasonboard.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=matwey.kornilov@gmail.com \
--cc=matwey@sai.msu.ru \
--cc=mchehab@kernel.org \
--cc=mingo@redhat.com \
--cc=rostedt@goodmis.org \
--cc=stern@rowland.harvard.edu \
--cc=tfiga@chromium.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