Re: [PATCH v3 6/7] mm/gup: remove vmas parameter from pin_user_pages()

2023-04-17 Thread Dennis Dalessandro


On 4/15/23 8:09 AM, Lorenzo Stoakes wrote:
> After the introduction of FOLL_SAME_FILE we no longer require vmas for any
> invocation of pin_user_pages(), so eliminate this parameter from the
> function and all callers.
> 
> This clears the way to removing the vmas parameter from GUP altogether.
> 
> Signed-off-by: Lorenzo Stoakes 
> ---
>  arch/powerpc/mm/book3s64/iommu_api.c   | 2 +-
>  drivers/infiniband/hw/qib/qib_user_pages.c | 2 +-
>  drivers/infiniband/hw/usnic/usnic_uiom.c   | 2 +-
>  drivers/infiniband/sw/siw/siw_mem.c| 2 +-
>  drivers/media/v4l2-core/videobuf-dma-sg.c  | 2 +-
>  drivers/vdpa/vdpa_user/vduse_dev.c | 2 +-
>  drivers/vhost/vdpa.c   | 2 +-
>  include/linux/mm.h | 3 +--
>  io_uring/rsrc.c| 2 +-
>  mm/gup.c   | 9 +++--
>  mm/gup_test.c  | 9 -
>  net/xdp/xdp_umem.c | 2 +-
>  12 files changed, 17 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/infiniband/hw/qib/qib_user_pages.c 
> b/drivers/infiniband/hw/qib/qib_user_pages.c
> index f693bc753b6b..1bb7507325bc 100644
> --- a/drivers/infiniband/hw/qib/qib_user_pages.c
> +++ b/drivers/infiniband/hw/qib/qib_user_pages.c
> @@ -111,7 +111,7 @@ int qib_get_user_pages(unsigned long start_page, size_t 
> num_pages,
>   ret = pin_user_pages(start_page + got * PAGE_SIZE,
>num_pages - got,
>FOLL_LONGTERM | FOLL_WRITE,
> -  p + got, NULL);
> +  p + got);
>   if (ret < 0) {
>   mmap_read_unlock(current->mm);
>   goto bail_release;

For Qib...

Acked-by: Dennis Dalessandro 



Re: [PATCH v3 6/7] mm/gup: remove vmas parameter from pin_user_pages()

2023-04-17 Thread David Hildenbrand

On 15.04.23 14:09, Lorenzo Stoakes wrote:

After the introduction of FOLL_SAME_FILE we no longer require vmas for any
invocation of pin_user_pages(), so eliminate this parameter from the
function and all callers.

This clears the way to removing the vmas parameter from GUP altogether.

Signed-off-by: Lorenzo Stoakes 
---


Ideally, we'd avoid FOLL_SAME_FILE as well

Acked-by: David Hildenbrand 

--
Thanks,

David / dhildenb



[PATCH v3 6/7] mm/gup: remove vmas parameter from pin_user_pages()

2023-04-15 Thread Lorenzo Stoakes
After the introduction of FOLL_SAME_FILE we no longer require vmas for any
invocation of pin_user_pages(), so eliminate this parameter from the
function and all callers.

This clears the way to removing the vmas parameter from GUP altogether.

Signed-off-by: Lorenzo Stoakes 
---
 arch/powerpc/mm/book3s64/iommu_api.c   | 2 +-
 drivers/infiniband/hw/qib/qib_user_pages.c | 2 +-
 drivers/infiniband/hw/usnic/usnic_uiom.c   | 2 +-
 drivers/infiniband/sw/siw/siw_mem.c| 2 +-
 drivers/media/v4l2-core/videobuf-dma-sg.c  | 2 +-
 drivers/vdpa/vdpa_user/vduse_dev.c | 2 +-
 drivers/vhost/vdpa.c   | 2 +-
 include/linux/mm.h | 3 +--
 io_uring/rsrc.c| 2 +-
 mm/gup.c   | 9 +++--
 mm/gup_test.c  | 9 -
 net/xdp/xdp_umem.c | 2 +-
 12 files changed, 17 insertions(+), 22 deletions(-)

diff --git a/arch/powerpc/mm/book3s64/iommu_api.c 
b/arch/powerpc/mm/book3s64/iommu_api.c
index 81d7185e2ae8..d19fb1f3007d 100644
--- a/arch/powerpc/mm/book3s64/iommu_api.c
+++ b/arch/powerpc/mm/book3s64/iommu_api.c
@@ -105,7 +105,7 @@ static long mm_iommu_do_alloc(struct mm_struct *mm, 
unsigned long ua,
 
ret = pin_user_pages(ua + (entry << PAGE_SHIFT), n,
FOLL_WRITE | FOLL_LONGTERM,
-   mem->hpages + entry, NULL);
+   mem->hpages + entry);
if (ret == n) {
pinned += n;
continue;
diff --git a/drivers/infiniband/hw/qib/qib_user_pages.c 
b/drivers/infiniband/hw/qib/qib_user_pages.c
index f693bc753b6b..1bb7507325bc 100644
--- a/drivers/infiniband/hw/qib/qib_user_pages.c
+++ b/drivers/infiniband/hw/qib/qib_user_pages.c
@@ -111,7 +111,7 @@ int qib_get_user_pages(unsigned long start_page, size_t 
num_pages,
ret = pin_user_pages(start_page + got * PAGE_SIZE,
 num_pages - got,
 FOLL_LONGTERM | FOLL_WRITE,
-p + got, NULL);
+p + got);
if (ret < 0) {
mmap_read_unlock(current->mm);
goto bail_release;
diff --git a/drivers/infiniband/hw/usnic/usnic_uiom.c 
b/drivers/infiniband/hw/usnic/usnic_uiom.c
index 2a5cac2658ec..84e0f41e7dfa 100644
--- a/drivers/infiniband/hw/usnic/usnic_uiom.c
+++ b/drivers/infiniband/hw/usnic/usnic_uiom.c
@@ -140,7 +140,7 @@ static int usnic_uiom_get_pages(unsigned long addr, size_t 
size, int writable,
ret = pin_user_pages(cur_base,
 min_t(unsigned long, npages,
 PAGE_SIZE / sizeof(struct page *)),
-gup_flags, page_list, NULL);
+gup_flags, page_list);
 
if (ret < 0)
goto out;
diff --git a/drivers/infiniband/sw/siw/siw_mem.c 
b/drivers/infiniband/sw/siw/siw_mem.c
index f51ab2ccf151..e6e25f15567d 100644
--- a/drivers/infiniband/sw/siw/siw_mem.c
+++ b/drivers/infiniband/sw/siw/siw_mem.c
@@ -422,7 +422,7 @@ struct siw_umem *siw_umem_get(u64 start, u64 len, bool 
writable)
umem->page_chunk[i].plist = plist;
while (nents) {
rv = pin_user_pages(first_page_va, nents, foll_flags,
-   plist, NULL);
+   plist);
if (rv < 0)
goto out_sem_up;
 
diff --git a/drivers/media/v4l2-core/videobuf-dma-sg.c 
b/drivers/media/v4l2-core/videobuf-dma-sg.c
index 53001532e8e3..405b89ea1054 100644
--- a/drivers/media/v4l2-core/videobuf-dma-sg.c
+++ b/drivers/media/v4l2-core/videobuf-dma-sg.c
@@ -180,7 +180,7 @@ static int videobuf_dma_init_user_locked(struct 
videobuf_dmabuf *dma,
data, size, dma->nr_pages);
 
err = pin_user_pages(data & PAGE_MASK, dma->nr_pages, gup_flags,
-dma->pages, NULL);
+dma->pages);
 
if (err != dma->nr_pages) {
dma->nr_pages = (err >= 0) ? err : 0;
diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c 
b/drivers/vdpa/vdpa_user/vduse_dev.c
index 0c3b48616a9f..1f80254604f0 100644
--- a/drivers/vdpa/vdpa_user/vduse_dev.c
+++ b/drivers/vdpa/vdpa_user/vduse_dev.c
@@ -995,7 +995,7 @@ static int vduse_dev_reg_umem(struct vduse_dev *dev,
goto out;
 
pinned = pin_user_pages(uaddr, npages, FOLL_LONGTERM | FOLL_WRITE,
-   page_list, NULL);
+   page_list);
if (pinned != npages) {
ret = pinned < 0 ? pinned : -ENOMEM;
goto out;
diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c