From patchwork Thu Aug 15 11:59:32 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 19746 Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.72) (envelope-from ) id 1V9wDX-0007rX-94; Thu, 15 Aug 2013 13:59:51 +0200 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.72/mailfrontend-8) with esmtp id 1V9wDV-0005gv-jM; Thu, 15 Aug 2013 13:59:51 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754847Ab3HOL71 (ORCPT + 1 other); Thu, 15 Aug 2013 07:59:27 -0400 Received: from mail-ee0-f50.google.com ([74.125.83.50]:43317 "EHLO mail-ee0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752717Ab3HOL7Z (ORCPT ); Thu, 15 Aug 2013 07:59:25 -0400 Received: by mail-ee0-f50.google.com with SMTP id d51so318862eek.37 for ; Thu, 15 Aug 2013 04:59:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=sender:date:from:to:cc:subject:message-id:mail-followup-to :references:mime-version:content-type:content-disposition :in-reply-to:user-agent; bh=TxqXv46HdRl15LW5D2hLIvA/qGVnoFBP+2/h5kQKrvw=; b=ll/LBWFtEprq2ILClCNHEeoS0yxODa4Va7AtzajL5E98xsMXl5Odx4KlT6sajWMJOV X4H0gdNTVAEKKSdp1iYrw6/WqhFy7t94sDh3l/X6N2V1ZnRBisVd197HpRlmFvjucl7E wpO2H0VMDz5hd/Vw2V5bYWecoY8jvAznfbqvo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-type :content-disposition:in-reply-to:user-agent; bh=TxqXv46HdRl15LW5D2hLIvA/qGVnoFBP+2/h5kQKrvw=; b=cKih+reLY0EF7/ExhNzGVTC8VhOpEZ4k9JqTaAW+8SCwcqsc+comHawobM8M4q2LlM 16Ls4zX4m/W4d9sUBWMKerB18cdiQbsUbpfsDqrkGHb8lnjYKqr4XgkHbUblO+MkqpDO d9hbdcIl6NXSs7BuWlxWXW5wH8a/rGU15JataCtm9XYxY5F3yzG7zpnhri1WfEzhMthN RZoFxzceuF06mOZObPXLlF6YNTH4W1TzQfpUE6nz3kLLDwGz44YZmRD83MzCOpppa43Y fySHPdT28tRRRnHYbM85dTWwwd30+LeOdAAwLSls/nLJ6AjoKvnIhmfsSbDQIsScLr4A wA2A== X-Gm-Message-State: ALoCoQnV18TPlUZiM0SVhz4o4xxLMOX9X9p5rwCVojyEWdJ7FlJ4HSfAar20Urq57d0HEMrPoRaW X-Received: by 10.15.107.132 with SMTP id cb4mr4459684eeb.54.1376567964268; Thu, 15 Aug 2013 04:59:24 -0700 (PDT) Received: from phenom.ffwll.local (178-83-130-250.dynamic.hispeed.ch. [178.83.130.250]) by mx.google.com with ESMTPSA id p5sm83906086eeg.5.2013.08.15.04.59.22 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Thu, 15 Aug 2013 04:59:23 -0700 (PDT) Date: Thu, 15 Aug 2013 13:59:32 +0200 From: Daniel Vetter To: Christopher James Halse Rogers Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, robclark@gmail.com, linux-media@vger.kernel.org Subject: Re: [PATCH] dma-buf: Expose buffer size to userspace Message-ID: <20130815115932.GC776@phenom.ffwll.local> Mail-Followup-To: Christopher James Halse Rogers , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, robclark@gmail.com, linux-media@vger.kernel.org References: <1375683720-4748-1-git-send-email-christopher.halse.rogers@canonical.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1375683720-4748-1-git-send-email-christopher.halse.rogers@canonical.com> X-Operating-System: Linux phenom 3.11.0-rc2+ User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 6.0.0.2142326, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2013.8.15.114830 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report=' MULTIPLE_RCPTS 0.1, HTML_00_01 0.05, HTML_00_10 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_2000_2999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, DKIM_SIGNATURE 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __BOUNCE_CHALLENGE_SUBJ 0, __BOUNCE_NDR_SUBJ_EXEMPT 0, __CD 0, __CP_URI_IN_BODY 0, __CT 0, __CT_TEXT_PLAIN 0, __FORWARDED_MSG 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_X_MAILING_LIST 0, __IN_REP_TO 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __MULTIPLE_RCPTS_CC_X2 0, __SANE_MSGID 0, __SUBJ_ALPHA_END 0, __SUBJ_ALPHA_NEGATE 0, __TO_MALFORMED_2 0, __URI_NO_WWW 0, __URI_NS , __USER_AGENT 0, __YOUTUBE_RCVD 0' On Mon, Aug 05, 2013 at 04:22:00PM +1000, Christopher James Halse Rogers wrote: > Each dma-buf has an associated size and it's reasonable for userspace > to want to know what it is. > > Since userspace already has an fd, expose the size using the > size = lseek(fd, SEEK_END, 0); lseek(fd, SEEK_CUR, 0); > idiom. > > Signed-off-by: Christopher James Halse Rogers Yeah, loosk good to me and rather useful, so (with the dma-buf docs improved as suggested below): Reviewed-by: Daniel Vetter I've also written some small prime tests in igt, so also: Tested-by: Daniel Vetter > --- > > I've run into a point in the radeon DRM userspace where I need the > size of a dma-buf. I could add a radeon-specific mechanism to get that, > but this seems like something that would be more generally useful. > > I'm not entirely sure about supporting both SEEK_END and SEEK_CUR; this > is somewhat of an abuse of lseek, as seeking obviously doesn't make sense. > It's the obivous idiom for getting the size of what's on the other end of a > file descriptor, though. > > I didn't notice anywhere to document this; Documentation/dma-buf-api didn't > seem like the right place. Is there somewhere I've overlooked? I think adding a section about various other userspace interfaces exposed below the mmap support section would be good. Feel free to squash in the belo diff for v2. Cheers, Daniel Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch --- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/Documentation/dma-buf-sharing.txt b/Documentation/dma-buf-sharing.txt index 0b23261..b3a8aa2 100644 --- a/Documentation/dma-buf-sharing.txt +++ b/Documentation/dma-buf-sharing.txt @@ -407,6 +407,18 @@ Being able to mmap an export dma-buf buffer object has 2 main use-cases: interesting ways depending upong the exporter (if userspace starts depending upon this implicit synchronization). +Other Interfaces Exposed to Userspace on the dma-buf FD +------------------------------------------------------ + +- Since kernel 3.12 the dma-buf FD supports the llseek system call, but only + with offset=0 and whence=SEEK_END|SEEK_SET. SEEK_SET is supported to allowe + the usual size discover pattern size = SEEK_END(0); SEEK_SET(0). Every other + llseek operation will report -EINVAL. + + If llseek on dma-buf FDs isn't support the kernel will report -ESPIPE for all + cases. Userspace can use this to detect support for discovering the dma-buf + size using llsee. + Miscellaneous notes ------------------- -- Daniel Vetter