diff mbox

[v2,1/3] ARM: Make FORCE_MAX_ZONEORDER configurable if ARM_SINGLE_ARMV7M

Message ID 1441744686-20521-2-git-send-email-mcoquelin.stm32@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Maxime Coquelin Sept. 8, 2015, 8:38 p.m. UTC
This patch makes FORCE_MAX_ZONEORDER configurable in defconfig for ARMV7-M
when built for a single platform.

Suggested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Maxime Coquelin <mcoquelin.stm32@gmail.com>
---
 arch/arm/Kconfig | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Russell King - ARM Linux Sept. 8, 2015, 10:19 p.m. UTC | #1
On Tue, Sep 08, 2015 at 10:38:04PM +0200, Maxime Coquelin wrote:
> This patch makes FORCE_MAX_ZONEORDER configurable in defconfig for ARMV7-M
> when built for a single platform.

I'd prefer if we didn't do this, because this isn't supposed to be a user
visible "option".  It's an option that was introduced to avoid having to
throw masses of #ifdefs into the definition of MAX_ZONEORDER.

The problem with it is that it's a "well, what do I set this to?" option
and that leads to "oh, I'll just choose the default because I don't know
any better".

Do we know why EFM32 needs a value of 9 here?  It's not documented in
the original commit, and it really _should_ have been.
Uwe Kleine-König Sept. 9, 2015, 5:41 a.m. UTC | #2
On Tue, Sep 08, 2015 at 11:19:13PM +0100, Russell King - ARM Linux wrote:
> On Tue, Sep 08, 2015 at 10:38:04PM +0200, Maxime Coquelin wrote:
> > This patch makes FORCE_MAX_ZONEORDER configurable in defconfig for ARMV7-M
> > when built for a single platform.
> 
> I'd prefer if we didn't do this, because this isn't supposed to be a user
> visible "option".  It's an option that was introduced to avoid having to
> throw masses of #ifdefs into the definition of MAX_ZONEORDER.
> 
> The problem with it is that it's a "well, what do I set this to?" option
> and that leads to "oh, I'll just choose the default because I don't know
> any better".
> 
> Do we know why EFM32 needs a value of 9 here?  It's not documented in
> the original commit, and it really _should_ have been.
IIRC it was done because of memory pressure. But not sure this makes any
sense. I will try with the default value later today and report back.

Best regards
Uwe
Maxime Coquelin Sept. 9, 2015, 6:48 a.m. UTC | #3
2015-09-09 0:19 GMT+02:00 Russell King - ARM Linux <linux@arm.linux.org.uk>:
> On Tue, Sep 08, 2015 at 10:38:04PM +0200, Maxime Coquelin wrote:
>> This patch makes FORCE_MAX_ZONEORDER configurable in defconfig for ARMV7-M
>> when built for a single platform.
>
> I'd prefer if we didn't do this, because this isn't supposed to be a user
> visible "option".  It's an option that was introduced to avoid having to
> throw masses of #ifdefs into the definition of MAX_ZONEORDER.
>
> The problem with it is that it's a "well, what do I set this to?" option
> and that leads to "oh, I'll just choose the default because I don't know
> any better".
>
> Do we know why EFM32 needs a value of 9 here?  It's not documented in
> the original commit, and it really _should_ have been.
Ok, I get your point.

For STM32, the value 11 is working, but having value of 9 makes sense
in my opinion for systems with small quantity of memory (8MB in the
case of STM32F429 Discovery).
It saves some bytes in the .data section, and it might also save some
CPU cycles as there are less iterations and less split/coalescing of
pages...
Note that for CPU cycles I haven't done any measurements, this is just
my opinion after code review.

What drawbacks do you see of using a value of 9?

Thanks,
Maxime
Uwe Kleine-König Sept. 10, 2015, 7:53 a.m. UTC | #4
On Wed, Sep 09, 2015 at 07:41:25AM +0200, Uwe Kleine-König wrote:
> On Tue, Sep 08, 2015 at 11:19:13PM +0100, Russell King - ARM Linux wrote:
> > On Tue, Sep 08, 2015 at 10:38:04PM +0200, Maxime Coquelin wrote:
> > > This patch makes FORCE_MAX_ZONEORDER configurable in defconfig for ARMV7-M
> > > when built for a single platform.
> > 
> > I'd prefer if we didn't do this, because this isn't supposed to be a user
> > visible "option".  It's an option that was introduced to avoid having to
> > throw masses of #ifdefs into the definition of MAX_ZONEORDER.
> > 
> > The problem with it is that it's a "well, what do I set this to?" option
> > and that leads to "oh, I'll just choose the default because I don't know
> > any better".
> > 
> > Do we know why EFM32 needs a value of 9 here?  It's not documented in
> > the original commit, and it really _should_ have been.
> IIRC it was done because of memory pressure. But not sure this makes any
> sense. I will try with the default value later today and report back.
I updated my patch stack to 4.2 and the difference between 9 and 11 is:

Using 9:

	/ # free
		     total         used         free       shared      buffers
	Mem:          3744         1688         2056            0            0
	-/+ buffers:               1688         2056

vs. using 11:

	/ # free
		     total         used         free       shared      buffers
	Mem:          3744         1696         2048            0            0
	-/+ buffers:               1696         2048

so it works with bearable costs. If you want to get rid of the special
casing for efm32 that's fine for me.

Best regards
Uwe
diff mbox

Patch

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index a750c14..88937b9 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1731,10 +1731,10 @@  config ARM_MODULE_PLTS
 source "mm/Kconfig"
 
 config FORCE_MAX_ZONEORDER
-	int "Maximum zone order" if ARCH_SHMOBILE_LEGACY
+	int "Maximum zone order" if ARCH_SHMOBILE_LEGACY || ARM_SINGLE_ARMV7M
 	range 11 64 if ARCH_SHMOBILE_LEGACY
 	default "12" if SOC_AM33XX
-	default "9" if SA1111 || ARCH_EFM32
+	default "9" if SA1111
 	default "11"
 	help
 	  The kernel memory allocator divides physically contiguous memory