Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[PATCH] cma: make default CMA area size zero for x86

131 views
Skip to first unread message

Akinobu Mita

unread,
Oct 5, 2014, 2:10:03 AM10/5/14
to
This makes CMA memory area size zero for x86 in default configuration
(doesn't change on the other architectures). If default CMA size is
zero, DMA_CMA is disabled. It can be enabled by passing cma= to the
kernel.

This makes less impact on x86. Because there is no mainline driver that
requires it for x86, and Peter Hurley reported the performance
regression, as this is trying to drive _all_ dma mapping allocations
through a _very_ small window.

Signed-off-by: Akinobu Mita <akinob...@gmail.com>
Reported-by: Peter Hurley <pe...@hurleysoftware.com>
Cc: Peter Hurley <pe...@hurleysoftware.com>
Cc: Chuck Ebbert <cebber...@gmail.com>
Cc: Marek Szyprowski <m.szyp...@samsung.com>
Cc: Konrad Rzeszutek Wilk <konra...@oracle.com>
Cc: David Woodhouse <dw...@infradead.org>
Cc: Don Dutile <ddu...@redhat.com>
Cc: Thomas Gleixner <tg...@linutronix.de>
Cc: Ingo Molnar <mi...@redhat.com>
Cc: "H. Peter Anvin" <h...@zytor.com>
Cc: Andi Kleen <an...@firstfloor.org>
Cc: Yinghai Lu <yin...@kernel.org>
Cc: x...@kernel.org
Cc: io...@lists.linux-foundation.org
---
drivers/base/Kconfig | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
index 4e7f0ff..92a5987e 100644
--- a/drivers/base/Kconfig
+++ b/drivers/base/Kconfig
@@ -240,6 +240,7 @@ comment "Default contiguous memory area size:"
config CMA_SIZE_MBYTES
int "Size in Mega Bytes"
depends on !CMA_SIZE_SEL_PERCENTAGE
+ default 0 if X86
default 16
help
Defines the size (in MiB) of the default memory area for Contiguous
@@ -248,6 +249,7 @@ config CMA_SIZE_MBYTES
config CMA_SIZE_PERCENTAGE
int "Percentage of total memory"
depends on !CMA_SIZE_SEL_MBYTES
+ default 0 if X86
default 10
help
Defines the size of the default memory area for Contiguous Memory
--
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Chuck Ebbert

unread,
Oct 5, 2014, 6:50:02 AM10/5/14
to
You probably need to add some documentation too. Jean Delvare proposed
the below, before your change. If the default is going to be zero on
x86, that information and some further help should be added to this.

------------------------

From: Jean Delvare <jdel...@suse.de>
Subject: [PATCH] CMA: Document cma=0

It isn't obvious that CMA can be disabled on the kernel's command
line, so document it.

Signed-off-by: Jean Delvare <jdel...@suse.de>
Cc: Joonsoo Kim <iamjoon...@lge.com>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
---
Documentation/kernel-parameters.txt | 3 ++-
drivers/base/Kconfig | 3 +++
2 files changed, 5 insertions(+), 1 deletion(-)

--- linux-3.17-rc7.orig/Documentation/kernel-parameters.txt 2014-09-23 13:19:06.644838292 +0200
+++ linux-3.17-rc7/Documentation/kernel-parameters.txt 2014-10-04 14:10:03.257579721 +0200
@@ -656,7 +656,8 @@ bytes respectively. Such letter suffixes
Sets the size of kernel global memory area for
contiguous memory allocations and optionally the
placement constraint by the physical address range of
- memory allocations. For more information, see
+ memory allocations. A value of 0 disables CMA
+ altogether. For more information, see
include/linux/dma-contiguous.h

cmo_free_hint= [PPC] Format: { yes | no }
--- linux-3.17-rc7.orig/drivers/base/Kconfig 2014-09-12 16:23:14.911353676 +0200
+++ linux-3.17-rc7/drivers/base/Kconfig 2014-10-04 13:41:37.672347240 +0200
@@ -231,6 +231,9 @@ config DMA_CMA
to allocate big physically-contiguous blocks of memory for use with
hardware components that do not support I/O map nor scatter-gather.

+ You can disable CMA by specifying "cma=0" on the kernel's command
+ line.
+
For more information see <include/linux/dma-contiguous.h>.
If unsure, say "n".

Akinobu Mita

unread,
Oct 5, 2014, 9:30:02 AM10/5/14
to
OK, I'll add information in help text for CONFIG_CMA_SIZE_MBYTES and
CONFIG_CMA_SIZE_PERCENTAGE.

Jean's patch adds information in CONFIG_DMA_CMA, so this change doesn't
conflict his patch.

Akinobu Mita

unread,
Oct 5, 2014, 10:00:03 AM10/5/14
to
This makes CMA memory area size zero for x86 in default configuration
(doesn't change on the other architectures). If default CMA size is
zero, DMA_CMA is disabled. It can be enabled by passing cma= to the
kernel.

This makes less impact on x86. Because there is no mainline driver that
requires it for x86, and Peter Hurley reported the performance
regression, as this is trying to drive _all_ dma mapping allocations
through a _very_ small window.

Signed-off-by: Akinobu Mita <akinob...@gmail.com>
Reported-by: Peter Hurley <pe...@hurleysoftware.com>
Cc: Peter Hurley <pe...@hurleysoftware.com>
Cc: Chuck Ebbert <cebber...@gmail.com>
Cc: Jean Delvare <jdel...@suse.de>
Cc: Marek Szyprowski <m.szyp...@samsung.com>
Cc: Konrad Rzeszutek Wilk <konra...@oracle.com>
Cc: David Woodhouse <dw...@infradead.org>
Cc: Don Dutile <ddu...@redhat.com>
Cc: Thomas Gleixner <tg...@linutronix.de>
Cc: Ingo Molnar <mi...@redhat.com>
Cc: "H. Peter Anvin" <h...@zytor.com>
Cc: Andi Kleen <an...@firstfloor.org>
Cc: Yinghai Lu <yin...@kernel.org>
Cc: x...@kernel.org
Cc: io...@lists.linux-foundation.org
---
* v2
- Add information in help text, suggested by Chuck Ebbert

drivers/base/Kconfig | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
index 4e7f0ff..115882f 100644
--- a/drivers/base/Kconfig
+++ b/drivers/base/Kconfig
@@ -240,18 +240,24 @@ comment "Default contiguous memory area size:"
config CMA_SIZE_MBYTES
int "Size in Mega Bytes"
depends on !CMA_SIZE_SEL_PERCENTAGE
+ default 0 if X86
default 16
help
Defines the size (in MiB) of the default memory area for Contiguous
- Memory Allocator.
+ Memory Allocator. If the size of 0 is selected, CMA is disabled by
+ default, but it can be enabled by passing cma=size[MG] to the kernel.
+

config CMA_SIZE_PERCENTAGE
int "Percentage of total memory"
depends on !CMA_SIZE_SEL_MBYTES
+ default 0 if X86
default 10
help
Defines the size of the default memory area for Contiguous Memory
Allocator as a percentage of the total memory in the system.
+ If 0 percent is selected, CMA is disabled by default, but it can be
+ enabled by passing cma=size[MG] to the kernel.

choice
prompt "Selected region size"
--
1.9.1

Marek Szyprowski

unread,
Oct 6, 2014, 6:10:04 AM10/6/14
to
Hello,
Acked-by: Marek Szyprowski <m.szyp...@samsung.com>
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
0 new messages