From: Maarten Lankhorst <maarten.lankhorst@canonical.com>
To: Inki Dae <inki.dae@samsung.com>
Cc: 'Rob Clark' <robdclark@gmail.com>,
'Daniel Vetter' <daniel@ffwll.ch>,
'DRI mailing list' <dri-devel@lists.freedesktop.org>,
linux-arm-kernel@lists.infradead.org,
linux-media@vger.kernel.org,
'linux-fbdev' <linux-fbdev@vger.kernel.org>,
'Kyungmin Park' <kyungmin.park@samsung.com>,
"'myungjoo.ham'" <myungjoo.ham@samsung.com>,
'YoungJun Cho' <yj44.cho@samsung.com>
Subject: Re: Introduce a new helper framework for buffer synchronization
Date: Mon, 13 May 2013 09:52:24 +0000 [thread overview]
Message-ID: <5190B7D8.3010803@canonical.com> (raw)
In-Reply-To: <025201ce4fbb$363d0390$a2b70ab0$%dae@samsung.com>
Op 13-05-13 11:21, Inki Dae schreef:
>
>> -----Original Message-----
>> From: Maarten Lankhorst [mailto:maarten.lankhorst@canonical.com]
>> Sent: Monday, May 13, 2013 5:01 PM
>> To: Inki Dae
>> Cc: Rob Clark; Daniel Vetter; DRI mailing list; linux-arm-
>> kernel@lists.infradead.org; linux-media@vger.kernel.org; linux-fbdev;
>> Kyungmin Park; myungjoo.ham; YoungJun Cho
>> Subject: Re: Introduce a new helper framework for buffer synchronization
>>
>> Op 09-05-13 09:33, Inki Dae schreef:
>>> Hi all,
>>>
>>> This post introduces a new helper framework based on dma fence. And the
>>> purpose of this post is to collect other opinions and advices before RFC
>>> posting.
>>>
>>> First of all, this helper framework, called fence helper, is in progress
>>> yet so might not have enough comments in codes and also might need to be
>>> more cleaned up. Moreover, we might be missing some parts of the dma
>> fence.
>>> However, I'd like to say that all things mentioned below has been tested
>>> with Linux platform and worked well.
>>> ....
>>>
>>> And tutorial for user process.
>>> just before cpu access
>>> struct dma_buf_fence *df;
>>>
>>> df->type = DMA_BUF_ACCESS_READ or DMA_BUF_ACCESS_WRITE;
>>> ioctl(fd, DMA_BUF_GET_FENCE, &df);
>>>
>>> after memset or memcpy
>>> ioctl(fd, DMA_BUF_PUT_FENCE, &df);
>> NAK.
>>
>> Userspace doesn't need to trigger fences. It can do a buffer idle wait,
>> and postpone submitting new commands until after it's done using the
>> buffer.
> Hi Maarten,
>
> It seems that you say user should wait for a buffer like KDS does: KDS uses
> select() to postpone submitting new commands. But I think this way assumes
> that every data flows a DMA device to a CPU. For example, a CPU should keep
> polling for the completion of a buffer access by a DMA device. This means
> that the this way isn't considered for data flow to opposite case; CPU to
> DMA device.
Not really. You do both things the same way. You first wait for the bo to be idle, this could be implemented by adding poll support to the dma-buf fd.
Then you either do your read or write. Since userspace is supposed to be the one controlling the bo it should stay idle at that point. If you have another thread queueing
the buffer againbefore your thread is done that's a bug in the application, and can be solved with userspace locking primitives. No need for the kernel to get involved.
>> Kernel space doesn't need the root hole you created by giving a
>> dereferencing a pointer passed from userspace.
>> Your next exercise should be to write a security exploit from the api you
>> created here. It's the only way to learn how to write safe code. Hint:
>> df.ctx = mmap(..);
>>
> Also I'm not clear to use our way yet and that is why I posted. As you
> mentioned, it seems like that using mmap() is more safe. But there is one
> issue it makes me confusing. For your hint, df.ctx = mmap(..), the issue is
> that dmabuf mmap can be used to map a dmabuf with user space. And the dmabuf
> means a physical memory region allocated by some allocator such as drm gem
> or ion.
>
> There might be my missing point so could you please give me more comments?
>
My point was that userspace could change df.ctx to some mmap'd memory, forcing the kernel to execute some code prepared by userspace.
next prev parent reply other threads:[~2013-05-13 9:52 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAAQKjZNNw4qddo6bE5OY_CahrqDtqkxdO7Pm9RCguXyj9F4cMQ@mail.gmail.com>
2013-05-13 8:00 ` Introduce a new helper framework for buffer synchronization Maarten Lankhorst
2013-05-13 9:21 ` Inki Dae
2013-05-13 9:52 ` Maarten Lankhorst [this message]
2013-05-13 11:24 ` Inki Dae
2013-05-13 11:40 ` Maarten Lankhorst
2013-05-13 19:29 ` Tomasz Figa
2013-05-13 12:21 ` Inki Dae
2013-05-13 13:48 ` Rob Clark
[not found] ` <CAAQKjZP=iOmHRpHZCbZD3v_RKUFSn0eM_WVZZvhe7F9g3eTmPA@mail.gmail.com>
2013-05-13 17:58 ` Rob Clark
2013-05-14 2:52 ` Inki Dae
2013-05-14 13:38 ` Rob Clark
2013-05-15 5:19 ` Inki Dae
2013-05-15 14:06 ` Rob Clark
2013-05-17 4:19 ` Daniel Vetter
[not found] ` <CAAQKjZP37koEPob6yqpn-WxxTh3+O=twyvRzDiEhVJTD8BxQzw@mail.gmail.com>
2013-05-20 21:13 ` Daniel Vetter
2013-05-20 21:30 ` Daniel Vetter
2013-05-21 7:03 ` Inki Dae
2013-05-21 7:44 ` Daniel Vetter
2013-05-21 9:22 ` Inki Dae
2013-05-23 11:55 ` Daniel Vetter
2013-05-23 13:37 ` Inki Dae
2013-05-27 10:38 ` Inki Dae
2013-05-27 15:23 ` Maarten Lankhorst
2013-05-27 15:47 ` Rob Clark
2013-05-27 16:02 ` Daniel Vetter
2013-05-28 2:49 ` Inki Dae
2013-05-28 7:23 ` Maarten Lankhorst
2013-05-28 3:56 ` Inki Dae
2013-05-28 10:32 ` Daniel Vetter
2013-05-28 13:48 ` Rob Clark
2013-05-28 4:04 ` Inki Dae
2013-05-28 14:43 ` Inki Dae
2013-05-28 14:50 ` Inki Dae
2013-05-28 16:49 ` Daniel Vetter
2013-05-29 2:21 ` Inki Dae
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=5190B7D8.3010803@canonical.com \
--to=maarten.lankhorst@canonical.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=inki.dae@samsung.com \
--cc=kyungmin.park@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=myungjoo.ham@samsung.com \
--cc=robdclark@gmail.com \
--cc=yj44.cho@samsung.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).