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