Re: [PATCH v11 2/9] mm: introduce FOLL_PCI_P2PDMA to gate getting PCI P2PDMA pages

From: Chaitanya Kulkarni
Date: Mon Oct 24 2022 - 21:32:23 EST


On 10/21/22 10:41, Logan Gunthorpe wrote:
> GUP Callers that expect PCI P2PDMA pages can now set FOLL_PCI_P2PDMA to
> allow obtaining P2PDMA pages. If GUP is called without the flag and a
> P2PDMA page is found, it will return an error in try_grab_page() or
> try_grab_folio().
>
> The check is safe to do before taking the reference to the page in both
> cases seeing the page should be protected by either the appropriate
> ptl or mmap_lock; or the gup fast guarantees preventing TLB flushes.
>
> try_grab_folio() has one call site that WARNs on failure and cannot
> actually deal with the failure of this function (it seems it will
> get into an infinite loop). Expand the comment there to document a
> couple more conditions on why it will not fail.
>
> FOLL_PCI_P2PDMA cannot be set if FOLL_LONGTERM is set. This is to copy
> fsdax until pgmap refcounts are fixed (see the link below for more
> information).
>
> Link: https://lkml.kernel.org/r/Yy4Ot5MoOhsgYLTQ@xxxxxxxx
> Signed-off-by: Logan Gunthorpe <logang@xxxxxxxxxxxx>

Reviewed-by: Chaitanya Kulkarni <kch@xxxxxxxxxx>

-ck