dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Robin Murphy <robin.murphy@arm.com>
To: Greg KH <greg@kroah.com>
Cc: "Daniel Vetter" <daniel.vetter@ffwll.ch>,
	"Jason Ekstrand" <jason.ekstrand@collabora.com>,
	"Christian König" <christian.koenig@amd.com>,
	dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v4] dma-buf: Add a capabilities directory
Date: Mon, 6 Jun 2022 16:44:47 +0100	[thread overview]
Message-ID: <a52dcfdd-b88d-64da-4b39-c085b805d67c@arm.com> (raw)
In-Reply-To: <Yp4bmxFEBHwOlSf3@kroah.com>

On 2022-06-06 16:22, Greg KH wrote:
> On Mon, Jun 06, 2022 at 04:10:09PM +0100, Robin Murphy wrote:
>> On 2022-06-02 07:47, Daniel Vetter wrote:
>>> On Thu, 2 Jun 2022 at 08:34, Simon Ser <contact@emersion.fr> wrote:
>>>>
>>>> On Thursday, June 2nd, 2022 at 08:25, Greg KH <greg@kroah.com> wrote:
>>>>
>>>>> On Thu, Jun 02, 2022 at 06:17:31AM +0000, Simon Ser wrote:
>>>>>
>>>>>> On Thursday, June 2nd, 2022 at 07:40, Greg KH greg@kroah.com wrote:
>>>>>>
>>>>>>> On Wed, Jun 01, 2022 at 04:13:14PM +0000, Simon Ser wrote:
>>>>>>>
>>>>>>>> To discover support for new DMA-BUF IOCTLs, user-space has no
>>>>>>>> choice but to try to perform the IOCTL on an existing DMA-BUF.
>>>>>>>
>>>>>>> Which is correct and how all kernel features work (sorry I missed the
>>>>>>> main goal of this patch earlier and focused only on the sysfs stuff).
>>>>>>>
>>>>>>>> However, user-space may want to figure out whether or not the
>>>>>>>> IOCTL is available before it has a DMA-BUF at hand, e.g. at
>>>>>>>> initialization time in a Wayland compositor.
>>>>>>>
>>>>>>> Why not just do the ioctl in a test way? That's how we determine kernel
>>>>>>> features, we do not poke around in sysfs to determine what is, or is
>>>>>>> not, present at runtime.
>>>>>>>
>>>>>>>> Add a /sys/kernel/dmabuf/caps directory which allows the DMA-BUF
>>>>>>>> subsystem to advertise supported features. Add a
>>>>>>>> sync_file_import_export entry which indicates that importing and
>>>>>>>> exporting sync_files from/to DMA-BUFs is supported.
>>>>>>>
>>>>>>> No, sorry, this is not a sustainable thing to do for all kernel features
>>>>>>> over time. Please just do the ioctl and go from there. sysfs is not
>>>>>>> for advertising what is and is not enabled/present in a kernel with
>>>>>>> regards to functionality or capabilities of the system.
>>>>>>>
>>>>>>> If sysfs were to export this type of thing, it would have to do it for
>>>>>>> everything, not just some random tiny thing of one kernel driver.
>>>>>>
>>>>>> I'd argue that DMA-BUF is a special case here.
>>>>>
>>>>> So this is special and unique just like everything else? :)
>>>>>
>>>>>> To check whether the import/export IOCTLs are available, user-space
>>>>>> needs a DMA-BUF to try to perform the IOCTL. To get a DMA-BUF,
>>>>>> user-space needs to enumerate GPUs, pick one at random, load GBM or
>>>>>> Vulkan, use that heavy-weight API to allocate a "fake" buffer on the
>>>>>> GPU, export that buffer into a DMA-BUF, try the IOCTL, then teardown
>>>>>> all of this. There is no other way.
>>>>>>
>>>>>> This sounds like a roundabout way to answer the simple question "is the
>>>>>> IOCTL available?". Do you have another suggestion to address this
>>>>>> problem?
>>>>>
>>>>> What does userspace do differently if the ioctl is present or not?
>>>>
>>>> Globally enable a synchronization API for Wayland clients, for instance
>>>> in the case of a Wayland compositor.
>>>>
>>>>> And why is this somehow more special than of the tens of thousands of
>>>>> other ioctl calls where you have to do exactly the same thing you list
>>>>> above to determine if it is present or not?
>>>>
>>>> For other IOCTLs it's not as complicated to obtain a FD to do the test
>>>> with.
>>>
>>> Two expand on this:
>>>
>>> - compositor opens the drm render /dev node
>>> - compositor initializes the opengl or vulkan userspace driver on top of that
>>> - compositor asks that userspace driver to allocate some buffer, which
>>> can be pretty expensive
>>> - compositor asks the userspace driver to export that buffer into a dma-buf
>>> - compositor can finally do the test ioctl, realizes support isn't
>>> there and tosses the entire thing
>>>
>>> read() on a sysfs file is so much more reasonable it's not even funny.
>>
>> Just a drive-by observation, so apologies if I'm overlooking something
>> obvious, but it sounds like the ideal compromise would be to expose a sysfs
>> file which behaves as a dummy exported dma-buf. That way userspace could
>> just open() it and try ioctl() directly - assuming that supported operations
>> can fail distinctly from unsupported ones, or succeed as a no-op - which
>> seems even simpler still.
> 
> ioctl() will not work on a sysfs file, sorry.

Ah, fair enough - TBH I should have just said "a file", since I presume 
some sort of /dev/dma-buf might also be an option, if a bit more work to 
implement.

I'll scuttle back to my low-level DMA corner now :)

Cheers,
Robin.

  reply	other threads:[~2022-06-06 15:44 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-01 16:13 [PATCH v4] dma-buf: Add a capabilities directory Simon Ser
2022-06-01 16:51 ` Christian König
2022-06-01 18:05 ` Jason Ekstrand
2022-06-02  5:40 ` Greg KH
2022-06-02  6:17   ` Simon Ser
2022-06-02  6:25     ` Greg KH
2022-06-02  6:34       ` Simon Ser
2022-06-02  6:47         ` Daniel Vetter
2022-06-06 15:10           ` Robin Murphy
2022-06-06 15:22             ` Greg KH
2022-06-06 15:44               ` Robin Murphy [this message]
2022-06-07 10:36           ` Brian Starkey
2022-06-07 10:55           ` Greg KH
2022-06-07 14:52             ` Jason Ekstrand
2022-06-07 16:01               ` Greg KH
2022-06-08 15:15                 ` Daniel Vetter

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=a52dcfdd-b88d-64da-4b39-c085b805d67c@arm.com \
    --to=robin.murphy@arm.com \
    --cc=christian.koenig@amd.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=greg@kroah.com \
    --cc=jason.ekstrand@collabora.com \
    /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;
as well as URLs for NNTP newsgroup(s).