2014-10-05 13:54:49

by Akinobu Mita

[permalink] [raw]
Subject: [PATCH v2] cma: make default CMA area size zero for x86

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 <[email protected]>
Reported-by: Peter Hurley <[email protected]>
Cc: Peter Hurley <[email protected]>
Cc: Chuck Ebbert <[email protected]>
Cc: Jean Delvare <[email protected]>
Cc: Marek Szyprowski <[email protected]>
Cc: Konrad Rzeszutek Wilk <[email protected]>
Cc: David Woodhouse <[email protected]>
Cc: Don Dutile <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Yinghai Lu <[email protected]>
Cc: [email protected]
Cc: [email protected]
---
* 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


2014-10-06 10:04:38

by Marek Szyprowski

[permalink] [raw]
Subject: Re: [PATCH v2] cma: make default CMA area size zero for x86

Hello,

On 2014-10-05 15:54, Akinobu Mita wrote:
> 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 <[email protected]>
> Reported-by: Peter Hurley <[email protected]>
> Cc: Peter Hurley <[email protected]>
> Cc: Chuck Ebbert <[email protected]>
> Cc: Jean Delvare <[email protected]>
> Cc: Marek Szyprowski <[email protected]>
> Cc: Konrad Rzeszutek Wilk <[email protected]>
> Cc: David Woodhouse <[email protected]>
> Cc: Don Dutile <[email protected]>
> Cc: Thomas Gleixner <[email protected]>
> Cc: Ingo Molnar <[email protected]>
> Cc: "H. Peter Anvin" <[email protected]>
> Cc: Andi Kleen <[email protected]>
> Cc: Yinghai Lu <[email protected]>
> Cc: [email protected]
> Cc: [email protected]

Acked-by: Marek Szyprowski <[email protected]>

> ---
> * 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"

Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland