Lines Matching refs:gup
69 static void dump_pages_test(struct gup_test *gup, struct page **pages,
80 if (gup->which_pages[i] > nr_pages) {
82 i, gup->which_pages[i]);
83 gup->which_pages[i] = 0;
88 index_to_dump = gup->which_pages[i];
93 index_to_dump, gup->addr);
101 struct gup_test *gup)
111 if (gup->size > ULONG_MAX)
114 nr_pages = gup->size / PAGE_SIZE;
125 nr = gup->nr_pages_per_call;
127 for (addr = gup->addr; addr < gup->addr + gup->size; addr = next) {
128 if (nr != gup->nr_pages_per_call)
132 if (next > gup->addr + gup->size) {
133 next = gup->addr + gup->size;
139 nr = get_user_pages_fast(addr, nr, gup->gup_flags,
143 nr = get_user_pages(addr, nr, gup->gup_flags, pages + i);
146 nr = pin_user_pages_fast(addr, nr, gup->gup_flags,
150 nr = pin_user_pages(addr, nr, gup->gup_flags, pages + i);
154 gup->gup_flags | FOLL_LONGTERM,
158 if (gup->test_flags & GUP_TEST_FLAG_DUMP_PAGES_USE_PIN)
159 nr = pin_user_pages(addr, nr, gup->gup_flags,
162 nr = get_user_pages(addr, nr, gup->gup_flags,
179 gup->get_delta_usec = ktime_us_delta(end_time, start_time);
180 gup->size = addr - gup->addr;
189 dump_pages_test(gup, pages, nr_pages);
193 put_back_pages(cmd, pages, nr_pages, gup->test_flags);
196 gup->put_delta_usec = ktime_us_delta(end_time, start_time);
341 struct gup_test gup;
360 if (copy_from_user(&gup, (void __user *)arg, sizeof(gup)))
363 ret = __gup_test_ioctl(cmd, &gup);
367 if (copy_to_user((void __user *)arg, &gup, sizeof(gup)))