dma-pool: scale the default DMA coherent pool size with memory capacity
authorDavid Rientjes <rientjes@google.com>
Wed, 15 Apr 2020 00:05:02 +0000 (17:05 -0700)
committerChristoph Hellwig <hch@lst.de>
Sat, 25 Apr 2020 11:17:06 +0000 (13:17 +0200)
commit1d659236fb43c4d2b37af7a4309681e834e9ec9a
tree22e67ec1a873a9783271ea1c601a383cefd55ca1
parent82fef0ad811fb5976cf36ccc3d2c3bc0195dfb72
dma-pool: scale the default DMA coherent pool size with memory capacity

When AMD memory encryption is enabled, some devices may use more than
256KB/sec from the atomic pools.  It would be more appropriate to scale
the default size based on memory capacity unless the coherent_pool
option is used on the kernel command line.

This provides a slight optimization on initial expansion and is deemed
appropriate due to the increased reliance on the atomic pools.  Note that
the default size of 128KB per pool will normally be larger than the
single coherent pool implementation since there are now up to three
coherent pools (DMA, DMA32, and kernel).

Note that even prior to this patch, coherent_pool= for sizes larger than
1 << (PAGE_SHIFT + MAX_ORDER-1) can fail.  With new dynamic expansion
support, this would be trivially extensible to allow even larger initial
sizes.

Signed-off-by: David Rientjes <rientjes@google.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
kernel/dma/pool.c