Message ID | 20240611182732.360317-4-martin.oliveira@eideticom.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Enable P2PDMA in Userspace RDMA | expand |
On 6/11/24 11:27 AM, Martin Oliveira wrote: > This check existed originally due to concerns that P2PDMA needed to copy > fsdax until pgmap refcounts were fixed (see [1]). > > The P2PDMA infrastructure will only call unmap_mapping_range() when the > underlying device is unbound, and immediately after unmapping it waits > for the reference of all ZONE_DEVICE pages to be released before > continuing. This does not allow for a page to be reused and no user > access fault is therefore possible. It does not have the same problem as > fsdax. This sounds great. I'm adding Dan Williams to Cc, in hopes of getting an ack from him on this point. > > The one minor concern with FOLL_LONGTERM pins is they will block device > unbind until userspace releases them all. That seems like a completely reasonable consequence of what you are doing here, IMHO. > > Co-developed-by: Logan Gunthorpe <logang@deltatee.com> > Signed-off-by: Logan Gunthorpe <logang@deltatee.com> > Signed-off-by: Martin Oliveira <martin.oliveira@eideticom.com> > > [1]: https://lkml.kernel.org/r/Yy4Ot5MoOhsgYLTQ@ziepe.ca > --- > mm/gup.c | 5 ----- > 1 file changed, 5 deletions(-) > > diff --git a/mm/gup.c b/mm/gup.c > index 00d0a77112f4f..28060e41788d0 100644 > --- a/mm/gup.c > +++ b/mm/gup.c > @@ -2614,11 +2614,6 @@ static bool is_valid_gup_args(struct page **pages, int *locked, > if (WARN_ON_ONCE((gup_flags & (FOLL_GET | FOLL_PIN)) && !pages)) > return false; > > - /* We want to allow the pgmap to be hot-unplugged at all times */ > - if (WARN_ON_ONCE((gup_flags & FOLL_LONGTERM) && > - (gup_flags & FOLL_PCI_P2PDMA))) > - return false; > - I am not immediately seeing anything wrong with this... :) > *gup_flags_p = gup_flags; > return true; > } thanks,
diff --git a/mm/gup.c b/mm/gup.c index 00d0a77112f4f..28060e41788d0 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -2614,11 +2614,6 @@ static bool is_valid_gup_args(struct page **pages, int *locked, if (WARN_ON_ONCE((gup_flags & (FOLL_GET | FOLL_PIN)) && !pages)) return false; - /* We want to allow the pgmap to be hot-unplugged at all times */ - if (WARN_ON_ONCE((gup_flags & FOLL_LONGTERM) && - (gup_flags & FOLL_PCI_P2PDMA))) - return false; - *gup_flags_p = gup_flags; return true; }