All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Vlastimil Babka (SUSE)" <vbabka@kernel.org>
To: Jason Gunthorpe <jgg@ziepe.ca>, Mike Rapoport <rppt@kernel.org>
Cc: Leon Romanovsky <leon@kernel.org>,
	Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	linux-rdma@vger.kernel.org, Matthew Wilcox <willy@infradead.org>,
	Michal Hocko <mhocko@kernel.org>,
	"David Hildenbrand (Red Hat)" <david@kernel.org>,
	Dave Chinner <dgc@kernel.org>
Subject: Re: [PATCH 1/5] RDMA/umem: ib_umem_get(): use kmalloc() to allocate page array
Date: Thu, 2 Jul 2026 14:46:46 +0200	[thread overview]
Message-ID: <9cc11eeb-372a-49fb-ba89-486333ac71c4@kernel.org> (raw)
In-Reply-To: <20260630153638.GG7525@ziepe.ca>

On 6/30/26 17:36, Jason Gunthorpe wrote:
> On Tue, Jun 30, 2026 at 06:01:17PM +0300, Mike Rapoport wrote:
>> (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.
> 
> It is a page because that is "fast"
> 
> There will be a calculation what the upper limit of memory is that
> this algorithm can use.
> 
>> > And does "fast" mean that vmalloc() is not an option?
> 
> Yes. The trade off is you do fewer iterations of some loop if you have
> a bigger temporary buffer. But if it takes longer to allocate than the loop
> iterations then it doesn't help.
> 
>> > > 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?
> 
> Yeah, when all options are exhausted you do some allocation with the
> usual GFP options.

I think this should be discussed more broadly and not block this change.
Instead of adding just kmalloc_temporary() we should look at the bigger
picture where we have manual optimistic nowait attempts with smaller
fallbacks. Willy's LSF/MM plenary touched on this, as well as recent threads
with Dave Chinner [1] etc.

With that said, I'm for example not sure if "_temporary()" is really the
distinguishing characteristic for this to be part of the name.

[1] https://lore.kernel.org/all/1f50ce04-20e6-46a0-9d8a-00a5f7a74967@suse.com/

> Jason


  reply	other threads:[~2026-07-02 12:46 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-30 10:52 [PATCH 0/5] RDMA, IB: replace __get_free_pages() with kmalloc() Mike Rapoport (Microsoft)
2026-06-30 10:52 ` [PATCH 1/5] RDMA/umem: ib_umem_get(): use kmalloc() to allocate page array Mike Rapoport (Microsoft)
2026-06-30 12:31   ` Jason Gunthorpe
2026-06-30 15:00     ` Mike Rapoport
2026-06-30 15:01       ` Mike Rapoport
2026-06-30 15:36         ` Jason Gunthorpe
2026-07-02 12:46           ` Vlastimil Babka (SUSE) [this message]
2026-07-02 12:55             ` Jason Gunthorpe
2026-07-02 19:36               ` Mike Rapoport
2026-06-30 10:52 ` [PATCH 2/5] RDMA/mlx5: replace __get_free_page() with kmalloc() Mike Rapoport (Microsoft)
2026-06-30 10:52 ` [PATCH 3/5] IB/mthca: mthca_reg_user_mr(): use kmalloc() to allocate addresses array Mike Rapoport (Microsoft)
2026-06-30 10:52 ` [PATCH 4/5] IB/mthca: allocate mthca_array memory with kzalloc() Mike Rapoport (Microsoft)
2026-06-30 10:52 ` [PATCH 5/5] IB/rdmavt: use kzalloc() to allocate QPN-map pages Mike Rapoport (Microsoft)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9cc11eeb-372a-49fb-ba89-486333ac71c4@kernel.org \
    --to=vbabka@kernel.org \
    --cc=david@kernel.org \
    --cc=dennis.dalessandro@cornelisnetworks.com \
    --cc=dgc@kernel.org \
    --cc=jgg@ziepe.ca \
    --cc=leon@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=mhocko@kernel.org \
    --cc=rppt@kernel.org \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.