From: Gerd Hoffmann <kraxel@suse.de>
To: David Moore <dcm@MIT.EDU>
Cc: Arjan van de Ven <arjan@infradead.org>,
Bill Davidsen <davidsen@tmr.com>,
theSeinfeld@users.sourceforge.net,
linux1394-devel@lists.sourceforge.net,
linux-kernel@vger.kernel.org,
libdc1394-devel@lists.sourceforge.net
Subject: Re: allocation failed: out of vmalloc space error treating and VIDEO1394 IOC LISTEN CHANNEL ioctl failed problem
Date: Tue, 16 Jan 2007 09:16:55 +0100 [thread overview]
Message-ID: <45AC89F7.6080306@suse.de> (raw)
In-Reply-To: <1168890881.10136.29.camel@pisces.mit.edu>
Hi,
> I think you've convinced me that vmalloc is not a good choice when a
> driver needs a large buffer (many megabytes) for DMA.
Yep. bttv used to do that long time ago, and some people used to run
into trouble because the nvidia driver used lots of vmalloc address
space ...
> In this case, we need a large ring buffer for reception of isochronous
> packets from a firewire device. If I understand you correctly, you are
> suggesting that this buffer be obtained as followed:
>
> 1. Application performs malloc() in user-space and mmap()s it.
> 2. Driver uses vmalloc_to_page() on every page of the malloc'ed memory
> and constructs a scatter-gather list.
> 3. Map the sg list with pci_map_sg().
> 4. Commence DMA.
video4linux drivers do this:
(1) app opens /dev/video0
(2) app issues some ioctls to set buffer count, format and size
(3) app uses mmap(/dev/video0) to map the buffers.
Buffer memory is simple userspace memory, it is allocated by the nopage
handler. Memory is pinned down by get_user_pages().
> Are there some other convenience
> functions that can be used?
Look at drivers/media/video/video-buf.c, that is the buffer management
code shared by v4l drivers. It should at least give an idea how it
works, not sure you can actually reuse the code. Chances are not too
bad though, it is used not only for video buffers, but also for audio
and mpeg2 data, so it could be generic enough to fit your needs too.
cheers,
Gerd
--
Gerd Hoffmann <kraxel@suse.de>
prev parent reply other threads:[~2007-01-16 8:17 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.59.1168027378.1221.libdc1394-devel@lists.sourceforge.net>
[not found] ` <200701100023.39964.theSeinfeld@users.sf.net>
2007-01-14 19:19 ` allocation failed: out of vmalloc space error treating and VIDEO1394 IOC LISTEN CHANNEL ioctl failed problem Stefan Richter
2007-01-14 19:28 ` Arjan van de Ven
2007-01-14 20:31 ` Stefan Richter
2007-01-14 20:48 ` Arjan van de Ven
2007-01-15 4:14 ` Peter Antoniac
2007-01-15 6:01 ` Peter Antoniac
2007-01-15 18:02 ` Bill Davidsen
2007-01-15 18:20 ` Arjan van de Ven
2007-01-15 19:54 ` David Moore
2007-01-15 21:06 ` Kristian Høgsberg
2007-01-15 21:24 ` Arjan van de Ven
2007-01-15 21:43 ` Kristian Høgsberg
2007-01-16 2:40 ` Peter Antoniac
2007-01-16 5:21 ` David Moore
2007-01-16 17:58 ` Arjan van de Ven
2007-01-16 8:16 ` Gerd Hoffmann [this message]
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=45AC89F7.6080306@suse.de \
--to=kraxel@suse.de \
--cc=arjan@infradead.org \
--cc=davidsen@tmr.com \
--cc=dcm@MIT.EDU \
--cc=libdc1394-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux1394-devel@lists.sourceforge.net \
--cc=theSeinfeld@users.sourceforge.net \
/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