On Thu, Jul 11, 2019 at 11:36:56PM -0700, Sultan Alsawaf wrote: > From: Sultan Alsawaf <sul...@kerneltoast.com> > > Typically, drivers allocate sg lists of sizes up to a few MiB in size. > The current algorithm deals with large sg lists by splitting them into > several smaller arrays and chaining them together. But if the sg list > allocation is large, and we know the size ahead of time, sg chaining is > both inefficient and unnecessary. > > Rather than calling kmalloc hundreds of times in a loop for chaining > tiny arrays, we can simply do it all at once with kvmalloc, which has > the proper tradeoff on when to stop using kmalloc and instead use > vmalloc.
vmalloc() may sleep, so it is impossible to be called in atomic context. Thanks, Ming