From: Kazunori Kobayashi <kkobayas@igel.co.jp>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: linux-media@vger.kernel.org, Damian Hobson-Garcia <dhobsong@igel.co.jp>
Subject: Memory freeing when dmabuf fds are exported with VIDIOC_EXPBUF
Date: Wed, 27 Jul 2016 16:51:47 +0900 [thread overview]
Message-ID: <36bf3ef2-e43a-3910-16e2-b51439be5622@igel.co.jp> (raw)
Hi,
I have a question about memory freeing by calling REQBUF(0) before all the
dmabuf fds exported with VIDIOC_EXPBUF are closed.
In calling REQBUF(0), videobuf2-core returns -EBUSY when the reference count
of a vb2 buffer is more than 1. When dmabuf fds are not exported (usual V4L2_MEMORY_MMAP case),
the check is no problem, but when dmabuf fds are exported and some of them are
not closed (in other words the references to that memory are left),
we cannot succeed in calling REQBUF(0) despite being able to free the memory
after all the references are dropped.
Actually REQBUF(0) does not force a vb2 buffer to be freed but decreases
the refcount of it. Also all the vb2 memory allocators that support dmabuf exporting
(dma-contig, dma-sg, vmalloc) implements memory freeing by release() of dma_buf_ops,
so I think there is no need to return -EBUSY when exporting dmabuf fds.
Could you please tell me what you think?
The code that I am talking about is in drivers/media/v4l2-core/videobuf2-core.c:
if (*count == 0 || q->num_buffers != 0 || q->memory != memory) {
/*
* We already have buffers allocated, so first check if they
* are not in use and can be freed.
*/
mutex_lock(&q->mmap_lock);
if (q->memory == VB2_MEMORY_MMAP && __buffers_in_use(q)) {
mutex_unlock(&q->mmap_lock);
dprintk(1, "memory in use, cannot free\n");
return -EBUSY;
}
Regards,
Kobayashi
--
---------------------------------
IGEL Co.,Ltd. Kazunori Kobayashi
kkobayas@igel.co.jp
http://www.igel.co.jp/
next reply other threads:[~2016-07-27 7:51 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-27 7:51 Kazunori Kobayashi [this message]
2016-07-27 12:57 ` Memory freeing when dmabuf fds are exported with VIDIOC_EXPBUF Laurent Pinchart
2016-08-01 10:56 ` Hans Verkuil
2016-08-01 12:17 ` Laurent Pinchart
2016-08-01 12:27 ` Hans Verkuil
2016-08-01 13:49 ` Laurent Pinchart
2016-08-01 13:59 ` Hans Verkuil
2016-08-01 16:02 ` Laurent Pinchart
2016-08-01 16:16 ` Steven Toth
2016-08-01 16:56 ` Laurent Pinchart
2016-08-03 3:23 ` Damian Hobson-Garcia
2017-10-03 15:00 ` Nicolas Dufresne
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=36bf3ef2-e43a-3910-16e2-b51439be5622@igel.co.jp \
--to=kkobayas@igel.co.jp \
--cc=dhobsong@igel.co.jp \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.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