From nobody Wed Jul 1 17:38:20 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 37C0BC433F5 for ; Fri, 17 Dec 2021 09:08:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234024AbhLQJIm (ORCPT ); Fri, 17 Dec 2021 04:08:42 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]:60045 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234014AbhLQJIk (ORCPT ); Fri, 17 Dec 2021 04:08:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1639732119; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sT+g3CTtmuJQa5zGo6KTILdE5kw3zymgexb1EZSOqJ0=; b=bFeBFbpgAalirjuPM4YvF16ahzoEMR9jTG59g4pmPkOvrx0MYX5S9DnUCpv4p0JFVu42KK 95ZFu4wmcwk26zRKi71Ki8P7xrICRFd52Ff7O5XTQWEiW8pjuL0e0ROJhTp09DQQqEeisZ yUbJjt09m/Ms1x+Wg/bCzL9Ok/AUgU8= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-647-PY05FEHuPQCSFtN73MMsaA-1; Fri, 17 Dec 2021 04:08:36 -0500 X-MC-Unique: PY05FEHuPQCSFtN73MMsaA-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4F369593A8; Fri, 17 Dec 2021 09:08:35 +0000 (UTC) Received: from MiWiFi-R3L-srv.redhat.com (ovpn-12-164.pek2.redhat.com [10.72.12.164]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7E6CD7A488; Fri, 17 Dec 2021 09:08:32 +0000 (UTC) From: Baoquan He To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, akpm@linux-foundation.org, corbet@lwn.net, hch@lst.de, cl@linux.com, bhe@redhat.com Subject: [PATCH 1/2] docs: kernel-parameters: Update to reflect the current default size of atomic pool Date: Fri, 17 Dec 2021 17:08:26 +0800 Message-Id: <20211217090827.101938-2-bhe@redhat.com> In-Reply-To: <20211217090827.101938-1-bhe@redhat.com> References: <20211217090827.101938-1-bhe@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Since commit 1d659236fb43("dma-pool: scale the default DMA coherent pool size with memory capacity"), the default size of atomic pool has been changed to take by scaling with system memory capacity. So update the document in kerenl-parameter.txt accordingly. Signed-off-by: Baoquan He Reviewed-by: Christoph Hellwig --- Documentation/admin-guide/kernel-parameters.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentatio= n/admin-guide/kernel-parameters.txt index 9725c546a0d4..ec4d25e854a8 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -664,7 +664,9 @@ =20 coherent_pool=3Dnn[KMG] [ARM,KNL] Sets the size of memory pool for coherent, atomic dma - allocations, by default set to 256K. + allocations. Otherwise the default size will be scaled + with memory capacity, while clamped between 128K and + 1 << (PAGE_SHIFT + MAX_ORDER-1). =20 com20020=3D [HW,NET] ARCnet - COM20020 chipset Format: --=20 2.26.0 From nobody Wed Jul 1 17:38:20 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BDF85C433F5 for ; Fri, 17 Dec 2021 09:08:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234035AbhLQJIp (ORCPT ); Fri, 17 Dec 2021 04:08:45 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:25340 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234028AbhLQJIo (ORCPT ); Fri, 17 Dec 2021 04:08:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1639732124; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DRJJuCkVZyOEZbsOujR3uAMVyJ2EnPCTOzk3f46x6zw=; b=e0c69PacukQpSlDb9PGlUbxEarx6CvNFc0WjqyqqPhNcviv4QLBog8Ytq9NTrERgsgLb/g hh36kDLob6iLTu2knNO9PtIzNgLAHaN7UFAjcqCd5VrwyRzvnCV6s0isrPX7HJcAcJhr0P gz9lEo5THbH3Yshez+AWw+7ulv1302Q= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-590-HmxlCgYLOFSU00JjNowJaA-1; Fri, 17 Dec 2021 04:08:41 -0500 X-MC-Unique: HmxlCgYLOFSU00JjNowJaA-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C57EE185303D; Fri, 17 Dec 2021 09:08:39 +0000 (UTC) Received: from MiWiFi-R3L-srv.redhat.com (ovpn-12-164.pek2.redhat.com [10.72.12.164]) by smtp.corp.redhat.com (Postfix) with ESMTP id D0F5D7A483; Fri, 17 Dec 2021 09:08:35 +0000 (UTC) From: Baoquan He To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, akpm@linux-foundation.org, corbet@lwn.net, hch@lst.de, cl@linux.com, bhe@redhat.com Subject: [PATCH 2/2] dma-pool: allow user to disable atomic pool Date: Fri, 17 Dec 2021 17:08:27 +0800 Message-Id: <20211217090827.101938-3-bhe@redhat.com> In-Reply-To: <20211217090827.101938-1-bhe@redhat.com> References: <20211217090827.101938-1-bhe@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" In the current code, three atomic memory pools are always created, atomic_pool_kernel|dma|dma32, even though 'coherent_pool=3D0' is specified in kernel command line. In fact, atomic pool is only necessary when CONFIG_DMA_DIRECT_REMAP=3Dy or mem_encrypt_active=3Dy which are needed on few ARCHes. So change code to allow user to disable atomic pool by specifying 'coherent_pool=3D0'. Meanwhile, update the relevant document in kernel-parameter.txt. Signed-off-by: Baoquan He --- Documentation/admin-guide/kernel-parameters.txt | 3 ++- kernel/dma/pool.c | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentatio= n/admin-guide/kernel-parameters.txt index ec4d25e854a8..d7015309614b 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -664,7 +664,8 @@ =20 coherent_pool=3Dnn[KMG] [ARM,KNL] Sets the size of memory pool for coherent, atomic dma - allocations. Otherwise the default size will be scaled + allocations. A value of 0 disables the three atomic + memory pool. Otherwise the default size will be scaled with memory capacity, while clamped between 128K and 1 << (PAGE_SHIFT + MAX_ORDER-1). =20 diff --git a/kernel/dma/pool.c b/kernel/dma/pool.c index 5f84e6cdb78e..5a85804b5beb 100644 --- a/kernel/dma/pool.c +++ b/kernel/dma/pool.c @@ -21,7 +21,7 @@ static struct gen_pool *atomic_pool_kernel __ro_after_ini= t; static unsigned long pool_size_kernel; =20 /* Size can be defined by the coherent_pool command line */ -static size_t atomic_pool_size; +static unsigned long atomic_pool_size =3D -1; =20 /* Dynamic background expansion when the atomic pool is near capacity */ static struct work_struct atomic_pool_work; @@ -188,11 +188,14 @@ static int __init dma_atomic_pool_init(void) { int ret =3D 0; =20 + if (!atomic_pool_size) + return 0; + /* * If coherent_pool was not used on the command line, default the pool * sizes to 128KB per 1GB of memory, min 128KB, max MAX_ORDER-1. */ - if (!atomic_pool_size) { + if (atomic_pool_size =3D=3D -1) { unsigned long pages =3D totalram_pages() / (SZ_1G / SZ_128K); pages =3D min_t(unsigned long, pages, MAX_ORDER_NR_PAGES); atomic_pool_size =3D max_t(size_t, pages << PAGE_SHIFT, SZ_128K); --=20 2.26.0