From: Peter Stuge <peter@stuge.se>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Stefan Klug <stefan.klug@baslerweb.com>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH][RFC] USB: zerocopy support for usbfs
Date: Wed, 2 Jul 2014 21:42:22 +0200 [thread overview]
Message-ID: <20140702194222.11771.qmail@stuge.se> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1407021457320.874-100000@iolanthe.rowland.org>
Alan Stern wrote:
> > > Also, many host controllers cannot handle arbitrary alignment.
> > > It would be best to require that the buffer start at a page boundary.
> >
> > This requires a bit of negotiation with userspace, maybe per-URB but
>
> I don't follow. What negotiation is needed? All that needs to happen
> is the user program submits a transfer where the buffer is aligned on a
> page boundary.
The negotiation needed would be for userspace to learn what alignment
is required, so that it can make sure to provide only such buffers.
But see below on mmap..
> > it seems better to negotiate per-claim or even per-open. What about
> > large control transfers?
>
> The kernel doesn't support scatter-gather for control transfers, only
> bulk.
That could possibly change, right, and then it would be nice to have
zerocopy for free there as well?
> > It's important that the kernel gives userspace enough information
> > about the constraints, if userspace wants zerocopy.
>
> I don't know of any way for the kernel to give userspace any
> information about constraints of this sort. Do you?
I don't know of any at the moment, no. It might be done through an
ioctl into usbfs, but if sysfs already has all neccessary information
then no ioctl is needed. Anyway...
> > Indeed I think userspace wants to be involved in choosing memory also
> > with bulk, in order to ensure that zerocopy will always work when
> > userspace cares about that.
> >
> > Is it enough to expose the DMA mask of the host controller?
>
> It doesn't need to be exposed, since the mmap(2) call would be handled
> by the kernel's USB stack (and besides, the user program can't request
> that the mapped memory be located in any particular physical address
> region).
Since alignment isn't the only issue I don't think there's a way to
avoid it. I was just hoping to be able to avoid allocating zerocopy
buffers with mmap().
> Furthermore, the DMA mask already is exposed in sysfs.
> For example, the DMA mask for the host controller on bus 2 is
> given in /sys/bus/usb/devices/usb2/../dma_mask_bits.
I realize that this doesn't help much, since userspace can't get the
physical address for its virtual addresses anyway.
//Peter
next prev parent reply other threads:[~2014-07-02 19:42 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-02 15:53 Stefan Klug
2014-07-02 17:55 ` Greg KH
2014-07-03 7:06 ` Stefan Klug
2014-07-02 18:24 ` Alan Stern
2014-07-02 18:49 ` Peter Stuge
2014-07-02 19:31 ` Alan Stern
2014-07-02 19:42 ` Peter Stuge [this message]
2014-07-02 20:40 ` Alan Stern
2014-07-03 7:48 ` Stefan Klug
2014-07-03 8:40 ` David Laight
2014-07-03 14:15 ` Alan Stern
2014-07-02 18:58 ` Oliver Neukum
2014-07-02 19:38 ` Alan Stern
2014-07-03 8:22 ` Stefan Klug
2014-07-04 8:55 ` Oliver Neukum
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=20140702194222.11771.qmail@stuge.se \
--to=peter@stuge.se \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=stefan.klug@baslerweb.com \
--cc=stern@rowland.harvard.edu \
/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
all inboxes | Powered by JetHome®