Thread (33 messages) 33 messages, 9 authors, 2021-02-11

Re: [RFC PATCH v3 1/2] mempinfd: Add new syscall to provide memory pin

From: Zhou Wang <wangzhou1@hisilicon.com>
Date: 2021-02-09 12:21:14
Also in: linux-api, linux-iommu, linux-mm, lkml

On 2021/2/9 20:01, Greg KH wrote:
On Tue, Feb 09, 2021 at 07:58:15PM +0800, Zhou Wang wrote:
quoted
On 2021/2/9 17:37, Greg KH wrote:
quoted
On Tue, Feb 09, 2021 at 05:17:46PM +0800, Zhou Wang wrote:
quoted
On 2021/2/8 6:02, Andy Lutomirski wrote:
quoted
quoted
On Feb 7, 2021, at 12:31 AM, Zhou Wang [off-list ref] wrote:

SVA(share virtual address) offers a way for device to share process virtual
address space safely, which makes more convenient for user space device
driver coding. However, IO page faults may happen when doing DMA
operations. As the latency of IO page fault is relatively big, DMA
performance will be affected severely when there are IO page faults.
From a long term view, DMA performance will be not stable.

In high-performance I/O cases, accelerators might want to perform
I/O on a memory without IO page faults which can result in dramatically
increased latency. Current memory related APIs could not achieve this
requirement, e.g. mlock can only avoid memory to swap to backup device,
page migration can still trigger IO page fault.

Various drivers working under traditional non-SVA mode are using
their own specific ioctl to do pin. Such ioctl can be seen in v4l2,
gpu, infiniband, media, vfio, etc. Drivers are usually doing dma
mapping while doing pin.

But, in SVA mode, pin could be a common need which isn't necessarily
bound with any drivers, and neither is dma mapping needed by drivers
since devices are using the virtual address of CPU. Thus, It is better
to introduce a new common syscall for it.

This patch leverages the design of userfaultfd and adds mempinfd for pin
to avoid messing up mm_struct. A fd will be got by mempinfd, then user
space can do pin/unpin pages by ioctls of this fd, all pinned pages under
one file will be unpinned in file release process. Like pin page cases in
other places, can_do_mlock is used to check permission and input
parameters.

Can you document what the syscall does?
Will add related document in Documentation/vm.
A manpage is always good, and will be required eventually :)
manpage is maintained in another repo. Do you mean add a manpage
patch in this series?
It's good to show how it will be used, don't you think?
Agree, will add it in next version.

Thanks,
Zhou
thanks,

greg k-h

.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help