dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
  • * Re: improve the kmem_cache_alloc_bulk API
           [not found] <20260527070239.2252948-1-hch@lst.de>
           [not found] ` <20260527070239.2252948-2-hch@lst.de>
    @ 2026-05-27  9:11 ` Vlastimil Babka (SUSE)
           [not found]   ` <20260527122148.GA6838@lst.de>
      1 sibling, 1 reply; 8+ messages in thread
    From: Vlastimil Babka (SUSE) @ 2026-05-27  9:11 UTC (permalink / raw)
      To: Christoph Hellwig, Harry Yoo, Andrew Morton
      Cc: Hao Li, Christoph Lameter, David Rientjes, Roman Gushchin,
    	Jesper Dangaard Brouer, linux-arm-msm, dri-devel, freedreno,
    	linux-kernel, linux-mm, io-uring, kasan-dev, bpf, netdev
    
    On 5/27/26 09:02, Christoph Hellwig wrote:
    > Hi all,
    > 
    > kmem_cache_alloc_bulk has a very unintuitive and undocumented return
    > value convention.  Fix that and add documentation.
    > 
    > Note that the few comments explaining it mention that the gfp flags
    > must allow "spinning".  That's not really a term used in the memory
    > allocator, is this supposed to mean "block" or "sleep"?
    
    Page allocator now has alloc_pages_nolock() for when no spinning is
    possible, and it uses ALLOC_TRYLOCK internally.
    
    Slab has kmalloc_nolock() relying on that when it needs new pages.
    
    In terms of gfp flags, such context is currently indicated by lack of
    __GFP_KSWAPD_RECLAIM, where lack of __GFP_DIRECT_RECLAIM only means "no
    sleeping" - see gfpflags_allow_spinning(). Slab uses it internally as
    there's no ALLOC_TRYLOCK, but also there are callers from memcg and stackdepot.
    
    Like the rest of gfp flags it's far from ideal, maybe we'll figure out a
    better design eventually.
    
    > Diffstat:
    >  drivers/gpu/drm/msm/msm_iommu.c       |    6 +--
    >  drivers/gpu/drm/panthor/panthor_mmu.c |   12 ++-----
    >  include/linux/slab.h                  |    6 ++-
    >  io_uring/io_uring.c                   |   23 +++++--------
    >  lib/test_meminit.c                    |   19 +++++------
    >  mm/kasan/kasan_test_c.c               |    5 +-
    >  mm/kfence/kfence_test.c               |    9 ++---
    >  mm/slub.c                             |   58 ++++++++++++++++++----------------
    >  net/bpf/test_run.c                    |    7 +---
    >  net/core/skbuff.c                     |   23 +++++++------
    >  tools/include/linux/slab.h            |    2 -
    >  tools/testing/shared/linux.c          |   19 ++++-------
    >  12 files changed, 92 insertions(+), 97 deletions(-)
    
    
    ^ permalink raw reply	[flat|nested] 8+ messages in thread

  • end of thread, other threads:[~2026-05-28  9:16 UTC | newest]
    
    Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <20260527070239.2252948-1-hch@lst.de>
         [not found] ` <20260527070239.2252948-2-hch@lst.de>
    2026-05-27  7:53   ` [PATCH] mm/slab: improve kmem_cache_alloc_bulk bot+bpf-ci
    2026-05-27  8:51   ` Jesper Dangaard Brouer
    2026-05-27 13:56     ` Alexander Lobakin
    2026-05-27  9:38   ` Vlastimil Babka (SUSE)
    2026-05-28  8:58   ` kernel test robot
    2026-05-27  9:11 ` improve the kmem_cache_alloc_bulk API Vlastimil Babka (SUSE)
         [not found]   ` <20260527122148.GA6838@lst.de>
    2026-05-27 14:07     ` Vlastimil Babka (SUSE)
         [not found]       ` <20260528090508.GB8376@lst.de>
    2026-05-28  9:16         ` Vlastimil Babka (SUSE)
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox