On Thu, Oct 17, 2024 at 01:47:13PM -0300, Jason Gunthorpe wrote:
On Thu, Oct 17, 2024 at 10:58:29AM -0400, Peter Xu wrote:
My question was more torwards whether gmemfd could still expose the possibility to be used in VA forms to other modules that may not support fd+offsets yet.
I keep hearing they don't want to support page pinning on a guestmemfd mapping, so VA based paths could not work.
Do you remember the reasoning of it? Is it because CoCo still needs to have a bounded time window to convert from shared back to private? If so, maybe that's a non-issue for non-CoCo, where the VM object / gmemfd object (when created) can have a flag marking that it's always shared and can never be converted to private for any page within.
So how would VFIO's DMA work even with iommufd if pages cannot be pinned? Is some form of bounce buffering required, then?
It sounds like if so there'll be a lot of use cases that won't work with current infrastructure..
I think as long as we can provide gmemfd VMAs like what this series provides, it sounds possible to reuse the old VA interfaces before the CoCo interfaces are ready, so that people can already start leveraging gmemfd backing pages.
And you definitely can't get the private pages out of the VA interface because all the VMA PTEs of private pages are non-present by definition.
It's the same as "not present" if the fault() gets a SIGBUS always for private pages, IIUC.
My prior references to "VA ranges" are mostly only for shared / faultable pages. And they'll get zapped too when requested to be converted from shared -> private, aka, always not present for private.
Hence, you must use the FD for a lot of use cases here.
Thanks,