<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<p style="font-family:Arial;font-size:10pt;color:#0000FF;margin:5pt;" align="Left">
[AMD Official Use Only - General]<br>
</p>
<br>
<div>
<div class="elementToProof" style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Sorry for the messed up mail. We currently have mail problems here at AMD.</span></div>
<div id="appendonsend"></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Von:</b> Oleksii Moisieiev <Oleksii_Moisieiev@epam.com><br>
<b>Gesendet:</b> Montag, 2. Januar 2023 14:41<br>
<b>An:</b> jgross@suse.com <jgross@suse.com><br>
<b>Cc:</b> Oleksii Moisieiev <Oleksii_Moisieiev@epam.com>; Stefano Stabellini <sstabellini@kernel.org>; Oleksandr Tyshchenko <Oleksandr_Tyshchenko@epam.com>; xen-devel@lists.xenproject.org <xen-devel@lists.xenproject.org>; linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>;
 Sumit Semwal <sumit.semwal@linaro.org>; Koenig, Christian <Christian.Koenig@amd.com>; linux-media@vger.kernel.org <linux-media@vger.kernel.org>; dri-devel@lists.freedesktop.org <dri-devel@lists.freedesktop.org>; linaro-mm-sig@lists.linaro.org <linaro-mm-sig@lists.linaro.org><br>
<b>Betreff:</b> [PATCH v1 0/3] Add ioctls to map grant refs on the external backing storage</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText elementToProof">Hello,<br>
<br>
Let me introduce the new ioctls, which are intended to allow gntdev to<br>
map scatter-gather table on top of the existing dmabuf, referenced by<br>
file descriptor.<br>
<br>
When using dma-buf exporter to create dma-buf with backing storage and<br>
map it to the grant refs, provided from the domain, we've met a problem,<br>
that several HW (i.MX8 gpu in our case) do not support external buffer<br>
and requires backing storage to be created using it's native tools.<br>
That's why new ioctls were added to be able to pass existing dma-buffer<br>
fd as input parameter and use it as backing storage to export to refs.</div>
<div class="PlainText elementToProof"><br>
</div>
<div class="PlainText elementToProof">This is a pretty big NAK from my side to this approach.</div>
<div class="PlainText elementToProof"><br>
</div>
<div class="PlainText elementToProof">If you need to replace a file descriptor number local to your process then you can simply use dup2() from userspace.</div>
<div class="PlainText elementToProof"><br>
</div>
<div class="PlainText elementToProof">If your intention here is to replace the backing store of the fd on all processes which currently have it open then please just completely forget that. This will *NEVER* ever work correctly.</div>
<div class="PlainText elementToProof"><br>
</div>
<div class="PlainText elementToProof">Regards,</div>
<div class="PlainText elementToProof">Christian.</div>
<div class="PlainText elementToProof"><br>
Following calls were added:<br>
IOCTL_GNTDEV_DMABUF_MAP_REFS_TO_BUF - map existing buffer as the backing<br>
storage and export it to the provided grant refs;<br>
IOCTL_GNTDEV_DMABUF_MAP_RELEASE - detach buffer from the grant table and<br>
set notification to unmap grant refs before releasing the external<br>
buffer. After this call the external buffer should be detroyed.<br>
IOCTL_GNTDEV_DMABUF_MAP_WAIT_RELEASED - wait for timeout until buffer is<br>
completely destroyed and gnt refs unmapped so domain could free grant<br>
pages. Should be called after buffer was destoyed.<br>
<br>
Our setup is based on IMX8QM board. We're trying to implement zero-copy<br>
support for DomU graphics using Wayland zwp_linux_dmabuf_v1_interface<br>
implementation.<br>
<br>
For dma-buf exporter we used i.MX8 gpu native tools to create backing<br>
storage grant-refs, received from DomU. Buffer for the backing storage was<br>
allocated using gbm_bo_create call because gpu do not support external<br>
buffer and requires backing storage to be created using it's native tools<br>
(eglCreateImageKHR returns EGL_NO_IMAGE_KHR for buffers, which were not<br>
created using gbm_bo_create).<br>
<br>
This behaviour was also tested on Qemu setup using<br>
DRM_IOCTL_MODE_CREATE_DUMB call to create backing storage buffer.<br>
<br>
---<br>
Oleksii Moisieiev (3):<br>
  xen/grant-table: save page_count on map and use if during async<br>
    unmapping<br>
  dma-buf: add dma buffer release notifier callback<br>
  xen/grant-table: add new ioctls to map dmabuf to existing fd<br>
<br>
 drivers/dma-buf/dma-buf.c   |  44 ++++<br>
 drivers/xen/gntdev-common.h |   8 +-<br>
 drivers/xen/gntdev-dmabuf.c | 416 +++++++++++++++++++++++++++++++++++-<br>
 drivers/xen/gntdev-dmabuf.h |   7 +<br>
 drivers/xen/gntdev.c        | 101 ++++++++-<br>
 drivers/xen/grant-table.c   |  73 +++++--<br>
 include/linux/dma-buf.h     |  15 ++<br>
 include/uapi/xen/gntdev.h   |  62 ++++++<br>
 include/xen/grant_table.h   |   8 +<br>
 9 files changed, 703 insertions(+), 31 deletions(-)<br>
<br>
-- <br>
2.25.1<br>
</div>
</span></font></div>
</div>
</body>
</html>