All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tim Nordell <tim.nordell@logicpd.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: <linux-media@vger.kernel.org>, Sakari Ailus <sakari.ailus@iki.fi>
Subject: Re: [PATCH v2 25/26] omap3isp: Move to videobuf2
Date: Wed, 18 Mar 2015 15:58:07 -0500	[thread overview]
Message-ID: <5509E6DF.4080900@logicpd.com> (raw)
In-Reply-To: <5509D6BC.6080006@logicpd.com>

Laurent -

On 03/18/15 14:49, Tim Nordell wrote:
> Digging through to find who is responsible for assigning the virtual
> addresses, I find that it's buried inside
> arch/arm/mm/dma-mapping.c:__alloc_iova(...).  This call is called
> individually for each entry in the scatter-gather table via
> __map_sg_chunk from iommu_map_sg(...).  If this is supposed to allocate
> a contiguous virtual memory region, it seems that __iommu_map_sg(...)
> should be considering the full buffer range rather than parts of the
> buffer at a time for the virtual allocation, similar to how
> __iommu_create_mapping(...) works in the same file.
>
> - Tim
>

I've confirmed that this code is the culprit for allocating a 
non-contiguous space (called via the dma_map_sg_attrs(...) back down in 
the videobuf2-dma-contig).  I've reworked it for testing so that it does 
an __alloc_iova(...) on the entire region rather than a chunk at a time, 
however, I don't think what I have locally is completely the right 
approach for the generic case since I think technically a given entry in 
the scatterlist could end up with the end of a page partially used (the 
per list entry ->offset and such).

Looks like code (the specific functions in mm/dma-mapping.c) in question 
was last touched in 2012 with a quick git-blame, but I don't know how 
long the OMAP 3 ISP code has been using this common code.  I'm guessing 
it's only been since the virtual memory manager internal to the IOMMU 
code was removed in July of last year.

Do you know if this common code is supposed to guarantee a physically 
contiguous memory region?  The documentation for the function doesn't 
indicate that it should, and it certainly doesn't as-is.  It seems like 
hitting this issue is highly dependent on the size of the buffer one is 
allocating.

- Tim


  reply	other threads:[~2015-03-18 20:58 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-21 12:28 [PATCH v2 00/26] OMAP3 ISP: Move to videobuf2 Laurent Pinchart
2014-04-21 12:28 ` [PATCH v2 01/26] omap3isp: stat: Rename IS_COHERENT_BUF to ISP_STAT_USES_DMAENGINE Laurent Pinchart
2014-04-30 22:45   ` Sakari Ailus
2014-04-30 22:48     ` Laurent Pinchart
2014-05-01 11:15       ` Sakari Ailus
2014-05-01 16:08         ` Laurent Pinchart
2014-04-21 12:28 ` [PATCH v2 02/26] omap3isp: stat: Remove impossible WARN_ON Laurent Pinchart
2014-04-21 12:28 ` [PATCH v2 03/26] omap3isp: stat: Share common code for buffer allocation Laurent Pinchart
2014-04-21 12:28 ` [PATCH v2 04/26] omap3isp: stat: Merge dma_addr and iommu_addr fields Laurent Pinchart
2014-04-21 12:28 ` [PATCH v2 05/26] omap3isp: stat: Store sg table in ispstat_buffer Laurent Pinchart
2014-04-21 12:28 ` [PATCH v2 06/26] omap3isp: stat: Use the DMA API Laurent Pinchart
2014-04-21 12:28 ` [PATCH v2 07/26] omap3isp: ccdc: Use the DMA API for LSC Laurent Pinchart
2014-04-21 12:28 ` [PATCH v2 08/26] omap3isp: ccdc: Use the DMA API for FPC Laurent Pinchart
2014-04-21 12:28 ` [PATCH v2 09/26] omap3isp: video: Set the buffer bytesused field at completion time Laurent Pinchart
2014-04-21 12:28 ` [PATCH v2 10/26] omap3isp: queue: Move IOMMU handling code to the queue Laurent Pinchart
2014-04-21 12:28 ` [PATCH v2 11/26] omap3isp: queue: Use sg_table structure Laurent Pinchart
2014-04-21 12:28 ` [PATCH v2 12/26] omap3isp: queue: Merge the prepare and sglist functions Laurent Pinchart
2014-04-21 12:28 ` [PATCH v2 13/26] omap3isp: queue: Inline the ispmmu_v(un)map functions Laurent Pinchart
2014-04-21 12:29 ` [PATCH v2 14/26] omap3isp: queue: Allocate kernel buffers with dma_alloc_coherent Laurent Pinchart
2014-04-21 12:29 ` [PATCH v2 15/26] omap3isp: queue: Fix the dma_map_sg() return value check Laurent Pinchart
2014-04-21 12:29 ` [PATCH v2 16/26] omap3isp: queue: Map PFNMAP buffers to device Laurent Pinchart
2014-04-21 12:29 ` [PATCH v2 17/26] omap3isp: queue: Use sg_alloc_table_from_pages() Laurent Pinchart
2014-04-21 12:29 ` [PATCH v2 18/26] omap3isp: Use the ARM DMA IOMMU-aware operations Laurent Pinchart
2014-04-21 12:29 ` [PATCH v2 19/26] omap3isp: queue: Don't build scatterlist for kernel buffer Laurent Pinchart
2014-04-21 12:29 ` [PATCH v2 20/26] omap3isp: Move queue mutex to isp_video structure Laurent Pinchart
2014-04-21 12:29 ` [PATCH v2 21/26] omap3isp: Move queue irqlock " Laurent Pinchart
2014-04-21 12:29 ` [PATCH v2 22/26] omap3isp: Move buffer irqlist to isp_buffer structure Laurent Pinchart
2014-04-21 12:29 ` [PATCH v2 23/26] omap3isp: Cancel all queued buffers when stopping the video stream Laurent Pinchart
2014-04-21 12:29 ` [PATCH v2 24/26] v4l: vb2: Add a function to discard all DONE buffers Laurent Pinchart
2014-04-21 12:29 ` [PATCH v2 25/26] omap3isp: Move to videobuf2 Laurent Pinchart
2015-03-17 22:57   ` Tim Nordell
2015-03-18 12:39     ` Laurent Pinchart
2015-03-18 14:54       ` Tim Nordell
2015-03-18 14:59         ` Laurent Pinchart
2015-03-18 15:19           ` Tim Nordell
2015-03-18 15:21             ` Laurent Pinchart
2015-03-18 19:49               ` Tim Nordell
2015-03-18 20:58                 ` Tim Nordell [this message]
2015-03-18 21:44                   ` Sakari Ailus
2015-03-18 22:43                     ` Tim Nordell
2015-03-18 22:43                       ` Tim Nordell
2014-04-21 12:29 ` [PATCH v2 26/26] omap3isp: Rename isp_buffer isp_addr field to dma Laurent Pinchart
2014-05-01 17:37 ` [PATCH v2 00/26] OMAP3 ISP: Move to videobuf2 Sakari Ailus

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=5509E6DF.4080900@logicpd.com \
    --to=tim.nordell@logicpd.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=sakari.ailus@iki.fi \
    /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.