Re: [PATCH] ARM:mm: define arch-specific IOREMAP_MAX_ORDER only in !SMP && !LPAE case

From: Sergey Dyasly
Date: Wed Sep 09 2015 - 14:28:26 EST


On 09.09.2015 6:10, Nicolas Pitre wrote:
On Tue, 8 Sep 2015, Sergey Dyasly wrote:

On 08.09.2015 5:45, Zhang Zhen wrote:
The arch-specific IOREMAP_MAX_ORDER is introduced in
commit: ff0daca([ARM] Add section support to ioremap) and
commit: a069c89 ([ARM] 3705/1: add supersection support to ioremap()).
But supersections and sections mappings are only used in !SMP && !LPAE case.
Otherwise, mapping is created using the usual 4K pages.

In most cases without !SMP && !LPAE, the big alignment cause high
fragmentation
issue in vmalloc area.
Here we use arch-specific IOREMAP_MAX_ORDER only in !SMP && !LPAE case,
otherwise use generic IOREMAP_MAX_ORDER in include/linux/vmalloc.h.

Signed-off-by: Zhang Zhen <zhenzhang.zhang@xxxxxxxxxx>
---
arch/arm/include/asm/memory.h | 2 ++
1 file changed, 2 insertions(+)

diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h
index b7f6fb4..3209012 100644
--- a/arch/arm/include/asm/memory.h
+++ b/arch/arm/include/asm/memory.h
@@ -76,10 +76,12 @@
*/
#define XIP_VIRT_ADDR(physaddr) (MODULES_VADDR + ((physaddr) &
0x000fffff))

+#if !defined(CONFIG_SMP) && !defined(CONFIG_ARM_LPAE)
/*
* Allow 16MB-aligned ioremap pages
*/
#define IOREMAP_MAX_ORDER 24
+#endif

#else /* CONFIG_MMU */

Hmm... This looks exactly like my old patch -
http://thread.gmane.org/gmane.linux.kernel.mm/127620
(Thanks to Vladimir for pointing that out!)

Hasn't there been any progress about this issue?
IMHO the patch makes sense.

Did you send it to RMK's patch system?
Ok, submitted it to the patch system. Thanks!



Nicolas

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