From: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: Tomasz Figa <tfiga@chromium.org>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Christoph Hellwig <hch@lst.de>,
Linux Media Mailing List <linux-media@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Sergey Senozhatsky <senozhatsky@chromium.org>,
Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Subject: Re: [PATCH 05/28] media/v4l2: remove V4L2-FLAG-MEMORY-NON-CONSISTENT
Date: Fri, 11 Sep 2020 00:38:02 +0900 [thread overview]
Message-ID: <20200910153802.GE97481@google.com> (raw)
In-Reply-To: <20200910144830.GD97481@google.com>
On (20/09/10 23:48), Sergey Senozhatsky wrote:
>
> I've a kernel patch (I think I got all the pieces). This is not a
> format submission yet, because I don't have v4l2-compliance patch
> yet, so didn't really test it.
>
I guess,,, the v4l-utils patch should look something like this:
====
From: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Subject: [PATCH] v4l-compliance: remove NON_CONSISTENT hint test
Kernel support for V4L2_FLAG_MEMORY_NON_CONSISTENT has been
reverted, so we need to to remove the memory consistency
(coherency) tests from the test-buffers code.
Note, the buffer cache management hints support is still there
and should be tested.
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
---
utils/common/cv4l-helpers.h | 8 ++---
utils/common/v4l-helpers.h | 8 ++---
utils/v4l2-compliance/v4l2-test-buffers.cpp | 40 ++-------------------
3 files changed, 9 insertions(+), 47 deletions(-)
diff --git a/utils/common/cv4l-helpers.h b/utils/common/cv4l-helpers.h
index 3cee372b..712efde6 100644
--- a/utils/common/cv4l-helpers.h
+++ b/utils/common/cv4l-helpers.h
@@ -754,17 +754,17 @@ public:
int g_fd(unsigned index, unsigned plane) const { return v4l_queue_g_fd(this, index, plane); }
void s_fd(unsigned index, unsigned plane, int fd) { v4l_queue_s_fd(this, index, plane, fd); }
- int reqbufs(cv4l_fd *fd, unsigned count = 0, unsigned int flags = 0)
+ int reqbufs(cv4l_fd *fd, unsigned count = 0)
{
- return v4l_queue_reqbufs(fd->g_v4l_fd(), this, count, flags);
+ return v4l_queue_reqbufs(fd->g_v4l_fd(), this, count);
}
bool has_create_bufs(cv4l_fd *fd) const
{
return v4l_queue_has_create_bufs(fd->g_v4l_fd(), this);
}
- int create_bufs(cv4l_fd *fd, unsigned count, const v4l2_format *fmt = NULL, unsigned int flags = 0)
+ int create_bufs(cv4l_fd *fd, unsigned count, const v4l2_format *fmt = NULL)
{
- return v4l_queue_create_bufs(fd->g_v4l_fd(), this, count, fmt, flags);
+ return v4l_queue_create_bufs(fd->g_v4l_fd(), this, count, fmt);
}
int mmap_bufs(cv4l_fd *fd, unsigned from = 0)
{
diff --git a/utils/common/v4l-helpers.h b/utils/common/v4l-helpers.h
index c09cd987..f96b3c38 100644
--- a/utils/common/v4l-helpers.h
+++ b/utils/common/v4l-helpers.h
@@ -1515,7 +1515,7 @@ static inline int v4l_queue_querybufs(struct v4l_fd *f, struct v4l_queue *q, uns
}
static inline int v4l_queue_reqbufs(struct v4l_fd *f,
- struct v4l_queue *q, unsigned count, unsigned int flags = 0)
+ struct v4l_queue *q, unsigned count)
{
struct v4l2_requestbuffers reqbufs;
int ret;
@@ -1523,7 +1523,6 @@ static inline int v4l_queue_reqbufs(struct v4l_fd *f,
reqbufs.type = q->type;
reqbufs.memory = q->memory;
reqbufs.count = count;
- reqbufs.flags = flags;
/*
* Problem: if REQBUFS returns an error, did it free any old
* buffers or not?
@@ -1548,7 +1547,7 @@ static inline bool v4l_queue_has_create_bufs(struct v4l_fd *f, const struct v4l_
static inline int v4l_queue_create_bufs(struct v4l_fd *f,
struct v4l_queue *q, unsigned count,
- const struct v4l2_format *fmt, unsigned int flags = 0)
+ const struct v4l2_format *fmt)
{
struct v4l2_create_buffers createbufs;
int ret;
@@ -1556,7 +1555,6 @@ static inline int v4l_queue_create_bufs(struct v4l_fd *f,
createbufs.format.type = q->type;
createbufs.memory = q->memory;
createbufs.count = count;
- createbufs.flags = flags;
if (fmt) {
createbufs.format = *fmt;
} else {
@@ -1735,7 +1733,7 @@ static inline void v4l_queue_free(struct v4l_fd *f, struct v4l_queue *q)
v4l_ioctl(f, VIDIOC_STREAMOFF, &q->type);
v4l_queue_release_bufs(f, q, 0);
v4l_queue_close_exported_fds(q);
- v4l_queue_reqbufs(f, q, 0, 0);
+ v4l_queue_reqbufs(f, q, 0);
}
static inline void v4l_queue_buffer_update(const struct v4l_queue *q,
diff --git a/utils/v4l2-compliance/v4l2-test-buffers.cpp b/utils/v4l2-compliance/v4l2-test-buffers.cpp
index aca0eb68..1651e95c 100644
--- a/utils/v4l2-compliance/v4l2-test-buffers.cpp
+++ b/utils/v4l2-compliance/v4l2-test-buffers.cpp
@@ -653,10 +653,6 @@ int testReqBufs(struct node *node)
fail_on_test(q.reqbufs(node, 0));
for (m = V4L2_MEMORY_MMAP; m <= V4L2_MEMORY_DMABUF; m++) {
- bool cache_hints_cap = false;
- bool consistent;
-
- cache_hints_cap = q.g_capabilities() & V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS;
if (!(node->valid_memorytype & (1 << m)))
continue;
cv4l_queue q2(i, m);
@@ -672,17 +668,8 @@ int testReqBufs(struct node *node)
reqbufs.count = 1;
reqbufs.type = i;
reqbufs.memory = m;
- reqbufs.flags = V4L2_FLAG_MEMORY_NON_CONSISTENT;
fail_on_test(doioctl(node, VIDIOC_REQBUFS, &reqbufs));
- consistent = reqbufs.flags & V4L2_FLAG_MEMORY_NON_CONSISTENT;
- if (!cache_hints_cap) {
- fail_on_test(consistent);
- } else {
- if (m == V4L2_MEMORY_MMAP)
- fail_on_test(!consistent);
- else
- fail_on_test(consistent);
- }
+ fail_on_test(check_0(reqbufs.reserved, sizeof(reqbufs.reserved)));
q.reqbufs(node);
ret = q.create_bufs(node, 0);
@@ -695,32 +682,9 @@ int testReqBufs(struct node *node)
node->g_fmt(crbufs.format, i);
crbufs.count = 1;
crbufs.memory = m;
- crbufs.flags = V4L2_FLAG_MEMORY_NON_CONSISTENT;
fail_on_test(doioctl(node, VIDIOC_CREATE_BUFS, &crbufs));
fail_on_test(check_0(crbufs.reserved, sizeof(crbufs.reserved)));
fail_on_test(crbufs.index != q.g_buffers());
-
- consistent = crbufs.flags & V4L2_FLAG_MEMORY_NON_CONSISTENT;
- if (!cache_hints_cap) {
- fail_on_test(consistent);
- } else {
- if (m == V4L2_MEMORY_MMAP)
- fail_on_test(!consistent);
- else
- fail_on_test(consistent);
- }
-
- if (cache_hints_cap) {
- /*
- * Different memory consistency model. Should fail for MMAP
- * queues which support cache hints.
- */
- crbufs.flags = 0;
- if (m == V4L2_MEMORY_MMAP)
- fail_on_test(doioctl(node, VIDIOC_CREATE_BUFS, &crbufs) != EINVAL);
- else
- fail_on_test(doioctl(node, VIDIOC_CREATE_BUFS, &crbufs));
- }
q.reqbufs(node);
fail_on_test(q.create_bufs(node, 1));
@@ -1352,7 +1316,7 @@ int testMmap(struct node *node, struct node *node_m2m_cap, unsigned frame_count,
have_createbufs = false;
if (have_createbufs) {
q.reqbufs(node);
- q.create_bufs(node, 2, &cur_fmt, V4L2_FLAG_MEMORY_NON_CONSISTENT);
+ q.create_bufs(node, 2, &cur_fmt);
fail_on_test(setupMmap(node, q));
q.munmap_bufs(node);
q.reqbufs(node, 2);
--
2.28.0
next prev parent reply other threads:[~2020-09-10 15:42 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20200819065610eucas1p2fde88e81917071b1888e7cc01ba0f298@eucas1p2.samsung.com>
2020-08-19 6:55 ` a saner API for allocating DMA addressable pages Christoph Hellwig
2020-08-19 6:55 ` [PATCH 01/28] mm: turn alloc_pages into an inline function Christoph Hellwig
2020-08-19 6:55 ` [PATCH 02/28] drm/exynos: stop setting DMA_ATTR_NON_CONSISTENT Christoph Hellwig
2020-08-19 6:55 ` [PATCH 03/28] drm/nouveau/gk20a: " Christoph Hellwig
2020-08-19 6:55 ` [PATCH 04/28] net/au1000-eth: stop using DMA_ATTR_NON_CONSISTENT Christoph Hellwig
2020-08-19 6:55 ` [PATCH 05/28] media/v4l2: remove V4L2-FLAG-MEMORY-NON-CONSISTENT Christoph Hellwig
2020-08-19 11:16 ` Tomasz Figa
2020-08-19 11:51 ` Robin Murphy
2020-08-19 12:49 ` Tomasz Figa
2020-08-19 13:57 ` Christoph Hellwig
2020-08-19 14:11 ` Tomasz Figa
2020-08-20 4:45 ` Christoph Hellwig
2020-08-20 10:09 ` Tomasz Figa
2020-08-20 16:51 ` Christoph Hellwig
2020-08-19 14:07 ` Robin Murphy
2020-08-19 14:22 ` Tomasz Figa
2020-08-20 4:52 ` Christoph Hellwig
2020-08-20 5:02 ` Christoph Hellwig
2020-08-20 10:24 ` Tomasz Figa
2020-08-20 16:52 ` Christoph Hellwig
2020-08-20 17:41 ` Tomasz Figa
2020-08-19 13:54 ` Christoph Hellwig
2020-08-19 13:57 ` Tomasz Figa
2020-08-20 4:43 ` Christoph Hellwig
2020-08-20 5:20 ` Christoph Hellwig
2020-08-20 10:05 ` Tomasz Figa
2020-08-20 16:54 ` Christoph Hellwig
2020-08-20 17:33 ` Tomasz Figa
2020-09-01 11:06 ` Christoph Hellwig
2020-09-01 15:02 ` Tomasz Figa
2020-09-08 21:58 ` Tomasz Figa
2020-09-08 22:09 ` Tomasz Figa
2020-09-10 9:49 ` Sergey Senozhatsky
2020-09-10 9:57 ` Hans Verkuil
2020-09-10 10:14 ` Sergey Senozhatsky
2020-09-10 10:23 ` Hans Verkuil
2020-09-10 14:48 ` Sergey Senozhatsky
2020-09-10 15:38 ` Sergey Senozhatsky [this message]
2020-08-19 6:55 ` [PATCH 06/28] lib82596: move DMA allocation into the callers of i82596_probe Christoph Hellwig
2020-09-01 13:29 ` Thomas Bogendoerfer
2020-08-19 6:55 ` [PATCH 07/28] 53c700: improve non-coherent DMA handling Christoph Hellwig
2020-09-01 14:52 ` James Bottomley
2020-09-01 15:05 ` Matthew Wilcox
2020-09-01 15:22 ` James Bottomley
2020-09-01 16:21 ` Helge Deller
2020-09-01 16:41 ` Helge Deller
2020-09-01 16:53 ` Matthew Wilcox
2020-09-02 15:00 ` Helge Deller
2020-08-19 6:55 ` [PATCH 08/28] MIPS: make dma_sync_*_for_cpu a little less overzealous Christoph Hellwig
2020-09-01 13:53 ` Thomas Bogendoerfer
2020-08-19 6:55 ` [PATCH 09/28] MIPS/jazzdma: remove the unused vdma_remap function Christoph Hellwig
2020-09-01 13:49 ` Thomas Bogendoerfer
2020-08-19 6:55 ` [PATCH 10/28] MIPS/jazzdma: decouple from dma-direct Christoph Hellwig
2020-09-01 13:49 ` Thomas Bogendoerfer
2020-08-19 6:55 ` [PATCH 11/28] dma-mapping: add (back) arch_dma_mark_clean for ia64 Christoph Hellwig
2020-08-19 6:55 ` [PATCH 12/28] dma-direct: remove dma_direct_{alloc,free}_pages Christoph Hellwig
2020-08-19 6:55 ` [PATCH 13/28] dma-direct: lift gfp_t manipulation out of__dma_direct_alloc_pages Christoph Hellwig
2020-08-19 6:55 ` [PATCH 14/28] dma-direct: use phys_to_dma_direct in dma_direct_alloc Christoph Hellwig
2020-08-19 6:55 ` [PATCH 15/28] dma-direct: remove __dma_to_phys Christoph Hellwig
2020-08-19 6:55 ` [PATCH 16/28] dma-direct: rename and cleanup __phys_to_dma Christoph Hellwig
2020-08-19 6:55 ` [PATCH 17/28] dma-mapping: move dma_common_{mmap,get_sgtable} out of mapping.c Christoph Hellwig
2020-08-19 6:55 ` [PATCH 18/28] dma-mapping: move the dma_declare_coherent_memory documentation Christoph Hellwig
2020-08-19 6:55 ` [PATCH 19/28] dma-mapping: replace DMA_ATTR_NON_CONSISTENT with dma_{alloc,free}_pages Christoph Hellwig
2020-08-19 15:03 ` [PATCH 19/28] dma-mapping: replace DMA_ATTR_NON_CONSISTENT with dma_{alloc, free}_pages Tomasz Figa
2020-08-20 5:15 ` Christoph Hellwig
2020-08-19 6:55 ` [PATCH 20/28] sgiwd93: convert from dma_cache_sync to dma_sync_single_for_device Christoph Hellwig
2020-08-19 6:55 ` [PATCH 21/28] hal2: " Christoph Hellwig
2020-08-19 6:55 ` [PATCH 22/28] sgiseeq: " Christoph Hellwig
2020-09-01 15:22 ` Thomas Bogendoerfer
2020-09-01 17:12 ` Thomas Bogendoerfer
2020-09-01 17:16 ` Christoph Hellwig
2020-09-01 17:38 ` Thomas Bogendoerfer
2020-09-02 21:38 ` Thomas Bogendoerfer
2020-09-03 8:42 ` Christoph Hellwig
2020-09-03 8:43 ` Christoph Hellwig
2020-09-03 8:46 ` Christoph Hellwig
2020-08-19 6:55 ` [PATCH 23/28] lib82596: " Christoph Hellwig
2020-08-19 6:55 ` [PATCH 24/28] 53c700: " Christoph Hellwig
2020-08-19 6:55 ` [PATCH 25/28] dma-mapping: remove dma_cache_sync Christoph Hellwig
2020-08-19 6:55 ` [PATCH 26/28] dmapool: add dma_alloc_pages support Christoph Hellwig
2020-08-19 6:55 ` [PATCH 27/28] nvme-pci: fix PRP pool size Christoph Hellwig
2020-08-19 6:55 ` [PATCH 28/28] nvme-pci: use dma_alloc_pages backed dmapools Christoph Hellwig
2020-08-25 11:30 ` a saner API for allocating DMA addressable pages Marek Szyprowski
2020-08-25 13:26 ` Christoph Hellwig
2020-08-29 9:46 ` Helge Deller
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=20200910153802.GE97481@google.com \
--to=sergey.senozhatsky.work@gmail.com \
--cc=hch@lst.de \
--cc=hverkuil@xs4all.nl \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=senozhatsky@chromium.org \
--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;
as well as URLs for NNTP newsgroup(s).