Message ID | 1513101746-18030-2-git-send-email-alexandre.torgue@st.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 12/12/17 18:02, Alexandre Torgue wrote: > On cortex-M7 MCU, DMA have to use a non cache-able memory area. For this > reason a dedicated memory pool is created for DMA. > This patch creates a DMA memory pool of 1MB of each STM32 MCU which > embeds a cortex-M7 expect stm32f746-disco. Indeed, as stm32f746-disco has ^^^^^^ except? > only a 8MB SDRAM and it's tricky to reduce memory used by Kernel. I guess that 1MB is a kind of "should be enough" estimate, probably something along with [1] would give you exact numbers... > > Signed-off-by: Alexandre Torgue <alexandre.torgue@st.com> > > diff --git a/arch/arm/boot/dts/stm32746g-eval.dts b/arch/arm/boot/dts/stm32746g-eval.dts > index 2d4e717..3f52a7b 100644 > --- a/arch/arm/boot/dts/stm32746g-eval.dts > +++ b/arch/arm/boot/dts/stm32746g-eval.dts > @@ -57,6 +57,19 @@ > reg = <0xc0000000 0x2000000>; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + linux,dma { > + compatible = "shared-dma-pool"; > + linux,dma-default; > + no-map; > + reg = <0xc1f00000 0x100000>; > + }; > + }; > + > aliases { > serial0 = &usart1; > }; > diff --git a/arch/arm/boot/dts/stm32f769-disco.dts b/arch/arm/boot/dts/stm32f769-disco.dts > index 4463ca1..08699a2 100644 > --- a/arch/arm/boot/dts/stm32f769-disco.dts > +++ b/arch/arm/boot/dts/stm32f769-disco.dts > @@ -57,6 +57,19 @@ > reg = <0xC0000000 0x1000000>; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + linux,dma { > + compatible = "shared-dma-pool"; > + linux,dma-default; > + no-map; > + reg = <0xc0f00000 0x100000>; > + }; > + }; > + > aliases { > serial0 = &usart1; > }; > diff --git a/arch/arm/boot/dts/stm32h743i-disco.dts b/arch/arm/boot/dts/stm32h743i-disco.dts > index 79e841d..104545a 100644 > --- a/arch/arm/boot/dts/stm32h743i-disco.dts > +++ b/arch/arm/boot/dts/stm32h743i-disco.dts > @@ -57,6 +57,19 @@ > reg = <0xd0000000 0x2000000>; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + linux,dma { > + compatible = "shared-dma-pool"; > + linux,dma-default; > + no-map; > + reg = <0xc1f00000 0x100000>; > + }; > + }; > + > aliases { > serial0 = &usart2; > }; > diff --git a/arch/arm/boot/dts/stm32h743i-eval.dts b/arch/arm/boot/dts/stm32h743i-eval.dts > index 9f0e72c..5bd4b16 100644 > --- a/arch/arm/boot/dts/stm32h743i-eval.dts > +++ b/arch/arm/boot/dts/stm32h743i-eval.dts > @@ -57,6 +57,19 @@ > reg = <0xd0000000 0x2000000>; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + linux,dma { > + compatible = "shared-dma-pool"; > + linux,dma-default; > + no-map; > + reg = <0xc1f00000 0x100000>; > + }; > + }; > + > aliases { > serial0 = &usart1; > }; > Usage of dma-default looks correct to me, so FWIW Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com> [1] https://lkml.org/lkml/2017/7/7/296 Vladimir
-----Original Message----- From: Vladimir Murzin [mailto:vladimir.murzin@arm.com] Sent: mercredi 13 décembre 2017 11:07 To: Alexandre TORGUE <alexandre.torgue@st.com>; Maxime Coquelin <mcoquelin.stm32@gmail.com>; arnd@arndb.de; robh+dt@kernel.org; mark.rutland@arm.com; linux@armlinux.org.uk; Patrice CHOTARD <patrice.chotard@st.com>; lee.jones@linaro.org Cc: devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 1/3] ARM: dts: stm32: add DMA memory pool on MCU which embed a cortex-M7 On 12/12/17 18:02, Alexandre Torgue wrote: > On cortex-M7 MCU, DMA have to use a non cache-able memory area. For > this reason a dedicated memory pool is created for DMA. > This patch creates a DMA memory pool of 1MB of each STM32 MCU which > embeds a cortex-M7 expect stm32f746-disco. Indeed, as stm32f746-disco > has ^^^^^^ except? Sorry, Is there a typo issue (or just wording issue) ? > only a 8MB SDRAM and it's tricky to reduce memory used by Kernel. I guess that 1MB is a kind of "should be enough" estimate, probably something along with [1] would give you exact numbers... Exactly, 1MB is a kind "should be enough" and code is here to show that we need a dedicated memory area for DMA. But this value has to be adapt regarding to use case needed by users. Thanks for the lkml link. It will help users to adapt DMA area and thanks for reviewing. Regards Alex > > Signed-off-by: Alexandre Torgue <alexandre.torgue@st.com> > > diff --git a/arch/arm/boot/dts/stm32746g-eval.dts > b/arch/arm/boot/dts/stm32746g-eval.dts > index 2d4e717..3f52a7b 100644 > --- a/arch/arm/boot/dts/stm32746g-eval.dts > +++ b/arch/arm/boot/dts/stm32746g-eval.dts > @@ -57,6 +57,19 @@ > reg = <0xc0000000 0x2000000>; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + linux,dma { > + compatible = "shared-dma-pool"; > + linux,dma-default; > + no-map; > + reg = <0xc1f00000 0x100000>; > + }; > + }; > + > aliases { > serial0 = &usart1; > }; > diff --git a/arch/arm/boot/dts/stm32f769-disco.dts > b/arch/arm/boot/dts/stm32f769-disco.dts > index 4463ca1..08699a2 100644 > --- a/arch/arm/boot/dts/stm32f769-disco.dts > +++ b/arch/arm/boot/dts/stm32f769-disco.dts > @@ -57,6 +57,19 @@ > reg = <0xC0000000 0x1000000>; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + linux,dma { > + compatible = "shared-dma-pool"; > + linux,dma-default; > + no-map; > + reg = <0xc0f00000 0x100000>; > + }; > + }; > + > aliases { > serial0 = &usart1; > }; > diff --git a/arch/arm/boot/dts/stm32h743i-disco.dts > b/arch/arm/boot/dts/stm32h743i-disco.dts > index 79e841d..104545a 100644 > --- a/arch/arm/boot/dts/stm32h743i-disco.dts > +++ b/arch/arm/boot/dts/stm32h743i-disco.dts > @@ -57,6 +57,19 @@ > reg = <0xd0000000 0x2000000>; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + linux,dma { > + compatible = "shared-dma-pool"; > + linux,dma-default; > + no-map; > + reg = <0xc1f00000 0x100000>; > + }; > + }; > + > aliases { > serial0 = &usart2; > }; > diff --git a/arch/arm/boot/dts/stm32h743i-eval.dts > b/arch/arm/boot/dts/stm32h743i-eval.dts > index 9f0e72c..5bd4b16 100644 > --- a/arch/arm/boot/dts/stm32h743i-eval.dts > +++ b/arch/arm/boot/dts/stm32h743i-eval.dts > @@ -57,6 +57,19 @@ > reg = <0xd0000000 0x2000000>; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + linux,dma { > + compatible = "shared-dma-pool"; > + linux,dma-default; > + no-map; > + reg = <0xc1f00000 0x100000>; > + }; > + }; > + > aliases { > serial0 = &usart1; > }; > Usage of dma-default looks correct to me, so FWIW Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com> [1] https://lkml.org/lkml/2017/7/7/296 Vladimir
-----Original Message----- From: Alexandre TORGUE Sent: mercredi 13 décembre 2017 11:28 To: 'Vladimir Murzin' <vladimir.murzin@arm.com>; Maxime Coquelin <mcoquelin.stm32@gmail.com>; arnd@arndb.de; robh+dt@kernel.org; mark.rutland@arm.com; linux@armlinux.org.uk; Patrice CHOTARD <patrice.chotard@st.com>; lee.jones@linaro.org Cc: devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org Subject: RE: [PATCH 1/3] ARM: dts: stm32: add DMA memory pool on MCU which embed a cortex-M7 -----Original Message----- From: Vladimir Murzin [mailto:vladimir.murzin@arm.com] Sent: mercredi 13 décembre 2017 11:07 To: Alexandre TORGUE <alexandre.torgue@st.com>; Maxime Coquelin <mcoquelin.stm32@gmail.com>; arnd@arndb.de; robh+dt@kernel.org; mark.rutland@arm.com; linux@armlinux.org.uk; Patrice CHOTARD <patrice.chotard@st.com>; lee.jones@linaro.org Cc: devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 1/3] ARM: dts: stm32: add DMA memory pool on MCU which embed a cortex-M7 On 12/12/17 18:02, Alexandre Torgue wrote: > On cortex-M7 MCU, DMA have to use a non cache-able memory area. For > this reason a dedicated memory pool is created for DMA. > This patch creates a DMA memory pool of 1MB of each STM32 MCU which > embeds a cortex-M7 expect stm32f746-disco. Indeed, as stm32f746-disco > has ^^^^^^ except? Sorry, Is there a typo issue (or just wording issue) ? Sorry I was not awake this morning. If no v2 I will fix this typo when I will apply patch on my tree. > only a 8MB SDRAM and it's tricky to reduce memory used by Kernel. I guess that 1MB is a kind of "should be enough" estimate, probably something along with [1] would give you exact numbers... Exactly, 1MB is a kind "should be enough" and code is here to show that we need a dedicated memory area for DMA. But this value has to be adapt regarding to use case needed by users. Thanks for the lkml link. It will help users to adapt DMA area and thanks for reviewing. Regards Alex > > Signed-off-by: Alexandre Torgue <alexandre.torgue@st.com> > > diff --git a/arch/arm/boot/dts/stm32746g-eval.dts > b/arch/arm/boot/dts/stm32746g-eval.dts > index 2d4e717..3f52a7b 100644 > --- a/arch/arm/boot/dts/stm32746g-eval.dts > +++ b/arch/arm/boot/dts/stm32746g-eval.dts > @@ -57,6 +57,19 @@ > reg = <0xc0000000 0x2000000>; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + linux,dma { > + compatible = "shared-dma-pool"; > + linux,dma-default; > + no-map; > + reg = <0xc1f00000 0x100000>; > + }; > + }; > + > aliases { > serial0 = &usart1; > }; > diff --git a/arch/arm/boot/dts/stm32f769-disco.dts > b/arch/arm/boot/dts/stm32f769-disco.dts > index 4463ca1..08699a2 100644 > --- a/arch/arm/boot/dts/stm32f769-disco.dts > +++ b/arch/arm/boot/dts/stm32f769-disco.dts > @@ -57,6 +57,19 @@ > reg = <0xC0000000 0x1000000>; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + linux,dma { > + compatible = "shared-dma-pool"; > + linux,dma-default; > + no-map; > + reg = <0xc0f00000 0x100000>; > + }; > + }; > + > aliases { > serial0 = &usart1; > }; > diff --git a/arch/arm/boot/dts/stm32h743i-disco.dts > b/arch/arm/boot/dts/stm32h743i-disco.dts > index 79e841d..104545a 100644 > --- a/arch/arm/boot/dts/stm32h743i-disco.dts > +++ b/arch/arm/boot/dts/stm32h743i-disco.dts > @@ -57,6 +57,19 @@ > reg = <0xd0000000 0x2000000>; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + linux,dma { > + compatible = "shared-dma-pool"; > + linux,dma-default; > + no-map; > + reg = <0xc1f00000 0x100000>; > + }; > + }; > + > aliases { > serial0 = &usart2; > }; > diff --git a/arch/arm/boot/dts/stm32h743i-eval.dts > b/arch/arm/boot/dts/stm32h743i-eval.dts > index 9f0e72c..5bd4b16 100644 > --- a/arch/arm/boot/dts/stm32h743i-eval.dts > +++ b/arch/arm/boot/dts/stm32h743i-eval.dts > @@ -57,6 +57,19 @@ > reg = <0xd0000000 0x2000000>; > }; > > + reserved-memory { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + linux,dma { > + compatible = "shared-dma-pool"; > + linux,dma-default; > + no-map; > + reg = <0xc1f00000 0x100000>; > + }; > + }; > + > aliases { > serial0 = &usart1; > }; > Usage of dma-default looks correct to me, so FWIW Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com> [1] https://lkml.org/lkml/2017/7/7/296 Vladimir
diff --git a/arch/arm/boot/dts/stm32746g-eval.dts b/arch/arm/boot/dts/stm32746g-eval.dts index 2d4e717..3f52a7b 100644 --- a/arch/arm/boot/dts/stm32746g-eval.dts +++ b/arch/arm/boot/dts/stm32746g-eval.dts @@ -57,6 +57,19 @@ reg = <0xc0000000 0x2000000>; }; + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + linux,dma { + compatible = "shared-dma-pool"; + linux,dma-default; + no-map; + reg = <0xc1f00000 0x100000>; + }; + }; + aliases { serial0 = &usart1; }; diff --git a/arch/arm/boot/dts/stm32f769-disco.dts b/arch/arm/boot/dts/stm32f769-disco.dts index 4463ca1..08699a2 100644 --- a/arch/arm/boot/dts/stm32f769-disco.dts +++ b/arch/arm/boot/dts/stm32f769-disco.dts @@ -57,6 +57,19 @@ reg = <0xC0000000 0x1000000>; }; + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + linux,dma { + compatible = "shared-dma-pool"; + linux,dma-default; + no-map; + reg = <0xc0f00000 0x100000>; + }; + }; + aliases { serial0 = &usart1; }; diff --git a/arch/arm/boot/dts/stm32h743i-disco.dts b/arch/arm/boot/dts/stm32h743i-disco.dts index 79e841d..104545a 100644 --- a/arch/arm/boot/dts/stm32h743i-disco.dts +++ b/arch/arm/boot/dts/stm32h743i-disco.dts @@ -57,6 +57,19 @@ reg = <0xd0000000 0x2000000>; }; + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + linux,dma { + compatible = "shared-dma-pool"; + linux,dma-default; + no-map; + reg = <0xc1f00000 0x100000>; + }; + }; + aliases { serial0 = &usart2; }; diff --git a/arch/arm/boot/dts/stm32h743i-eval.dts b/arch/arm/boot/dts/stm32h743i-eval.dts index 9f0e72c..5bd4b16 100644 --- a/arch/arm/boot/dts/stm32h743i-eval.dts +++ b/arch/arm/boot/dts/stm32h743i-eval.dts @@ -57,6 +57,19 @@ reg = <0xd0000000 0x2000000>; }; + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + linux,dma { + compatible = "shared-dma-pool"; + linux,dma-default; + no-map; + reg = <0xc1f00000 0x100000>; + }; + }; + aliases { serial0 = &usart1; };
On cortex-M7 MCU, DMA have to use a non cache-able memory area. For this reason a dedicated memory pool is created for DMA. This patch creates a DMA memory pool of 1MB of each STM32 MCU which embeds a cortex-M7 expect stm32f746-disco. Indeed, as stm32f746-disco has only a 8MB SDRAM and it's tricky to reduce memory used by Kernel. Signed-off-by: Alexandre Torgue <alexandre.torgue@st.com>