Re: [PATCH 1/5] RDMA/umem: ib_umem_get(): use kmalloc() to allocate page array
From: Mike Rapoport
Date: Tue Jun 30 2026 - 11:00:47 EST
(adding Vlastimil)
On Tue, Jun 30, 2026 at 09:31:50AM -0300, Jason Gunthorpe wrote:
> On Tue, Jun 30, 2026 at 01:52:29PM +0300, Mike Rapoport (Microsoft) wrote:
> > ib_umem_get() allocates an array of pointers to struct page for
> > pin_user_pages_fast() calls during memory registration.
>
> A whole bunch of these use cases in rdma are really "give me some
> temporary memory, I want it fast and as large as possible. In a
> syscall context I will free it before returning back to userspace"
Not sure I follow where "as large as possible" comes from. Here it's
explicitly a page.
And does "fast" mean that vmalloc() is not an option?
> eg we'd be really happy to get any kind of high order page here.
>
> So, how would you feel about a new API?
>
> void *kmalloc_temporary(size_t min_size, size_t max_size, size_t *actual_size, gfp);
>
> I know of a few other cases like this in the kernel at least.
>
> The implementation could try to find an available high order page and
> immediately return it, otherwise do a small reclaim allocation?
How do you suggest to decide how much of reclaim should happen? With the
usual semantics of gfp?
> Jason
--
Sincerely yours,
Mike.