On 10/30/24 18:29, John Hubbard wrote: > On 10/30/24 4:03 AM, Vlastimil Babka wrote: >> On 10/30/24 05:39, John Hubbard wrote: >>> On 10/29/24 9:33 PM, Christoph Hellwig wrote: >>>> On Tue, Oct 29, 2024 at 09:30:41PM -0700, John Hubbard wrote: > ... >> It might be a regression even if you don't try to pin over 2GB. high-order >> (>costly order) allocations can fail and/or cause disruptive >> reclaim/compaction cycles even below MAX_PAGE_ORDER and it's better to use >> kvmalloc if physical contiguity is not needed, it will attempt the physical >> kmalloc() allocation with __GFP_NORETRY (little disruption) and fallback to >> vmalloc() quickly. >> >> Of course if there's a way to avoid the allocation completely, even beter. > > Why not both? I'm going to ask our driver team to batch the pinning calls, > as recommended nearby, just to be sure that we are following best > practices. > > But it also seems good to use kvmalloc() here, and avoid any other > regressions. That's also a best practice. By "avoid the allocation completely" I meant David's proof of concept elsewhere in this thread, that seems to replace that kmalloc_array() with no allocation :) > thanks,