Re: [PATCH RFC 0/5] mm/gup: Introduce exclusive GUP pinning

From: Jason Gunthorpe
Date: Tue Jul 16 2024 - 12:09:00 EST


On Tue, Jul 16, 2024 at 09:03:00AM -0700, Sean Christopherson wrote:

> > + To support huge pages, guest_memfd will take ownership of the hugepages, and
> > provide interested parties (userspace, KVM, iommu) with pages to be used.
> > + guest_memfd will track usage of (sub)pages, for both private and shared
> > memory
> > + Pages will be broken into smaller (probably 4K) chunks at creation time to
> > simplify implementation (as opposed to splitting at runtime when private to
> > shared conversion is requested by the guest)
>
> FWIW, I doubt we'll ever release a version with mmap()+guest_memfd support that
> shatters pages at creation. I can see it being an intermediate step, e.g. to
> prove correctness and provide a bisection point, but shattering hugepages at
> creation would effectively make hugepage support useless.

Why? If the private memory retains its contiguity seperately but the
struct pages are removed from the vmemmap, what is the downside?

As I understand it the point is to give a large contiguous range to
the private world and use only 4k pages to give the hypervisor world
access to limited amounts of the memory.

Is there a reason that not having the shared memory elevated to higher
contiguity a deal breaker?

Jason