Messages in this thread Patch in this message | | | From | Geert Uytterhoeven <> | Subject | [PATCH] dma-pool: Fix too large DMA pools on medium systems | Date | Mon, 8 Jun 2020 10:52:31 +0200 |
| |
On systems with at least 32 MiB, but less than 32 GiB of RAM, the DMA memory pools are much larger than intended (e.g. 2 MiB instead of 128 KiB on a 256 MiB system).
Fix this by correcting the calculation of the number of GiBs of RAM in the system.
Fixes: 1d659236fb43c4d2 ("dma-pool: scale the default DMA coherent pool size with memory capacity") Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> --- kernel/dma/pool.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/dma/pool.c b/kernel/dma/pool.c index 35bb51c31fff370f..1c7eab2cc0498003 100644 --- a/kernel/dma/pool.c +++ b/kernel/dma/pool.c @@ -175,8 +175,8 @@ static int __init dma_atomic_pool_init(void) * sizes to 128KB per 1GB of memory, min 128KB, max MAX_ORDER-1. */ if (!atomic_pool_size) { - atomic_pool_size = max(totalram_pages() >> PAGE_SHIFT, 1UL) * - SZ_128K; + unsigned long gigs = totalram_pages() >> (30 - PAGE_SHIFT); + atomic_pool_size = max(gigs, 1UL) * SZ_128K; atomic_pool_size = min_t(size_t, atomic_pool_size, 1 << (PAGE_SHIFT + MAX_ORDER-1)); } -- 2.17.1
| |