[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