Re: [PATCH 1/5] RDMA/umem: ib_umem_get(): use kmalloc() to allocate page array
From: Mike Rapoport
Date: Tue Jun 30 2026 - 11:10:00 EST
(actually adding Vlastimil :) )
On Tue, Jun 30, 2026 at 06:00:24PM +0300, Mike Rapoport wrote:
> (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.
--
Sincerely yours,
Mike.