]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
[media] s5p-mfc: Set DMA_ATTR_ALLOC_SINGLE_PAGES
authorDouglas Anderson <dianders@chromium.org>
Wed, 16 Nov 2016 09:04:50 +0000 (07:04 -0200)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 30 Nov 2016 11:15:45 +0000 (09:15 -0200)
We do video allocation all the time and we need it to be fast.  Plus TLB
efficiency isn't terribly important for video.

That means we want to set DMA_ATTR_ALLOC_SINGLE_PAGES.

See also the previous change (commit 14d3ae2efeed "ARM: dma-mapping: Use
DMA_ATTR_ALLOC_SINGLE_PAGES hint to optimize allocation").

[m.szyprowski: rebased patch onto v4.9-rc1 and adapted changes
 to latest videbuf2 changes, this simplifies code changes to
 only set proper dma attribute flag and comment the reason
 for it, added commit id of arch/arm/mm patch]

Signed-off-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/platform/s5p-mfc/s5p_mfc.c

index 320124352e823e8389e49b5297a57a0d1ae23483..da735cda2882071d6f32bf3f16a69b25b2164c29 100644 (file)
@@ -851,6 +851,11 @@ static int s5p_mfc_open(struct file *file)
                ret = -ENOENT;
                goto err_queue_init;
        }
+       /*
+        * We'll do mostly sequential access, so sacrifice TLB efficiency for
+        * faster allocation.
+        */
+       q->dma_attrs = DMA_ATTR_ALLOC_SINGLE_PAGES;
        q->mem_ops = &vb2_dma_contig_memops;
        q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
        ret = vb2_queue_init(q);
@@ -881,6 +886,12 @@ static int s5p_mfc_open(struct file *file)
         * will keep the value of bytesused intact.
         */
        q->allow_zero_bytesused = 1;
+
+       /*
+        * We'll do mostly sequential access, so sacrifice TLB efficiency for
+        * faster allocation.
+        */
+       q->dma_attrs = DMA_ATTR_ALLOC_SINGLE_PAGES;
        q->mem_ops = &vb2_dma_contig_memops;
        q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
        ret = vb2_queue_init(q);