lkml.org 
[lkml]   [2020]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2] dma-pool: Fix too large DMA pools on medium systems
    Date
    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. Invert the order of the min/max operations, to keep on
    calculating in pages until the last step, which aids readability.

    Fixes: 1d659236fb43c4d2 ("dma-pool: scale the default DMA coherent pool size with memory capacity")
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    ---
    v2:
    - Improve readability:
    - Divide by (SZ_1G / SZ_128K) instead of using a shift,
    - Invert min/max order to keep calculating in pages until the last
    step.
    ---
    kernel/dma/pool.c | 7 +++----
    1 file changed, 3 insertions(+), 4 deletions(-)

    diff --git a/kernel/dma/pool.c b/kernel/dma/pool.c
    index 35bb51c31fff370f..8cfa01243ed27b6f 100644
    --- a/kernel/dma/pool.c
    +++ b/kernel/dma/pool.c
    @@ -175,10 +175,9 @@ 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;
    - atomic_pool_size = min_t(size_t, atomic_pool_size,
    - 1 << (PAGE_SHIFT + MAX_ORDER-1));
    + unsigned long pages = totalram_pages() / (SZ_1G / SZ_128K);
    + pages = min_t(unsigned long, pages, MAX_ORDER_NR_PAGES);
    + atomic_pool_size = max_t(size_t, pages << PAGE_SHIFT, SZ_128K);
    }
    INIT_WORK(&atomic_pool_work, atomic_pool_work_fn);

    --
    2.17.1
    \
     
     \ /
      Last update: 2020-06-08 15:23    [W:4.325 / U:0.848 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site