11/*
2- * SPDX-FileCopyrightText: Copyright (c) 2016-2017 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+ * SPDX-FileCopyrightText: Copyright (c) 2016-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33 * SPDX-License-Identifier: MIT
44 *
55 * Permission is hereby granted, free of charge, to any person obtaining a
@@ -36,12 +36,21 @@ typedef int vm_fault_t;
3636 * pin_user_pages() was added by commit eddb1c228f7951d399240
3737 * ("mm/gup: introduce pin_user_pages*() and FOLL_PIN") in v5.6-rc1 (2020-01-30)
3838 *
39+ * Removed vmas parameter from pin_user_pages() by commit 40896a02751
40+ * ("mm/gup: remove vmas parameter from pin_user_pages()")
41+ * in linux-next, expected in v6.5-rc1 (2023-05-17)
42+ *
3943 */
4044
4145#include <linux/mm.h>
4246#include <linux/sched.h>
4347#if defined(NV_PIN_USER_PAGES_PRESENT )
44- #define NV_PIN_USER_PAGES pin_user_pages
48+ #if defined(NV_PIN_USER_PAGES_HAS_ARGS_VMAS )
49+ #define NV_PIN_USER_PAGES pin_user_pages
50+ #else
51+ #define NV_PIN_USER_PAGES (start , nr_pages , gup_flags , pages , vmas ) \
52+ pin_user_pages(start, nr_pages, gup_flags, pages)
53+ #endif // NV_PIN_USER_PAGES_HAS_ARGS_VMAS
4554 #define NV_UNPIN_USER_PAGE unpin_user_page
4655#else
4756 #define NV_PIN_USER_PAGES NV_GET_USER_PAGES
@@ -64,11 +73,18 @@ typedef int vm_fault_t;
6473 * commit 8e50b8b07f462ab4b91bc1491b1c91bd75e4ad40 which cherry-picked the
6574 * replacement of the write and force parameters with gup_flags
6675 *
76+ * Removed vmas parameter from get_user_pages() by commit 7bbf9c8c99
77+ * ("mm/gup: remove unused vmas parameter from get_user_pages()")
78+ * in linux-next, expected in v6.5-rc1 (2023-05-17)
79+ *
6780 */
6881
6982#if defined(NV_GET_USER_PAGES_HAS_ARGS_FLAGS )
83+ #define NV_GET_USER_PAGES (start , nr_pages , flags , pages , vmas ) \
84+ get_user_pages(start, nr_pages, flags, pages)
85+ #elif defined(NV_GET_USER_PAGES_HAS_ARGS_FLAGS_VMAS )
7086 #define NV_GET_USER_PAGES get_user_pages
71- #elif defined(NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS )
87+ #elif defined(NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS_VMAS )
7288 #define NV_GET_USER_PAGES (start , nr_pages , flags , pages , vmas ) \
7389 get_user_pages(current, current->mm, start, nr_pages, flags, pages, vmas)
7490#else
@@ -81,13 +97,13 @@ typedef int vm_fault_t;
8197 int write = flags & FOLL_WRITE ;
8298 int force = flags & FOLL_FORCE ;
8399
84- #if defined(NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE )
100+ #if defined(NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE_VMAS )
85101 return get_user_pages (start , nr_pages , write , force , pages , vmas );
86102 #else
87- // NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE
103+ // NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS
88104 return get_user_pages (current , current -> mm , start , nr_pages , write ,
89105 force , pages , vmas );
90- #endif // NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE
106+ #endif // NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE_VMAS
91107 }
92108#endif // NV_GET_USER_PAGES_HAS_ARGS_FLAGS
93109
@@ -100,15 +116,22 @@ typedef int vm_fault_t;
100116 * 64019a2e467a ("mm/gup: remove task_struct pointer for all gup code")
101117 * in v5.9-rc1 (2020-08-11). *
102118 *
119+ * Removed unused vmas parameter from pin_user_pages_remote() by commit
120+ * 83bcc2e132("mm/gup: remove unused vmas parameter from pin_user_pages_remote()")
121+ * in linux-next, expected in v6.5-rc1 (2023-05-14)
122+ *
103123 */
104124
105125#if defined(NV_PIN_USER_PAGES_REMOTE_PRESENT )
106- #if defined ( NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK )
126+ #if defined( NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK_VMAS )
107127 #define NV_PIN_USER_PAGES_REMOTE (mm , start , nr_pages , flags , pages , vmas , locked ) \
108128 pin_user_pages_remote(NULL, mm, start, nr_pages, flags, pages, vmas, locked)
109- #else
129+ #elif defined( NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_VMAS )
110130 #define NV_PIN_USER_PAGES_REMOTE pin_user_pages_remote
111- #endif // NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK
131+ #else
132+ #define NV_PIN_USER_PAGES_REMOTE (mm , start , nr_pages , flags , pages , vmas , locked ) \
133+ pin_user_pages_remote(mm, start, nr_pages, flags, pages, locked)
134+ #endif // NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK_VMAS
112135#else
113136 #define NV_PIN_USER_PAGES_REMOTE NV_GET_USER_PAGES_REMOTE
114137#endif // NV_PIN_USER_PAGES_REMOTE_PRESENT
@@ -135,22 +158,30 @@ typedef int vm_fault_t;
135158 * commit 64019a2e467a ("mm/gup: remove task_struct pointer for
136159 * all gup code") in v5.9-rc1 (2020-08-11).
137160 *
161+ * Removed vmas parameter from get_user_pages_remote() by commit a4bde14d549
162+ * ("mm/gup: remove vmas parameter from get_user_pages_remote()")
163+ * in linux-next, expected in v6.5-rc1 (2023-05-14)
164+ *
138165 */
139166
140167#if defined(NV_GET_USER_PAGES_REMOTE_PRESENT )
141168 #if defined(NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED )
169+ #define NV_GET_USER_PAGES_REMOTE (mm , start , nr_pages , flags , pages , vmas , locked ) \
170+ get_user_pages_remote(mm, start, nr_pages, flags, pages, locked)
171+
172+ #elif defined(NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED_VMAS )
142173 #define NV_GET_USER_PAGES_REMOTE get_user_pages_remote
143174
144- #elif defined(NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED )
175+ #elif defined(NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED_VMAS )
145176 #define NV_GET_USER_PAGES_REMOTE (mm , start , nr_pages , flags , pages , vmas , locked ) \
146177 get_user_pages_remote(NULL, mm, start, nr_pages, flags, pages, vmas, locked)
147178
148- #elif defined(NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS )
179+ #elif defined(NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_VMAS )
149180 #define NV_GET_USER_PAGES_REMOTE (mm , start , nr_pages , flags , pages , vmas , locked ) \
150181 get_user_pages_remote(NULL, mm, start, nr_pages, flags, pages, vmas)
151182
152183 #else
153- // NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE
184+ // NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE_VMAS
154185 static inline long NV_GET_USER_PAGES_REMOTE (struct mm_struct * mm ,
155186 unsigned long start ,
156187 unsigned long nr_pages ,
@@ -167,7 +198,7 @@ typedef int vm_fault_t;
167198 }
168199 #endif // NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED
169200#else
170- #if defined(NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE )
201+ #if defined(NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS )
171202 static inline long NV_GET_USER_PAGES_REMOTE (struct mm_struct * mm ,
172203 unsigned long start ,
173204 unsigned long nr_pages ,
@@ -185,7 +216,7 @@ typedef int vm_fault_t;
185216 #else
186217 #define NV_GET_USER_PAGES_REMOTE (mm , start , nr_pages , flags , pages , vmas , locked ) \
187218 get_user_pages(NULL, mm, start, nr_pages, flags, pages, vmas)
188- #endif // NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE
219+ #endif // NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS
189220#endif // NV_GET_USER_PAGES_REMOTE_PRESENT
190221
191222/*
0 commit comments