On Sun, Sep 15, 2024 at 11:08 PM Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > > On Fri, Aug 23, 2024 at 11:21:26PM +1000, Alexey Kardashevskiy wrote: > > IOMMUFD calls get_user_pages() for every mapping which will allocate > > shared memory instead of using private memory managed by the KVM and > > MEMFD. > > Please check this series, it is much more how I would expect this to > work. Use the guest memfd directly and forget about kvm in the iommufd code: > > https://lore.kernel.org/r/1726319158-283074-1-git-send-email-steven.sistare@xxxxxxxxxx > > I would imagine you'd detect the guest memfd when accepting the FD and > then having some different path in the pinning logic to pin and get > the physical ranges out. According to the discussion at KVM microconference around hugepage support for guest_memfd [1], it's imperative that guest private memory is not long term pinned. Ideal way to implement this integration would be to support a notifier that can be invoked by guest_memfd when memory ranges get truncated so that IOMMU can unmap the corresponding ranges. Such a notifier should also get called during memory conversion, it would be interesting to discuss how conversion flow would work in this case. [1] https://lpc.events/event/18/contributions/1764/ (checkout the slide 12 from attached presentation) > > Probably we would also need some CAP interaction with the iommu driver > to understand if it can accept private pages to even allow this in the > first place. > > Thanks, > Jason >