[PATCH] dma-buf: Update docs for SYNC ioctl
David Herrmann
dh.herrmann at gmail.com
Wed Mar 23 11:30:42 UTC 2016
Hey
On Mon, Mar 21, 2016 at 6:14 PM, Daniel Vetter <daniel at ffwll.ch> wrote:
> On Mon, Mar 21, 2016 at 01:26:58PM +0100, David Herrmann wrote:
>> Hi
>>
>> On Mon, Mar 21, 2016 at 8:51 AM, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
>> > Just a bit of wording polish plus mentioning that it can fail and must
>> > be restarted.
>> >
>> > Requested by Sumit.
>> >
>> > v2: Fix them typos (Hans).
>> >
>> > Cc: Chris Wilson <chris at chris-wilson.co.uk>
>> > Cc: Tiago Vignatti <tiago.vignatti at intel.com>
>> > Cc: Stéphane Marchesin <marcheu at chromium.org>
>> > Cc: David Herrmann <dh.herrmann at gmail.com>
>> > Cc: Sumit Semwal <sumit.semwal at linaro.org>
>> > Cc: Daniel Vetter <daniel.vetter at intel.com>
>> > CC: linux-media at vger.kernel.org
>> > Cc: dri-devel at lists.freedesktop.org
>> > Cc: linaro-mm-sig at lists.linaro.org
>> > Cc: intel-gfx at lists.freedesktop.org
>> > Cc: devel at driverdev.osuosl.org
>> > Cc: Hans Verkuil <hverkuil at xs4all.nl>
>> > Acked-by: Sumit Semwal <sumit.semwal at linaro.org>
>> > Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
>> > ---
>> > Documentation/dma-buf-sharing.txt | 11 ++++++-----
>> > drivers/dma-buf/dma-buf.c | 2 +-
>> > 2 files changed, 7 insertions(+), 6 deletions(-)
>> >
>> > diff --git a/Documentation/dma-buf-sharing.txt b/Documentation/dma-buf-sharing.txt
>> > index 32ac32e773e1..ca44c5820585 100644
>> > --- a/Documentation/dma-buf-sharing.txt
>> > +++ b/Documentation/dma-buf-sharing.txt
>> > @@ -352,7 +352,8 @@ Being able to mmap an export dma-buf buffer object has 2 main use-cases:
>> >
>> > No special interfaces, userspace simply calls mmap on the dma-buf fd, making
>> > sure that the cache synchronization ioctl (DMA_BUF_IOCTL_SYNC) is *always*
>> > - used when the access happens. This is discussed next paragraphs.
>> > + used when the access happens. Note that DMA_BUF_IOCTL_SYNC can fail with
>> > + -EAGAIN or -EINTR, in which case it must be restarted.
>>
>> What is "restart on EAGAIN" supposed to mean? Or more generally, what
>> does EAGAIN tell the caller?
>
> Do what drmIoctl does essentially.
>
> while (ret == -1 && (errno == EAGAIN || errno == EINTR)
> ret = ioctl();
>
> Typed from memery, too lazy to look it up in the source ;-) I'm trying to
> sell the idea of a real dma-buf manpage to Sumit, we should clarify this
> in detail there.
My question was rather about why we do this? Semantics for EINTR are
well defined, and with SA_RESTART (default on linux) user-space can
ignore it. However, looping on EAGAIN is very uncommon, and it is not
at all clear why it is needed?
Returning an error to user-space makes sense if user-space has a
reason to react to it. I fail to see how EAGAIN on a cache-flush/sync
operation helps user-space at all? As someone without insight into the
driver implementation, it is hard to tell why.. Any hints?
Thanks
David
More information about the dri-devel
mailing list