Hey
On Mon, Mar 21, 2016 at 6:14 PM, Daniel Vetter daniel@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@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@chris-wilson.co.uk Cc: Tiago Vignatti tiago.vignatti@intel.com Cc: Stéphane Marchesin marcheu@chromium.org Cc: David Herrmann dh.herrmann@gmail.com Cc: Sumit Semwal sumit.semwal@linaro.org Cc: Daniel Vetter daniel.vetter@intel.com CC: linux-media@vger.kernel.org Cc: dri-devel@lists.freedesktop.org Cc: linaro-mm-sig@lists.linaro.org Cc: intel-gfx@lists.freedesktop.org Cc: devel@driverdev.osuosl.org Cc: Hans Verkuil hverkuil@xs4all.nl Acked-by: Sumit Semwal sumit.semwal@linaro.org Signed-off-by: Daniel Vetter daniel.vetter@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